2 votes

htaccess rewrite fonctionne hors ligne sur WAMP mais pas en ligne sur l'hôte linux

Je vais juste expliquer mon problème ici :

http://mysite.com/movie/20000

doit être réécrit en

http://mysite.com/movie.php?id=20000

mon fichier htaccess :

Options +FollowSymlinks
RewriteEngine On
RewriteRule ^movie/([0-9]+)$ movie.php?id=$1

Sur mon installation WAMP sur mon hôte local, cela fonctionne bien, mais lorsque je la mets en ligne sur mon hôte linux, cela ne fonctionne pas complètement. Il va bien à la page movie.php, mais il semble qu'il ne donne pas de paramètre GET id.

Edit :

si j'utilise

Options +FollowSymlinks
RewriteEngine On
RewriteRule ^movie([0-9]+)$ movie.php?id=$1

puis

http://mysite.com/movie20000

Cela mène à la bonne page, mais j'aimerais que /movie/20000 et pas seulement /movie20000

Il semble également que mon hôte réécrive automatiquement une visite vers mysite.com/movie à mysite.com/movie.php

3voto

Anonymous Points 534

Après avoir cherché pendant longtemps et arraché certains de mes beaux cheveux, j'ai trouvé la solution.

Je viens d'ajouter

Options -MultiViews

à mon fichier htaccess et cela a réglé le problème.

Pourquoi ? Parce que .php était ajouté aux urls sans extension, ce dont je n'avais vraiment pas besoin.

0voto

Ray Points 12928

Cela devrait fonctionner.

RewriteRule ^movie/([0-9]+)$ http://mysite.com/movie.php?id=$1 [NC,L]

N'oubliez pas le [NC, L] qui signifie "insensible à la casse", dernière règle... Si vous ne le faites pas, il continuera à traiter vos règles htaccess, en déclenchant peut-être d'autres règles.

Néanmoins, ce qui suit est un bon conseil.... :)

Vérifiez si le module Rewrite se charge avec apache. Recherchez cette ligne dans le fichier httpd.conf :

LoadModule rewrite_module modules/mod_rewrite.so

Vérifiez si votre configuration Apache autorise les fichiers .htaccess pour votre système ou dans la définition de l'hôte virtuel.

De plus, testez avec un rewrite catch all plus simple et testez-le seul pour voir si cela fonctionne comme ça (débarrassez-vous de tout le reste dans votre fichier htaccess pour limiter le test) :

RewriteEngine On
RewriteRule ^(.*)$ http://www.google.com [L,R=301]

Toute requête vers votre site devrait aller vers google si la configuration d'apache est correcte.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X