301重定向 - 动态网址 - 保留查询字符串

时间:2015-04-02 05:30:27

标签: php regex .htaccess mod-rewrite redirect

我在其他地方已经做了很多阅读,但我仍然在努力实现这个新的htaccess重定向。我已经尝试了各种版本的重写,但无法让它工作。此外,仍然对我是否应该使用QSA感到困惑。

我希望我的旧页面具有动态网址,可以重定向到我设置的新目录/页面。问题是,我不想为我所拥有的所有州和国家写一个条目。我想保留现有的查询字符串。

我正试图从:

http://example.com/olddir/detailsbyst.php?country=____&state=__&sd=____ 
http://example.com/NEWDIR/detailsbyst.php?country=____&state=__&sd=____

我试过的最后一个版本就是这个

RewriteCond %{HTTP_HOST} ^example\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.example\.com$
RewriteCond %{QUERY_STRING} ^country=([A-Z­a-z­0-9­-]+)$ [NC]
RewriteCond %{QUERY_STRING} ^state=([A-Z­a-z­0-9­-]+)$ [NC]
RewriteCond %{QUERY_STRING} ^sd=([A-Z­a-z­0-9­-]+)$ [NC]
RewriteRule ^olddir/detailsbyst\.php$ http://example.com/newdir/detailsbyst.php [NC,QSA,L,R=301]

在相关的说明中,一些旧的动态网址在查询字符串的末尾有& desc而不是& sd,所以对于那些网址,我想将& desc转换为$ sd

谢谢 - 尼克

1 个答案:

答案 0 :(得分:0)

如果您只想将/olddir/地址重定向到/NEWDIR/,则需要使用一个RewriteRule:

RewriteRule ^olddir(.*)$ /NEWDIR$1 [NC, L,R=301]