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.
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>
É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 ?
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 ?
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.
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.
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']:'/';
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 ?
?????
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 ?
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 ?
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.