htaccess mode maintenance

Par kamelzagger, il y a 8 ans


Bonjour à tous,

Je suis actuellement en train de paramétrer le fichier htaccess de mon site.

Celui-ci prend en compte :

La suppression des extensions

RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME}\.php -f RewriteRule ^(.*)$ $1.php

et langue

RewriteRule ^(fr|en|de)/(.*)$ $2?lang=$1 [L,QSA] RewriteRule ^(fr|en|de)/$ index?lang=$1 [L,QSA]

Cette partie fonctionne bien. Je suis bien redirigé avec la langue et sans l'extension.

Par contre c'es la suite qui me pose probleme. Je souhaite activer un mode maintenance pendant la mise en ligne des fichiers ftp.

J'ai trouver ceci sur internet :

Options +FollowSymlinks RewriteEngine on RewriteCond %{REQUEST_URI} !/maintenance.html$ RewriteCond %{REMOTE_HOST} !^888\.888\.888\.888 RewriteRule $ /maintenance.html [R=302,L]

Je l'ai donc ajouté a mon htaccess, voici mon htacces complet :

Options +FollowSymlinks ErrorDocument 404 http://localhost:8888/1girl/1girl.ch/404 RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME}\.php -f RewriteRule ^(.*)$ $1.php RewriteRule ^(fr|en|de)/(.*)$ $2?lang=$1 [L,QSA] RewriteRule ^(fr|en|de)/$ index?lang=$1 [L,QSA] RewriteCond %{REQUEST_URI} !/fr/standby$ RewriteRule $ http://localhost:8888/1girl/1girl.ch/fr/standby [R=302,L]

Mais la redirection sur ma page maintenance (Ici appelé standby) ne fonctionne pas. Mon navigateur me retourne ceci :

http://localhost:8888/1girl/1girl.ch/fr/standby?lang=fr&lang=fr&lang=fr&lang=fr&lang=fr&lang=fr&lang=fr&lang=fr&lang=fr&lang=fr&lang=fr&lang=fr&lang=fr&lang=fr&lang=fr&lang=fr&lang=fr&lang=de

Bizarre non ? Le début de l'URL est correct, mais c'est la suite qui est étrange...

J'ai fait plusieurs test mais sans succès. Vous auriez une idée ?

2 réponses

Huggy, il y a 8 ans

Bonjour kamelzagger,

Je pense que c'est la redirection 302 qui boucle
il te faut une condition pour lui dire d'arréter, la tienne ne fonctionne pas
celle-ci fonctionne :

RewriteCond %{REQUEST_URI} !standby RewriteRule $ http://localhost:8888/1girl/1girl.ch/fr/standby [R=302,L]

la ligne RewriteRule doit suivre la ligne RewriteCond
Penses aussi au RewriteBase pour éviter de trainer 1girl/1girl..
Si tu as d'autres pb penses à logger la réécriture en ajoutant dans ton httpd.conf

LogLevel debug rewrite:trace8

il suffit ensuite de regarder les logs d'Apache ... et prendre un cachet d'aspirine !!!

kamelzagger, il y a 7 ans

Oups j'ai oublié de te répondre et de mettre le sujet en résolu !

Je te remercie beaucoup ça fonctionne très bien maintenant :)

A+