2015-04-02 86 views
2

我已经在其他地方做了很多阅读,但我仍然在努力实现这个新的htaccess重定向。我已经尝试了各种版本的重写,但无法使其正常工作。此外,仍然对我是否应该使用QSA感到困惑。301重定向 - 动态URL - 保持查询字符串

我想我的旧页面具有动态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] 

与此相关的,一些老的动态网址有&递减,而不是& sd在查询字符串的末尾,所以对于那些URL我想将& desc转换为$ sd

谢谢 - 尼克

+0

这应该做的伎俩:http://chilipepperdesign.com/2009/02/01/ htaccess的查询字符串-301S / – MrTechie 2015-04-02 05:40:54

回答

0

如果你只想重定向/olddir/地址/NEWDIR/,你需要使用一个重写规则:

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