使用.htaccess将带参数的URL重定向到带参数的URL

时间:2014-02-07 20:29:57

标签: apache .htaccess mod-rewrite redirect

我一直在谷歌搜索一段时间试图找出如何重定向以下网址:

http://mysite.org/old-folder/?abc=1144

到新网址:

http://mysite.org/new/folders/?xyz=1144

数字1144是动态的。

我已经达到了这个目标,但似乎无法让它发挥作用:

RewriteRule ^old-folder/\?abc=([0-9]+)(/)?$ new/folders/\?xyz=$1 [R=301]

2 个答案:

答案 0 :(得分:1)

经过一些研究后,我想出了这个:

RewriteCond %{QUERY_STRING} ^abc=([0-9]+)$
RewriteRule ^old-folder new/folders/?xyz=%1 [L,R=301]

如果其他人在将来遇到这个问题,它只会匹配数字'abc'的值。如果您希望它匹配任何内容,请将第一行替换为:

RewriteCond %{QUERY_STRING} ^abc=(.*)$

有关标志[L,R = 301]的说明,请参阅apache文档: http://httpd.apache.org/docs/current/rewrite/flags.html

答案 1 :(得分:0)

您无法匹配RewriteRule中的查询字符串。

DOCUMENT_ROOT/.htaccess文件中尝试此规则:

RewriteEngine On
RewriteBase /

RewriteCond %{QUERY_STRING} (?:^|&)abc=([^&]*) [NC]
RewriteRule ^old-folder/$ new/folders/?xyz=%1 [L,NC]