是的,我检查了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]
这也很好。
现在,我想让“古老而丑陋”的网址仍然存在,以便重定向到“好”的网址。
我尝试了以下内容:
Redirect 301 /comp_all.php?vid_mod=529 http://example.com/comparatif-voiture/Audi/A4/529
但这不起作用。它只显示“丑陋”的URL。
重写规则之前或之后是否放置了上述重定向并不重要。
答案 0 :(得分:1)
您不能在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:我还简化了您的其他规则。