Bonjour,

Je sais que le problème a déjà été traité mainte fois (et je vous assure que je connais tout ces posts...) mais j'ai un gros problème suite à l'hébergement du site que je fais pour un copain. On est chez Amen car j'y étais déjà.

Donc le site fonctionne en local, puis avant de le mettre sur le web, je change certaines lignes (ORIG_PATH_INFO au lieu de PATH_INFO...) & là, tout plante... enfin presque, j'ai une erreur 500 a cause de mon .htaccess :

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

puis je constate qu'en fesant ça :

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

mon router fonctionne puisque je suis redirigé vers ma page d'accueils. Sur cette page, ORIG_PATH_INFO ne renvoie donc rien, même pas webroot/index.php...

En gros, mes URL qui fonctionnaient comme ça : domaine/controller/action , ne fonctionnent plus que comme ça domaine/webroot/index.php/controller/action... & toutes mes routes sont a refaire...

Quelqu'un a une idées, pour éviter d'avoir a tout recommencer ?

Merci

5 réponses


Tu es sûr que l'hébergeur supporte l'url rewrite ?

Arthmael
Auteur

Normalement oui :

Dans mon premier HTaccess, j'ai :

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

Dans le deuxième :

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

& dans mon conf j'ai :

Router::prefix('cockpit','admin');
Router::connect('','accueils/index');
Router::connect('batitheque/:slug-:id','wikis/view/id:([0-9]+)/slug:([a-z0-9\-]+)');
Router::connect('batitheque/*','wikis/*');
?>

Le router fonctionne puisque quand je rentre l'url 'www.domaine.fr', je suis redirigé vers la page index du controller accueils. Cette page fonctionne mais tout mes liens de menu (chaque menu faisant appel a un controller différent) qui sont de type

Router::url("controller/index")

ne fonctionne plus. Pour que mes liens refonctionnent, je dois faire :

Router::url("webroot/index.php/controller/index")

car c'est le seul moyen pour que ORIG_PATH_INFO me renvoie quelque chose. si je laisse le premier code router, il me renvoie un erreur 500.

Ce que je trouve bizarre, c'est que je l'avais testé en beta, & alors mes .htaccess étaient :

RewriteEngine On
RewriteRule (.*) http://www.domaine.fr/beta/webroot/$1 [L]

puis

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

Avec cette config, tout fonctionnait bien sinon que toute mes url étaient de type :

www.domaine.fr/beta/webroot/index.php/controller/action au lieu de www.domaine.fr/beta/controller/action

Voilà, j'espère avoir donné tout les renseignement que je pouvais... ça fait 15 jours que je suis sur ce problème & j'en vois pas le bout...

Merci Jon' pour tout ton boulot de malade qui m'a vraiment éclairci les idées en terme de php...

D'ailleur, si tu comptes faire des tutos 3D, je suis expert en sketchUp / artlantis / Photoshop, et je m'investirai bien si ça t'interresse...

Arthmael
Auteur

J'ai essayé ça

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

J'ai toujours le même problème

Arthmael
Auteur

si mon deuxième htaccess est :

RewriteEngine On
Redirect 301 /webroot/index.php/.htredirect.html http://www.domaine.fr/webroot/index.php
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*) http://www.domaine.fr/webroot/index.php/$1 [L]

mes liens refonctionnent, mais j'ai toujours une url de type :

http://www.domaine.fr/webroot/index.php/controller/action au lieu de http://www.domaine.fr/controller/action

ce qui est normal a cause du rewriterule,

du coup, le redirect 301 devient indispensable car l'apache de l'hébergeur cherche toujours .htredirect.html en premier...

Comment retrouver une url http://www.domaine.fr/controller/action ?

Je me retrouve face au même problème que ma beta...

Arthmael
Auteur

J'ai appris que mon module de rewriting de l'apache n'est pas décommenté (et ne peux pas l'être...) il y a t'il une autre solution ?

Quelle incidence a le faite de décommenter cette ligne (qui était déjà décommentée sur mon conf apache...