是的,我检查了SO中发布的相关问题,但找不到对我有帮助的东西。
我的.htaccess已经有很多重定向,它们可以正常工作,但是这个让我很忙。
我有一个类似的网址:
http://example.com/comp_all.php?vid_mod=529
我改为一个更友好的:
http://example.com/comparatif-voiture/Audi/A4/529
为了做到这一点,我在.htaccess中添加了以下规则:
RewriteCond %{REQUEST_URI} ^/?comparatif-voiture [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ([0-9]+$) /comp_all.php?vid_mod=$1 [L]
而且效果很好。
现在,我想让“旧而丑陋的” URL仍然存在,以便重定向到“好”的URL。
我尝试了以下方法:
Redirect 301 /comp_all.php?vid_mod=529 http://example.com/comparatif-voiture/Audi/A4/529
但这不起作用。它只是显示“丑陋的” URL。
是否在重写规则之前或之后放置上述重定向都没有关系。
您不能在Redirect
指令中使用查询字符串。您需要RewriteCond
在mod_rewrite
这样的:
RewriteEngine On
RewriteCond %{THE_REQUEST} \s/+comp_all\.php\?vid_mod=([0-9]+) [NC]
RewriteRule ^ /comparatif-voiture/Audi/A4/%1? [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^comparatif-voiture/.+?/([0-9]+)/?$ /comp_all.php?vid_mod=$1 [L,QSA]
PS:我还简化了您的其他规则。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句