重定向URL(具有特定的GET参数)

时间:2009-02-24 21:34:05

标签: apache http redirect

我有这个旧的调查链接已被另一个链接取代,所以基本上我希望任何人都试图访问该网址:

http://mywebsite.com/survey/view_survey.php?surveyID=1

重定向到:

http://mywebsite.com/survey/view_survey.php?surveyID=2

我可以在Apache配置或htaccess文件中执行此操作吗?

我在httpd.conf文件的Redirect部分尝试了以下规则:

Redirect 301 /survey/view_survey.php?surveyID=1 http://mywebsite.com/survey/view_survey.php?surveyID=2

但它不起作用。我怀疑在处理规则时不使用GET参数。

我唯一的选择是破解我的代码以重定向特定的surveyID吗?


根据使用重写规则的建议,我在.htaccess文件中尝试了以下内容:

RewriteRule ^survey/view_survey\.php\?surveyID=1525$ /survey/view_survey.php?sur
veyID=1607

但这不起作用。我确实启动并运行了重写引擎,因为我目前正在运行另一个重写规则。

4 个答案:

答案 0 :(得分:8)

在.htaccess文件中尝试:

RewriteEngine on
RewriteCond %{QUERY_STRING} (^|.*&)surveyID=1525(&.*|$)
RewriteRule ^survey/view_survey\.php$ /survey/view_survey.php?%1surveyID=1607%2 [L,R=301]

答案 1 :(得分:1)

RewriteEngine On
RewriteCond %{QUERY_STRING} ^surveyID=1525$
RewriteRule ^/survey/view_survey\.php /survey/view_survey.php?surveyID=1607 [R=301]

答案 2 :(得分:0)

查看mod_rewrite的QSA部分。

它执行GET字符串操作。

答案 3 :(得分:0)

此问题可能存在重复,如果此解决方案不适合您,则会解决此问题:

Apache Redirect 301 fails when using GET parameters, such as ?blah=