Je suis en train de faire un test de mon site chez mon hébergeur qui est un mutualisé (One&One).

Mes fonctions webroot et url ne se comportent pas de la même façon que je sois en local avec Wamp ou chez l'hébergeur.

Définition de webroot (/webroot/index.php) :

define('WEBROOT',dirname( __FILE__ ));

par exemple pour le lien test appelé comme ceci : (fonction url)

<a href="<?php echo Router::url(''); ?>">test</a>

en local donne : http://localhost/monsite/
chez l'hébergeur : http:///

même si j'écris à la main une url correct le contenu n'est pas modifier dans mon layout. Problème de .htaccess ?

autre exemple avec un fichier css : (fonction webroot)

<link rel="stylesheet" type="text/css" href="<?php echo Router::webroot('css/style.css'); ?>">

en local donne : <link rel="stylesheet" type="text/css" href="/monsite/css/style.css">
chez l'hébergeur : <link rel="stylesheet" type="text/css" href="//css/style.css">

Petite précision :

en local le dossier "monsite" et placé dans le dossier "www" de Wamp
chez l’hébergeur le site n'est pas à la racine mais dans un sous-dossier.

D'avance merci pour votre aide.

10 réponses


Msappdem
Auteur
Réponse acceptée

Résolu pour OneandOne:

A la racine : .htaccess

<IfModule mod_rewrite.c>
   RewriteEngine on
   RewriteBase /
   RewriteRule ^$ principal/webroot/ [L]
   RewriteRule (.*) principal/webroot/$1 [L]
</IfModule>

dans le dossier "principal" : .htaccess

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

dans le dossier "webroot" : .htaccess

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ /index.php?url=$1 [QSA,L]
</IfModule>
Msappdem
Auteur

Étrange j'ai reçus un mail m'indiquant que j'avais une réponse et le sujet est remonté mais rien !!!

Une idée pour mon problème ?

Msappdem
Auteur

je m'arrache les cheveux !
j'ai exactement le même problème chez Gandi.net !

je pense que mes problèmes viennent des .htaccess mais comment le savoir ?

Quelqu'un aurait une idée pour me débloquer ?

Msappdem
Auteur

après un nouveau test chez Gandi.

la site est à la racine : /lamp0/web/vhosts/site.com/htdocs

contenu du .htaccess :

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

contenu du webroot/.htaccess :

RewriteEngine On
# Ne pas réécrire l'url si le dossier existe
RewriteCond %{REQUEST_FILENAME} !-d
# Ne pas réécrire l'url si le fichier existe
RewriteCond %{REQUEST_FILENAME} !-f
# L pour ne pas executer d'autre règles
RewriteCond %{REQUEST_URI} !=/favicon.ico
RewriteRule (.*) index.php/$1 [L,QSA]

si je place un fichier de test (phpinfo()) dans le dossier webroot et que j'y accède par site.com/test.php cela fonctionne.

ma première page avec css, js etc fonctionne aussi en revanche si je vais sur site.com/post/index il me renvois vers "file not found".

je ne sais plus si cela vient de mes fichiers .htaccess et d'ailleurs.

D'avance merci.

Msappdem
Auteur

il semblerait que le problème vienne de la "RewriteRule (.*) index.php/$1 [L,QSA]"

les pages demandées ne sont pas redirigées vers l'index. car si je rajoute un ? (pour tester)

RewriteRule (.*) index.php?/$1 [L,QSA]

je n'ai pas le bon contenu mais j'ai toujours du contenu.

Msappdem
Auteur

Résolu pour Gandi :
.htaccess du dossier Webroot :

RewriteRule (.*) index.php?$1 [L,QSA]

Request.php :

$this->url = isset($_SERVER'REQUEST_URI'])?$_SERVER'REQUEST_URI']:'/';

Msappdem
Auteur

c'est pas tout à fait bon en fait, le css n'est pas lu chez 1&1, les images et les .js oui.
pourtant quand je regarde dans le code de ma première page je vois bien le css.

une idée s'il vous plait ?

Msappdem
Auteur

?????

le css n'est pas pris en compte en temps normal mais si j'écris du texte avant la balise DOCTYPE il s'affiche correctement ! c'est étrange non ?

Msappdem
Auteur

personne pour me donner un petit coup de main ?

étant donné que ça fonctionne avec un caractère devant la balise DOCTYPE je me dis que je dois avoir une erreur dans le code mais ça fonctionne en local. Par ou commencer ?

Msappdem
Auteur

J'ai une piste !
J'en avais marre de m'acharner sur mes .htaccess.

Dans Controller.php j'ai commenté les lignes concernant ob_start()
et la ça fonctionne, mon css est bien visible mais du coup comme le require($view) est avant cela flingue mon affichage.
Je cherche des infos pour corriger ce problème.