[résolu] url rewriting sur dédié OVH

yann214

WRInaute occasionnel
Salut,

En passant d'un mutualisé ovh à un dédié ovh, mon urlrewriting ne marche plus.

RewriteEngine on
RewriteRule ^(.+)/$ list.php?lng=$1 [QSA,L]

Si je tape l'adresse http://www.mondomaine.com/fr/ alors j'obtient une page 403 Forbidden (You don't have permission to access /fr/) au lieu de me renvoyer vers le fichier list.php

Que se passe-t-il et comment résoudre le problème ?

J'ai essayé de mettre des / avant le "^" ou le "list.php"... d'ajouter un RewriteBase... rien n'y fait.

J'ai aussi constaté une chose, le répertoire image existant, l'url rewriting marche mais bizarrement car :

* si je tape http://www.mondomaine.com/images/ je récupère la fin du mot images : "ges" dans ma variable lng
* si je tape http://www.mondomaine.com/classes/ je récupère la fin du mot classes : "sses" dans ma variable lng


Merci !
 

dmathieu

WRInaute accro
Il faut activer l'url rewriting dans ta configuration apache.
Code:
LoadModule rewrite_module     /usr/lib/apache/mod_rewrite.so
Dans ta config apache.
 

yann214

WRInaute occasionnel
l'url rewriting est déjà activé j'ai vérifié...
le mod_rewrite est bien là dans mon fichier d'info php.

si je fais :

RewriteRule ^index.html$ index.php?qstring=$1 [QSA,L]

Ca marche !

si je fais :

Code:
RewriteRule ^/(.+)/index.html$ index.php?qstring=$1 [QSA,L]

Ca marche plus
En fait dès qu'il y a un sous-repertoire ça semble ne plus fonctionner, comme si la recherche du répertoire (qui n'existe pas donc erreur 403) prenait le pas sur l'url rewriting...
 

yann214

WRInaute occasionnel
j'ai essayé ces 2 options et rien à faire.
Je reste bloqué car je n'arrive pas à trouver de logique au fonctionnement actuel du rewriting sur mon serveur...
 

yann214

WRInaute occasionnel
en fait ça ne marche plus dès que je veux accéder à un sous-répertoire qui n'existe pas... Il ne fait pas de rewriting mais cherche absolument à accéder au sous-répertoire indiqué dans l'url...

si par exemple je tape

Code:
RewriteRule ^/fr/index.html$ index.php?qstring=$1 [L]

et bien mon l'url suivante n'est pas rewritée :

Code:
http://www.domaine.com/fr/index.html

j'ai juste le forbidden suivant :

Code:
You don't have permission to access /fr/index.html on this server.
 

RomsIW

WRInaute passionné
yann214 a dit:
en fait ça ne marche plus dès que je veux accéder à un sous-répertoire qui n'existe pas... Il ne fait pas de rewriting mais cherche absolument à accéder au sous-répertoire indiqué dans l'url...

ok essaie avec

Code:
RewriteRule ^(.*)/index.html$ /index.php?qstring=$1 [NC,L]
 

RomsIW

WRInaute passionné
donc le problème vient d'ailleurs.

pense à rebooter ton serveur après avoir fait les bonnes modifs dans le httpd mais le pb ne vient pas de là sinon tu aurais une erreur 500

ça me semble bizarre quand même tout ça.

Tu peux nous montrer l'URL que tu rentres dans ton navigateur pour voir ?

Et les 5 premières lignes de ton .htaccess complet ?
 

yann214

WRInaute occasionnel
mon .htaccess est tous simplement :

Code:
RewriteEngine on
Options +FollowSymlinks
RewriteRule ^(.*)/index.html$ index.php?qstring=$1 [NC,L]

et l'url que j'entre :

Code:
http://www.mondomaine.com/fr/index.html

Ca parait tellement simple comme exemple...
 

RomsIW

WRInaute passionné
yann214 a dit:
mon .htaccess est tous simplement :

Code:
RewriteEngine on
Options +FollowSymlinks
RewriteRule ^(.*)/index.html$ index.php?qstring=$1 [NC,L]

et l'url que j'entre :

Code:
http://www.mondomaine.com/fr/index.html

Ca parait tellement simple comme exemple...

as tu essayé avec le slashe (/) devant index.php?qstring=$1 ? sinon il va pas chercher à la racine mais dans le répertoire fr/
 

yann214

WRInaute occasionnel
Oui, mais dans l'erreur 403, il ne me dit pas qu'il ne trouve pas le index.php, mais le /fr/index.html...

le rewriting marche bien parce que si je fais

Code:
RewriteRule ^index.html$ index.php [L]

Je fins bien sur index.php en tapant

Code:
http://www.mondomaine.com/index.html
 

RomsIW

WRInaute passionné
ça ne me dit pas si tu as essayé avec ce slashe qui est très important.

car ton exemple de base ne nécessite pas de changement de répertoire, tout est à la racine

à partir du moment ou tu fais fr/qqchose.html tu simules un répertoire, le slashe sert à resituer le tout par rapport à la racine
 

yann214

WRInaute occasionnel
oui oui j'ai essayé.
Par exemple :

Code:
RewriteRule ^fr/index.html$ /index.php [L]

ne fonctionne pas (403) quand je tape :

Code:
http://www.mondomaine.com/fr/index.html
 

dcz

WRInaute impliqué
yann214 a dit:
oui oui j'ai essayé.
Par exemple :

Code:
RewriteRule ^fr/index.html$ /index.php [L]

ne fonctionne pas (403) quand je tape :

Code:
http://www.mondomaine.com/fr/index.html

C'est normal en même temps :

Code:
RewriteRule ^fr/index.html$ /fr/index.php [L]

c'est mieux ;)

Et dans le .htaccess de la racine et avec un bon rewritebase / aussi

Enfin, si fr est un dossier.

Si non Options +FollowSymlinks, tu as essayé ?

++
 

yann214

WRInaute occasionnel
Ca y est, Diablotin (des forum d'OVH) m'a aidé à trouver la solution.

Donc le problème vient bien de la configuration d'Apache :

il faut éditer le fichier httpd.conf, puis localiser la zone comprenant les options du directory /, de la forme :

Code:
<Directory />
Options Includes ExecCGI FollowSymLinks Indexes
AllowOverride All
</Directory>

et là il faut ajouter l'option -Multiviews pour avoir :

Code:
<Directory />
Options Includes ExecCGI -Multiviews FollowSymLinks Indexes
AllowOverride All
</Directory>

De cette manière, Apache ne va plus chercher le contenu des répertoires spécifiés dans l'URL (et qui n'existent pas) et renvoyer l'erreur AVANT d'appliquer les règles RewriteRule.

Attention cependant, si cette option existe dans la liste du directory /, le fait de la supprimer ne change rien, il faut la laisser avec le tiret devant pour que ça fonctionne.

Merci encore à Diablotin !!
Et merci également à tous ceux qui m'ont aider ici à chercher une solution au problème !!
 

guilhem_mdg

Nouveau WRInaute
Juste pour dire que :
Code:
Options Includes ExecCGI Multiviews FollowSymLinks Indexes
est mis par défaut et qu'il doit être remplacé (semble-t-il) par :
Code:
Options Includes ExecCGI -Multiviews FollowSymLinks Indexes
 

Maximus32

Nouveau WRInaute
Peut être mais elle vient de m'enlever une grosse épine du pied, je commençais à tourner un peu en rond avec mon htaccess... :wink:
 

Discussions similaires

Haut