Перенаправление URL-адресов (с определенными параметрами GET)

У меня есть эта старая ссылка на опрос, которая была заменена другой ссылкой, поэтому в основном я хочу, чтобы кто-нибудь пытался получить доступ к URL-адресу:

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

Для перенаправления на:

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

Могу ли я сделать это в конфигурации Apache или файле htaccess?

Я попробовал следующее правило в разделе Redirect моего файла httpd.conf:

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

Но это не работает. Я подозреваю, что параметры GET не используются при обработке правила.

Единственный ли у меня вариант - взломать код для перенаправления на определенный идентификатор опроса?


Следуя предложению использовать правила перезаписи, я попробовал следующее в моем файле .htaccess:

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

Но это не работает. У меня действительно есть движок перезаписи, потому что у меня в настоящее время работает другое правило перезаписи.

Ответов (4)

Решение

Попробуйте это в файле .htaccess:

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

Ознакомьтесь с QSA-частью файла mod_rewrite.

Он выполняет манипуляции со строкой GET.

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

Возможно, существует дубликат этого вопроса, и он будет решен, если это решение не сработает для вас:

Apache Redirect 301 не работает при использовании параметров GET, таких как? Blah =