.htaccess rewriterule和假目录

时间:2012-11-24 11:27:39

标签: php apache .htaccess mod-rewrite

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

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

目前我有: -

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

哪个效果很好,http://foo.com/random-url?foo=1&bar=2最终在/url_redirect.php上使用$ _GET ['page'] ='random-url'和$ _GET ['foo'] = 1等等。

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

可以使非现有的directoy成为一个真正的目录,然后从那里开始.htaccess但是必须有一个更方便的方式..我希望我不必硬编码任何目录名称(这是我目前的解决方案的工作方式)。

我认为这个问题可能与正则表达不对,它们总是让我失望。

1 个答案:

答案 0 :(得分: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