Bonjour,
tout d'abord, désolé Mac pour le code. Je pensais l'avoir fait, faut croire que non.
Sinon j'ai creusé le problème. J'avance mais je suis bloqué un poil plus loin.
1 2 3 4 5 6 7 8
| RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_URI} ([^/]*\.php)
RewriteRule . /%1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php?q=%{DOCUMENT_ROOT}__%{REQUEST_FILENAME}__%{REQUEST_URI} [L] |
J'ai intercalé la condition et la "rule" en gras.
Elle signifie que si j'ai un fichier php dans mon URL, je redirige vers la racine.
La capture fonctionne puisqu'en faisant
RewriteRule . /index.php?q=%1
je vois bien écrit le fichier php trouvé.
Mais il y a un hic. J'ai une Internal Server Error. J'ai lu que cela pouvait venir du fait que ma règle fait boucler mon script et que par conséquent, Apache coupe tout.
Ce que j'ai cru comprendre aussi est que [L] ne voulait pas dire que le script s'arrêtait là véritablement (pas un exit PHP par analogie). Il semblerait qu'une fois qu'une règle est appliquée, l'ensemble du script est ré-exécuté (récursif donc) pour voir s'il n'y a pas d'erreur ou pire quelque chose de contraire à la sécurité.
Ceci pourrait expliquer que lors de la récursivité du script, je pars en boucle infinie et booom
A me relire, ca se tient.
Si par exemple mon url est toto/mapage.php, je redirige vers /mapage.php.
Lors du second passage, %{REQUEST_URI} vaut /mapage.php et donc est redirigé vers /mapage.php etc etc etc... boucle infinie.
Si quelqu'un, expert en URL RW par Apache, peut me conseiller il m'ôterait une aiguille à tricoter du pied
merci
Bonne soirée
Partager