2009-02-24 71 views
3

我有一个已被取代由另一个链接这个古老的调查链接,所以基本上我希望任何人试图访问的网址:重定向的URL(具体GET参数)

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

重定向到:

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

我能做到这一点的Apache配置或htaccess文件?

我想在我的httpd.conf文件的重定向部分以下规则:

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 

但是,这并不工作。我确实已经启动并运行了重写引擎,因为我有另一个当前正在运行的重写规则。

+0

为了我自己的知识,为什么获取.htaccess文件比一行PHP更容易? – MrChrister 2009-02-24 22:43:36

回答

7

在.htaccess文件试试这个:

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

没有解决。我陷入了一个循环。 网址是/survey/view_survey.php?surveyID=1607&surveyID=1607(..重复了一堆倍)surveyID = 1525 火狐给我的错误: 重定向循环 的Firefox已经检测到服务器重定向以永不完成的方式请求此地址。 – rlorenzo 2009-02-24 22:21:01

0

查看mod_rewrite的QSA部分。

它做GET字符串操作。

+1

QSA在这里没有帮助,因为它的匹配模式是错误的 – Greg 2009-02-24 22:11:03

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