【问题标题】:.htaccess rewriterule and fake directories.htaccess rewriterule 和假目录
【发布时间】:2012-11-24 11:27:39
【问题描述】:

我正在尝试使用 Apache 和 PHP 进行一些 URL 重写。这是出于 SEO 原因,因此 foo.com/product-category/product-title 变为 foo.com/product.php?id=999。我当然希望 URL 保持不变并成为 SEO 友好的版本。

我有一个当前的网站,它有一个工作设置,但它更像是一个 hack,而不是一个可维护的解决方案,所以我正在努力做正确的事情!

目前我有:-

RewriteRule ^([a-zA-Z0-9_\ \-\%]+)/?($) /url_redirect.php?page=$1 [QSA,L]

效果很好,http://foo.com/random-url?foo=1&bar=2 以 $_GET['page'] = 'random-url' 和 $_GET['foo'] = 1 等结束于 /url_redirect.php。

如果你更深一层,我希望同样的事情发生 (例如http://foo.com/non-existing-directory/random-url?foo=1&bar=2

可以使不存在的目录成为真正的目录,然后从那里 .htaccess 但必须有一种更简单的方法。我希望我不必对任何目录名称进行硬编码(这就是我目前的解决方案的工作原理)。

我认为问题可能是正则表达式不正确,他们总是打败我。

【问题讨论】:

    标签: php apache .htaccess mod-rewrite


    【解决方案1】:

    我只是尝试过这个,但可能不是实现它的最佳方法(我不是重写大师)

    RewriteEngine On
    RewriteRule ^([a-zA-Z0-9_\ \-\%]+)/([a-zA-Z0-9_\ \-\%]+)?($) url_redirect.php?page=$2 [QSA,L]
    RewriteRule ^([a-zA-Z0-9_\ \-\%]+)/?($) url_redirect.php?page=$1 [QSA,L]
    

    对不起,这是我的本地设置,我认为你会想要它!

    RewriteEngine On
    RewriteRule ^([a-zA-Z0-9_\ \-\%]+)/([a-zA-Z0-9_\ \-\%]+)?($) /url_redirect.php?page=$2 [QSA,L]
    RewriteRule ^([a-zA-Z0-9_\ \-\%]+)/?($) /url_redirect.php?page=$1 [QSA,L]
    

    注意 url_redirect.php 之前的 /

    【讨论】:

    • 是的,这非常有效!你把我从一个讨厌的符号链接 php 黑客工作中救了出来!,我想我可以用另一个 /([a-zA-Z0-9_\ \-\%]+) 更深一层,但我看不到我想要深入了解 .htaccess inception
    • 你可以是的,但除了添加额外的 /([a-zA-Z0-9_\ \-\%]+) 你还将最后一位更改为 page=$3 (从 page=$2 )
    • 我自己解决了所有问题并让它工作了..不是我想使用它,但有选择是件好事。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-22
    • 2015-07-20
    • 1970-01-01
    • 2014-07-08
    • 2017-01-16
    • 1970-01-01
    相关资源
    最近更新 更多