2009-02-24 8 views
3

Je possède ce vieux lien d'enquête qui a été remplacé par un autre lien, donc en gros je veux quelqu'un tente d'accéder à l'URL:URL Rediriger (avec des paramètres spécifiques GET)

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

Pour être redirigés vers :

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

Puis-je faire cela dans la configuration Apache ou d'un fichier htaccess?

J'ai essayé la règle suivante dans la section Redirect de mon fichier httpd.conf:

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

Mais il ne fonctionne pas. Je soupçonne que les paramètres GET ne sont pas utilisés lors du traitement de la règle.

Est-ce que ma seule option est de pirater mon code pour le rediriger sur un surveyID spécifique?


Suite à la suggestion d'utiliser les règles de réécriture, j'ai essayé ce qui suit dans mon fichier .htaccess:

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

Mais cela ne fonctionne pas. Le moteur de réécriture est opérationnel, car une autre règle de réécriture est en cours d'exécution.

+0

Pour ma propre connaissance, pourquoi obtenir le fichier .htaccess plus facile qu'une ligne de php? – MrChrister

Répondre

7

Essayez ceci dans un fichier .htaccess:

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

N'a pas fonctionné. Je suis dans une boucle. URL était /survey/view_survey.php?surveyID=1607&surveyID=1607 (.. répété un certain nombre de fois) et surveyID = 1525 FireFox m'a donné l'erreur: Redirect boucle Firefox a détecté que le serveur redirige la demande pour cette adresse d'une manière qui ne sera jamais complète. – rlorenzo

+0

Il semble que l'indicateur QSA provoque ce comportement. – Gumbo

0

Vérifiez la partie QSA du mod_rewrite.

GET manipulation de chaîne.

+1

QSA ne va pas aider ici parce que c'est le motif de correspondance qui ne va pas – Greg

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