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
Réponse acceptée

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 !!!

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+