Version complète: sur le forum Webmaster Hub : .htaccess ne fonctionne pas sur OVH
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > Fichier .htaccess et réécriture d'URLs
e.MiLoU
Bonjour à tous,

J'ai une fois pris un hébergement chez OVH dont je n'étais pas du tout content et j'ai donc changé d'hébergeur. Mais malheureusement, je suis actuellement sur un projet qui est hébergé sur OVH... Et j'ai donc des problèmes (on devrait trouver une rime d'ailleurs). Ca c'est pour la petite histoire.

Mon problème est donc que mon .htaccess qui fonctionne parfaitement en local, ne fonctionne pas du tout en ligne. Je mets donc je code

CODE
RewriteEngine On

RewriteRule ^membres/([0-9]+)/(.+)$         membres_details.php?id=$1 [L]
RewriteRule ^activites/([0-9]+)/(.+)$        activites.php?comite=$1 [L]
RewriteRule ^articles/([0-9]+)/([0-9]+)/(.+)$ activites.php?comite=$1&article=$2 [L]
RewriteRule ^forum/forum/([0-9]+)-(.+)$ forum_forum.php?forum=$1 [L]
RewriteRule ^forum/sujet/([0-9]+)-(.+)$ forum_sujet.php?sujet=$1 [L]
RewriteRule ^forum/categorie/([0-9]+)-(.+)$ forum_categorie.php?categorie=$1 [L]

RewriteRule ^(.+)/$ $1.php [QSA,L]


Je suppose que j'ai oublié quelque chose, mais quoi??

Les problèmes rencontrés sont: par exemple pour la page activité, il ne me passe pas les variables en get (mon tableau $_GET est vide) et également le dernier Rewrite ne fonctionne pas; il me dit que pour une page exemple/ la page exemple.php.php n'existe pas...

Si quelqu'un voit ce qui cloche. Merci d'avance.

e.MiLoU
Dan
Pour les hébergements mutualisés OVh, il faut faire précéder le second argument des règles par / tongue.gif

Par exemple:
CODE
RewriteRule membres/([0-9]+)/(.+)$         /membres_details.php?id=$1 [L]
KaRaK
Bonsoir,

Je pense qu'il faut que tu rajoutes un slash comme cela est expliqué ici :

http://guides.ovh.com/HtaccessModRewrite
e.MiLoU
J'ai déjà essayer toutes les possibilités possibles et inimaginables pour l'url rewriting.

Mon site se trouve a l'adresse http://www.monsite.com/whynotbeta/index.php

J'ai essayé en mettant /www/whynotbeta/ ou /whynotbeta/ et ça ne donne rien du tout.

En plus, au vu des erreurs, on dirait que le serveur ne comprend tout simplement rien...
Dan
Enlève aussi le ^ du premier argument... parce que si le serveur sert /membres... ^membres ne passera pas la règle.

Tu peux essayer ceci:
CODE
RewriteRule /?membres/([0-9]+)/(.+)$         /membres_details.php?id=$1 [L]
e.MiLoU
Merci de ton aide mais ça ne fonctionne toujours pas.

De plus certains fonctionnent (notamment article), certaines fonctionnent mal et d'autres pas du tout (pour le forum)

Mon code actuel

CODE
RewriteEngine on

RewriteRule membres/([0-9]+)/(.+)$ /betawhynot/membres_details.php?id=$1 [L]
RewriteRule articles/([0-9]+)/([0-9]+)/(.+)$ /betawhynot/activites.php?comite=$1&article=$2 [L]
RewriteRule activites/([0-9]+)/(.+)$    /betawhynot/activites.php?comite=$1 [L]
RewriteRule forum/forum/([0-9]+)-(.+)$ /betawhynot/forum_forum.php?forum=$1 [L]
RewriteRule forum/sujet/([0-9]+)-(.+)$ /betawhynot/forum_sujet.php?sujet=$1 [L]
RewriteRule forum/categorie/([0-9]+)-(.+)$ /betawhynot/forum_categorie.php?categorie=$1 [L]
RewriteRule (.+)/$ /betawhynot/$1.php [L,QSA]
Leonick
il faut ajouter QSA aux règles de réécritures
e.MiLoU
Merci de ta proposition, mais hélàs ça ne fonctionne toujours pas. Le plus étrange est que certaines règles fonctionnent et d'autres pas du tout...

Quand je vois ça je me demande pourquoi OVH est numéro de l'hébergement en france...
Dan
CITATION(e.MiLoU @ dimanche 11 février 2007, 10h57) *
Quand je vois ça je me demande pourquoi OVH est numéro de l'hébergement en france...

Avant d'accuser stérilement, il faudrait peut être se dire que si ça marche chez quelques dizaines de milliers d'autres personnes, l'erreur doit probablement être chez toi,non ?

Et si tu nous donnais ces erreurs, on pourrait peut-être t'aider parce que la boule de cristal c'est pas vraiment mon truc.
Tu as quoi comme erreurs ? des pages 404 ? Une erreur 500 ? Des styles CSS qui ne sont pas pris en compte ?

C'est quel type d'hébergement ? Quel domaine ?
Et finalement donne-nous une URL qui ne fonctionne pas, et comment elle doit être réécrite.
e.MiLoU
Oui désolé de dire ça mais je n'ai jamais eu de problème quand je mettais mon site sur Oxito (hébergeur que je recommande) alors que chez OVH, ça n'a jamais marché du premier coup. De plus mon site fonctionne avec Wamp et EasyPHP... Mais ce n'est pas le sujet.

Pour les exemples.

(j'ai demander une print_r des variables GET avant d'avoir le reste du site)

Cette page fonctionne parfaitement: http://www.cercle-solvay.be/betawhynot/art...change,le,titre,

Celle-ci non: http://www.cercle-solvay.be/betawhynot/activites/2/balef (les variables GET ne sont pas prises en compte)

La page membres (http://www.cercle-solvay.be/betawhynot/membres/) fonctionne (j'ai un répertoire membres/ dans mon site) alors que les autres pages (par exemple http://www.cercle-solvay.be/betawhynot/membres_connexion/) ne fonctionnent pas...

Pour le forum c'est encore plus fou... cette page http://www.cercle-solvay.be/betawhynot/for...st,enfin,ajoute n'est même pas pointée vers la bonne page php...

Si vous avez une idée (ou bien OVH ne gère pas bien les urlrewriting avec les dossiers...)

Merci encore pour votre patience et vos conseils...
Leonick
CITATION(e.MiLoU @ dimanche 11 février 2007, 20h09) *
(j'ai demander une print_r des variables GET avant d'avoir le reste du site)

Cette page fonctionne parfaitement: http://www.cercle-solvay.be/betawhynot/art...change,le,titre,

celle-ci http://www.cercle-solvay.be/betawhynot/art...change,le,titre non !

OVH gère sans problème l'url rewriting, même avec des dossiers virtuels !
Il faudrait que l'on ai le htaccess pour voir d'où pourrait provenir le problème.
e.MiLoU
Pour le .htaccess, je redonne le code

CODE
RewriteEngine on

RewriteRule membres/([0-9]+)/(.+)$ /betawhynot/membres_details.php?id=$1 [L]
RewriteRule articles/([0-9]+)/([0-9]+)/(.+)$ /betawhynot/activites.php?comite=$1&article=$2 [L]
RewriteRule activites/([0-9]+)/(.+)$    activites.php?comite=$1&test=test [L]
RewriteRule forum/forum/([0-9]+)-(.+)$ /betawhynot/forum_forum.php?forum=$1 [L]
RewriteRule forum/sujet/([0-9]+)-(.+)$ /betawhynot/forum_sujet.php?sujet=$1 [L]
RewriteRule forum/categorie/([0-9]+)-(.+)$ /betawhynot/forum_categorie.php?categorie=$1 [L]
RewriteRule (.+)/$ /betawhynot/$1.php [L]


J'ai aussi remplacé les [L] par des [L,QSA] comme suggéré mais aucun changement...

Je ne vois aucune logique dans les "bugg" (je le répète tout fonctionne en local)...
Leonick
essaie de rajouter un R aux règles pour voir afficher la réécriture
e.MiLoU
CITATION(Leonick @ dimanche 11 février 2007, 21h45) *
essaie de rajouter un R aux règles pour voir afficher la réécriture

Voilà je l'ai fait, je vais essayer d'un peu regarder ça, merci pour le tuyau ;-)

Quelqu'un a une idée pour expliquer le fait qu'il ajoute .php.php aux url et non .php tout court?? (Suis complètement perdu là...)
steph
ça vient peut-être de ta dernière règle tu ajoutes un .php à ton paramètre $1 dans :
RewriteRule (.+)/$ /betawhynot/$1.php [L]

Steph.
romainb
J'ai eu un probleme de htacces il y a 2 jours sur un dédié chez ovh. J'ai changé 2 choses:

- dans le fichier httpd.conf, j'ai ajouté un -Multiviews

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


- j'ai modifié le chemin du htaccess en ajoutant le répertoire du site sur le dédié, ~site:

CITATION
RewriteEngine on
RewriteRule ^categorie-([a-z_0-9]+)\.html$ /~site/cat.php?catid=$1 [L]


Voilà chez moi ça a marché, j'espère que ce sera le cas pour toi.
e.MiLoU
Hélas je n'ai pas de dédié mais un mutu... je déprime vraiment là (vais essayer d'envoyer un mail au support...)
tamplan
Bonjour,

Je suis sur un 90plan mutualisé chez ovh et ait réussi un début de redirection (c'est la première fois que je fais ça).

A la recherche d'une solution à mon problème je suis tombé sur ces infos :
- 'Options followsymlinks' est déja activé par défaut
- Indiquez le répertoire de base du site si celui-ci n'est pas à la racine
- Précédez la partie droite d'un caractère '/' (dernier point à vérifier, ça marche pour moi sans q_smallexcla.gif )

Voici le fichier .htaccess que je te propose :
CODE
Options +followsymlinks
RewriteEngine On
RewriteBase /betawhynot

RewriteRule membres/([0-9]+)/(.+)$ /membres_details.php?id=$1 [L]
RewriteRule articles/([0-9]+)/([0-9]+)/(.+)$ /activites.php?comite=$1&article=$2 [L]
RewriteRule forum/forum/([0-9]+)-(.+)$ /forum_forum.php?forum=$1 [L]
RewriteRule forum/sujet/([0-9]+)-(.+)$ /forum_sujet.php?sujet=$1 [L]
RewriteRule forum/categorie/([0-9]+)-(.+)$ /forum_categorie.php?categorie=$1 [L]
RewriteRule (.+)/$ /$1.php [L]


Et donc avec la réserve que j'ai faîte au sujet du caractère '/', ceci devrait fonctionner également :
CODE
Options +followsymlinks
RewriteEngine On
RewriteBase /betawhynot

RewriteRule membres/([0-9]+)/(.+)$ membres_details.php?id=$1 [L]
RewriteRule articles/([0-9]+)/([0-9]+)/(.+)$ activites.php?comite=$1&article=$2 [L]
RewriteRule forum/forum/([0-9]+)-(.+)$ forum_forum.php?forum=$1 [L]
RewriteRule forum/sujet/([0-9]+)-(.+)$ forum_sujet.php?sujet=$1 [L]
RewriteRule forum/categorie/([0-9]+)-(.+)$ forum_categorie.php?categorie=$1 [L]
RewriteRule (.+)/$ $1.php [L]


En espérant que ça t'aide ...
e.MiLoU
Hélas ton code ne fonctionne pas plus que le mien...

J'ai envoyé un mail à OVH... j'attends qu'ils répondent...
jnj
URL rewriting / .htaccess == grosse différence entre ovh et les autres : wamp etc. :

IL FAUT CECI : RewriteRule ^/([-_a-zA-Z0-9]+).... etc. la suite de la règle

alors que sur les autres ceci suffit :

RewriteRule ^([-_a-zA-Z0-9]+).... etc. la suite de la règle

faut le / (slash) aposé par apache en début de string ^/( sur OVH sinon cela ne fonctionne pas.
j'en ai bavé 2 heures pour arriver à cela !!
vieux post auquel je réponds mais bon, je dois pas être le seul à me faire piéger
en espérant que cela en aide quelques uns

jnj
winch
Bonjour e.MiLoU,

J'ai aujourd'hui le meme probleme que celui dont tu parlai (en 2005!!!)
Je suis chez OVH en mutu 90plan.

certain GET ne passent pas alors que d'autres si :

celui ci passe:
#Derniers Votes avec numero de page
RewriteRule ^/derniers-votes(/([0-9]+))?$ /derniers_votes.php?page=$2 [L]

alors que celui la non (bien que juste apres)
# Livre d'or
RewriteRule ^/livreor(/([0-9]+))?$ /livreor.php?page=$2 [L]

Test effectue avec un print_r ( $_GET);

Ma question est: as-tu resolu ton probleme depuis? comment?

si d'autres ont une idee du pourquoi du comment, ne pas hesiter a apporter votre grain de sel!

Merci d'avance :-)

Nicolas
yakou32
Bonjour Nicolas,

J'ai le même problème...

As-tu finalement trouvé une solution ?
winch
Bonjour Yakou32

oui j'ai trouve, il suffit de rajouter cette ligne en haut de ton .htaccess :

CODE
# Empeche de parcourir differents nom si pas trouve la cible
Options -MultiViews


C'est pour empecher un fonctionnalite des serveurs d'ovh qui recherche le nom le plus proche si il ne trouvent pas immediatement la page demandee a partir d'un index. La fonction a l'air un peu foireuse.

En tout cas ca marche impeccable ensuite!

J'espere que ca pourra aider pas mal de gens car je sais que je me suis arrache les cheveux sur ce probleme franchement illogique.

Nico
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.