Créer un site de A à Z - problème d'url rewriting chez hébergeur

Par sonic, il y a 14 ans


Bonjour,

J'ai crée un site en prenant la base du tutoriel et tout fonctionne très bien en local et sur un hébergement OVH. Cependant il y a un problème avec l'hébergeur final du site Oxyd. En effet les serveurs de cet hébergeur semblent avoir des règles spécifiques pour la syntaxe des .htaccess, si bien que j'ai dû les modifier quelque peu en ajoutant un / avant webroot dans le premier (à la racine du site) et un autre devant index.php dans le second (dans le répertoire webroot). Comme ceci:

RewriteEngine On
RewriteRule (.*) /webroot/$1 [L]

et comme ceci:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*) /index.php/$1 [L]

Pour que les réécritures se fassent bien, j'ai dû modifier les fonctions url et webroot de la classe Router en retirant le / après BASEURL, comme ceci:

static function url($url = ''){
        trim($url,'/'); 
        foreach(self::$routes as $v){
            if(preg_match($v'originreg'],$url,$match)){
                $url = $v'redir']; 
                foreach($match as $k=>$w){
                    $url = str_replace(":$k:",$w,$url); 
                }
            }
        }
        foreach(self::$prefixes as $k=>$v){
            if(strpos($url,$v) === 0){
                $url = str_replace($v,$k,$url); 
            }
        }
        return BASE_URL.$url; 
    }
    static function webroot($url){
        trim($url,'/');
        return BASE_URL.$url; 
    }

Ainsi la page d'accueil du site s'affiche bien, et il est possible d'accéder aux pages en écrivant l'url "entière". Par exemple pour l'index des news, http://www.mondomaine.com/webroot/index.php/news.

Il n'est pas possible d'y accéder par l'url http://www.mondomaine.com/news. Cela me redirige vers l'accueil.

J'ai beau chercher je ne trouve pas l'endroit où il faudrait apporter une modification pour que les réécritures se fassent correctement.

Auriez vous une idée de ce qu'il faudrait faire (ou ne pas faire) pour qu'il n'y ait plus ce soucis de réécriture?

Merci d'avance.

16 réponses

Mizzou, il y a 14 ans

J'ai sensiblement le meme problème avec 1and1, avez vous trouver une solution svp?
Je vous remercie

sonic, il y a 14 ans

Malheureusement je n'ai pas trouvé de solution. J'ai finalement choisi de changer d'hébergeur.

marc9524, il y a 13 ans

je suis aussi chez OVH et pour régler ce soucis, j'ai retiré BASE URL en laissant le '/' et çà fctionne chez moi :)

birlouz, il y a 13 ans

Haaaaaaaa !!! Merci pour ce post ! Je suis chez Olympe et l'ajout des '/' dans les .htaccess à enfin tout fait fonctionner ! 2 jours de galère !

benoure, il y a 13 ans

Bonjour j'ai un problème 500 Internal Server Error. Je suis chez olympe.
birlouz je voudrais savoir si vous avez fait des changements sur le .htacces ou autre ?!

birlouz, il y a 13 ans

Le .htaccess de la racine :

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*) /RepertoireSite/webroot/$1 [L]
</IfModule>

Le .htaccess du /webroot :

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*) /RepertoireSite/index.php/$1 [L]
</IfModule>

Et là, pour l'instant, ça fonctionne nikel.

benoure, il y a 13 ans

oki merci birlouz!!
mais quand tu dis /RepertoireSite c'est /dns/in/olympe/NOMDUSITE?!

birlouz, il y a 13 ans

Alors /RepertoireSite, c'est un répertoire à la racine dans lequel j'ai mis tous mes fichiers.
Donc oui, dans le cas /dns/in/olympe/NOMDUSITE, c'est /NOMDUSITE.

benoure, il y a 13 ans

oki merci beaucoup birlouz!!
Et tu as modifier le fichier Router.php et la variable BASE_URL ?!

birlouz, il y a 13 ans

Non, pas touché à BASE_URL, je crois bien que j'ai testé et que ça n'a rien changé.

benoure, il y a 13 ans

et le fichier le fichier Router.php tu l'as changé ?!
car ça me donne une erreur 500 Internal Server Error !!

birlouz, il y a 13 ans

Non, rien modifié à part le fichier de conf et les 2 .htaccess.

benoure, il y a 13 ans

oki merci !! Mais c'est toujours pareil erreur 500 !!

birlouz, il y a 13 ans

J'suis pas assez calé là ... je commence tout juste depuis une semaine :-/

Mass22, il y a 12 ans

Bonjour,

J'ai suivi à la lettre le tuto. Le site fonctionne parfaitement en local mais, une fois sur l'hébergeur (OVH), la home s'affiche mais les liens internes ne fonctionnent pas. J'ai essayé vos solutions mais rien ne fonctionne. Lorsque je clic sur un lien, j'ai juste un "file not found".

Vous pouvez voir le problème sur le site : ici

Merci d'avance

MrGuillou, il y a 12 ans

Bonjour,

Regarde ici, surement bientôt une solution

Cordialement,