2009-02-24 104 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]