Bonjour,

je réalise un site pour une amie après avoir suivi le tutoriel sur comment faire un site de a à z en php.
Pas trop de soucis pour le commencer, le front étant quasi fini et mon amie ayant enfin son hébergeur, je décide de transférer le contenu sur son site pour continuer le dev.

Une différence, que je pense négligeable mais je me trompe peux être, sur mon site , j'utilise un sous dossier, alors que sur le sien, le site est à la racine.

Mais voilà, j'ai un problème que je ne comprends pas.
Une fois sur son site, chaque url où j'utilise les méthodes "url" ou "webroot" se retrouve avec // devant au lieu d'un seul /
elle :

<link rel="stylesheet" href="//css/style.css">

moi:

<link rel="stylesheet" href="/coach/css/style.css">

Pourtant je n'ai rien changé au fichier "router.php" du core, rien changé sur les htaccess.
Le trim du / sur $url se fait bien avant de renvoyer la base_url.

Ce que je n pige pas en plus, c'est que les 2hébergeurs sont normalement les même, OVH offre perso.

Seul le serveur de stockage diffère, y'a t'il une possibilité de voir si une option est manquante sur le serveur de mon amie?

Bref je ne sais plus trop où regarder, un conseil?
Merci

7 réponses


gato
Auteur
Réponse acceptée

Bon finalement le plus simple est souvent la meilleure solution:

define('BASE_URL','http://mon-url.com');

En mettant une url absolues en BASE_URL, cela fonctionne correctement.

gato
Auteur

Etrange, tout marche bien sur les autres page, seul l'index bug.

normalement tu n'utilise pas directement la fonction url pour insérer un css (ou un script ou un lien).
Quel est ton code pour affiché <link rel="stylesheet" href="//css/style.css"> ?
Si tu n'as pas fait <?php echo $this->Html->css('style'); ?> alors essaye avec ça! et dit moi si ça marche.

gato
Auteur

Merci pour ton aide, voilà où j'en suis.
Non j'ai utilisé :

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

Ton code ne marche pas dans mon cas.

gato
Auteur

J'ai vu sur le forum que c'est un problème récurent, le tuto est prévu pour un site dans un répertoire et pas à la racine.
Du coup on a des problème entre la BASE_URL et les méthodes dans le router.

Certain dise que retirer le / dans cette portion de code fonctionne:

foreach(self::$prefixes as $k=>$v){
            if(strpos($url,$v) === 0){
                $url = str_replace($v,$k,$url); 
            }
        }
        return BASE_URL.'/'.$url;

Effectivement sur l'accueil cela va fonctionner mais pas sur le reste du site.

Si je peut me permettre :
dans ton cas define('BASE_URL','http://coach-reception.com'); peut résoudre la solution mais

Il est quand même conseillé d'utiliser les fonctions de cakePhp :

//remplacé 
<link rel="stylesheet" href="<?php echo Router::webroot('css/style.css'); ?>">
//par 
<?php echo $this->Html->css('style'); ?>
//pour les script
<?php echo $this->Html->script('jquery'); ?>
//pour les liens
<?php echo $this->Html->link('lien','/controller/action'); ?>
gato
Auteur

Possible mais je n'utilise pas CakePHP, seulement les bases php apprises avec le tuto php en 7jours.