Bonjour,

Après avoir réalisé mon site en suivant les tutos Site en php de A à Z j'ai voulu l'héberger chez ovh. Mais je rencontre un problème à savoir que mes styles ne se chargent pas: http://cheerbatonpassion.fr/
Le problème vient d'ici :

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

je pense car quand je regarde via l'inspection html de chrome le chemin d'accès à mes style n'est pas bon, j'ai quelque chose comme ça :

<link rel="stylesheet" type="text/css" href="//css/bootstrap.css">

.

Si quelqu'un à déja eu ce problème ou a une idée pour m'aider je suis preneur ;)

Merci à vous.

16 réponses


Bonjour

C'est quoi le lien sur ton local ?

Je n'ai pas fait le tuto mais ça te donnera une piste pour ton problème.

Y a des fichiers temporaires ?
le site est bien à la racine ?
Sous ton hébergeur local, ton site était à la racine ?

++

Bonne continuation :p

zfake
Auteur

Alors sur l’hébergement j'ai tout mis à la racine et sur le local c'est dans un dossier à part. J'avais pensé à ça mais du coup en mettant le site dans dossier sur l’hébergement ça ne résout qu'a moitié le problème car seule l'index se voit habillé par le css, dès que je change de pages je garde le même soucis.
Et non pas fichiers temporaire ;)

Je viens également de me rendre compte que tout mes liens vers mes pages sont erronés sur l'hébergement, du coup je me demande si ça vient pas de mon router.php qui permet de parser et générer des urls au format MVC, jvais y jeter un coup d'oeil :p

Dis nous ton avancé. je suis assez curieux sur les rewrite et routage. Pour moi c'est de la magie noire plutôt qu'une science pour le moment ^^'

Bonsoir,
J'ai eu une mésaventure similaire au passage du code HTML au PHP ^^, en effet le chemin du fichier css était bien correct en HTML mais lors du passage au PHP à cause de la réécriture ça foirait. J'ai finalement trouvé comment faire, j'ai mis <link rel="stylesheet" type="text/css" href="/dossier_racine/css/style.css"> sinon si tu as tout mis à la racine sur l'hébergement alors c'est ça le soucis ^^ . Tu lies dans ton code la page au css qui est situé dans webroot puis css puis bootstrap.css alors qu'en fait il est directement à la racine donc tout dépend de l'organisation de tes fichiers.
La page view est situé où ? Par exemple si les view sont dans webroot et que le css est avant le webroot celà veut dire que tu dois monter un dossier avant webroot.
Ce qui devrait donner:
<link rel="stylesheet" type="text/css" href="../../../css/bootstrap.css"> Enfin tout dépend de l'organisation de tes fichiers.

Sinon tu pourrais me montrer comment as-tu fais les boutons du menu ? Tu les as fait avec la récursivité (foreach) ou bien par includes ?

AMHA, tu devrais te faire la main sur un environnement confiné.
Puis une fois les choses bien assimilées, tu lance ton site en production comme un pro!
Bonne continuation.

essaye de modifier ta methode webroot comme suit:

public static function webroot($url){
    $url = trim($url,'/');
    return rtrim(BASEURL, '/').'/'.$url;
    }

et fais nous savoir la suite

zfake
Auteur

@alfred la modif n'apporte aucun changement, le problème reste le même.
@Xtr3me Idem. mon page view dans dans un dossier view à la mm hauteur que le webroot, voila ce que ça donne :

Sinon tu pourrais me montrer comment as-tu fais les boutons du menu ? Tu les as fait avec la récursivité (foreach) ou bien par includes ?<u></u>
De quels boutons tu parles ?

Dans mes urls j'ai

/webroot/pages/

qui s'ajoute à chaque fois :

http://cheerbatonpassion.fr/cbp/webroot/pages/page/resultats-palmares-47

En fait pour les boutons pas la peine j'ai fait autrement que le tutoriel de Grafikart ^^ , je parlais des boutons de navigations (Ma première page etc...) . Pour ton url elle est constituée bizarrement, tu es sûr que la réécriture d'url fonctionne ? Sinon tu as bien un dossier page dans pages ? Car c'est un peu redondant donc je sais pas si c'est fait exprés ou non. J'ai ceci pour ma fonction webroot:

static function webroot($url){
            trim($url,'/');
            return BASE_URL.'/'.$url;
        }

Et dans le lien entre le css et le layout:

<?php echo Router::webroot('css/style.css'); ?>
zfake
Auteur

j'ai pareil que toi pour ma fonction webroot et mon lien entre le css et le layout.
Non pas de dossier page dans mon dossier pages.

Le truc c'est qu'en local ça focntionne parfaitement mais sur l'hébergeur ça passe pas ... jvais allez me pendre XD

Dans ce cas tu as une view page ? En tout cas le webroot ne devrait pas apparaître dans l'url vérifié au niveau de tes .htaccess
Voici les miens:
Celui à la racine:

Options +MultiViews
RewriteEngine On
RewriteBase /mon_site
RewriteRule (.*) webroot/$1 [L]

Celui dans webroot:

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

oui j'ai un view.php dans mon dossier pages.
niveau htaccess j'avais juste ça :

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

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

Mais bon encore une fois en les modifiant comme toi j'ai aucun changement :/ j'ai forcément un pb au niveau du parsage url mais j'arrive pas à voir où.

Moi tout fonctionne impeccable sauf quand tu ne rentres pas d'argument (id) dans l'url des pages bah j'ai un message d'erreur php il va falloir que je régle ça en lui disant que s'il n'y a pas d'argument il m'affiche pas l'erreur php mais que la page 404 x) .
Voilà ma fonction parse:

static function parse($url,$request){
            $url = trim ($url,'/');
            if(empty($url)){
                $url = Router::$routes[0]'url'];
            }else{
                $match = false;
                 foreach(Router::$routes as $v){
                if(!$match && preg_match($v'redirreg'],$url,$match)){
                       $url = $v'origin'];
                       foreach($match as $k=>$v){
                        $url = str_replace(':'.$k.':',$v,$url);
                       }
                       $match = true;
                   }
                }
            }
            $params = explode('/',$url);
            if(in_array($params[0],array_keys(self::$prefixes))){
                $request->prefix = self::$prefixes$params[0]];
                array_shift($params);
                 }
            $request->controller= $params[0];
            $request->action= isset($params[1]) ? $params[1] : 'index';
            $request->params = array_slice($params,2);
            return true;
        }

cela résous partiellement le problème. j'ai le même problème. en page index les styles vont bien s'afficher. mais lorsqu'on clique sur un lien voilà ce que ça donne:/webroot/posts/viewcss/bootstrap.css. Ce qui montre que BASE_URL devient /webroot/posts/view et $url css/bootstrap.css. le problème se situe sur le BASE_URL. pourquoi il ne reste pas stable comme en page d'0accueil c'est dire /.

salut, avez vous essayé de changer le PATH_INFO. Voici des liens du forum qui parle de l'hébergement OVH mutualisé ou pas . [url=http://www.grafikart.fr/forum/topic/2428][/url] [url=http://www.grafikart.fr/forum/topic/7985]Texte du lien[/url] @+

Regarde ma réponse à ce problème, je pense qu'elle te concerne aussi:
http://www.grafikart.fr/forum/topic/3186

Bonjour zfake
Je viens de faire un tour sur ton site et je vois qu'il marche à merveille, merci de partager la solution comment t'as réglé ton problème de lien.
Cordialement