我正在尝试使用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但是必须有一个更方便的方式..我希望我不必硬编码任何目录名称(这是我目前的解决方案的工作方式)。
我认为这个问题可能与正则表达不对,它们总是让我失望。
答案 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