Jan Posté 14 Avril 2005 Posté 14 Avril 2005 Bonjour, Je cherche à coder ceci dans le .htaccess si (ip = 111.111.xxx.xxx) ou (ip = 222.222.xxx.xxx)redirection temporaire (302) de page1.php vers www.site2.com/page2.phpsinonredirection permanente (301) de page1.php vers www.site2.com/page2.phpxxx indique qu'il s'agit d'un range d'ip Merci d'avance
Siddartha Posté 14 Avril 2005 Posté 14 Avril 2005 RewriteEngine onRewriteCond %{REMOTE_ADDR}RewriteRule ^/page1.php$ http://www.site2.com/page2.php [R=301,L]RewriteCond %{REMOTE_ADDR}RewriteRule ^/page1.php http://www.site2.com/page2.php [R=302,L] La seule partie dont je suis pas complètement sur et qui dépend de ton hébergeur est celle correspondant au : ^/page1.php$ Cela peut aussi devoir s'écrire selon ta config : /page1.php page1.php ^(.*)page1.php$ Essaye de tester en attendant le roi de l'url rewriting, j'ai nommé Dan !, qui devrait corriger mon code (ceci dit, ce type de code peut aussi être réalisé en php )
Jan Posté 14 Avril 2005 Auteur Posté 14 Avril 2005 Ok, merci Pour tester mes 2 ranges d'IP j'ai un doute. Ce code est-il le bon pour la partie "302"? RewriteEngine onRewriteCond %{REMOTE_ADDR} ^111\.111\.* [OR]RewriteCond %{REMOTE_ADDR} ^222\.222\.*RewriteRule ^/page1.php$ http://www.site2.com/page2.php [R=302,L] Ensuite pour faire la 301 si ce n'est pas un de ces 2 ranges d'IP, peut-on écrire une condition "else" dans .htaccess? Sinon comment le coder pour que la 301 ne se fasse que si l'ip n'appartient pas à mes 2 ranges d'ips?
Dan Posté 15 Avril 2005 Posté 15 Avril 2005 Salut Jan, Je ne pense pas que le caractère * soit accepté dans l'écriture de la condition. Essaies avec : RewriteEngine onRewriteCond %{REMOTE_ADDR} ^111\.111\.[0-9]+\.[0-9]+ [OR]RewriteCond %{REMOTE_ADDR} ^222\.222\.[0-9]+\.[0-9]+ RewriteRule ^/page1.php$ http://www.site2.com/page2.php [R,L]RewriteRule ^/page1.php$ http://www.site2.com/page2.php [R=301,L] La première Règle sera exécutée si l'une des conditions est remplie, et le flag L forcera l'arrêt des rêgles. Le R=302 n'est pas nécessaire, vu que R envoie une entête 302 par défaut. La seconde règle ne sera interprétée que si la première ne l'est pas.. et tu auras donc une entête 301. Dan
Jan Posté 15 Avril 2005 Auteur Posté 15 Avril 2005 Je viens de tester ta solution Dan, ça marche parfaitement à condition que j'enlève le / devant page1.php. Sans doute une config tordue de mon serveur. Merci Pour information serait il possible de faire cette redirection conditionnelle en utilisant un RedirectPermanent et un RedirectTemp?
Dan Posté 17 Avril 2005 Posté 17 Avril 2005 Salut Jan, le / à mettre ou non devant page.php dépend surtout de l'endroit où se trouve le fichier .htaccess. Il faut l'enlever si ce fichier n'est pas à la racine. L'utilisation de RedirectPermanent et Redirect (ou RedirectTemp) ne pourra pas se faire dans le cas d'utilisation de RewriteCond. Mais les R=301 étant totalement équivalents sur le plan des entêtes, le RedirectPermanent n'apporte rien de plus.
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant