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


301 redirect - Dynamic urls - Keep query strings

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

我希望我的旧页面具有动态url重定向到我设置的新目录/页面。问题是,我不想为我所有的州和国家写一篇文章。我想保留正在退出的查询字符串。

我正试图从:

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]

与此相关的是,一些旧的动态url具有&desc而不是&sd在查询字符串的末尾,所以对于那些url,我想将&desc到$sd

谢谢-Nick

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

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