Bonjour,

Après avoir suivi le tutoriel Développer un site de A a Z,
je voudrait déployer mon site web sur mon FTP (OnetSolutions), mais une fois en ligne les controller + actions ne fonctionnent pas.
J'arrive sur ma page d’accueil mais en cliquant sur les liens rien ne se passe l'url se change bien mais la page ne change pas.

Merci d'avance de vos réponses.

Cordialement, Benjamin.

19 réponses


Couss
Réponse acceptée

Effectivement c'est étrange.
Peut tu nous transmettre tes réécriture d'URL.

Par hasard ce ne serait pas un problème de layout ou seulement ton layout par defaut est affiché et que tu ne remplis pas $content_for_layout?

Benjamin Garcia BP
Auteur
Réponse acceptée

C'était un problème dans le core PHP 5, pour ceux qui ont le meme problème changez d'hebergeur (moi j'ai test avec succés sur byehost), réglé.

As tu bien la réécriture d'activée?

Bonjour, merci de ta réponse mais oui elle est activé :$

Bonjour,

La page ne se charge pas ou bien as tu une erreur 404 ?
active temporairement le mode débug pour voir s'il y a une erreur de cakePHP

Bonjour, la page se charge bien mais il n'y a pas de rendu.

est ce que tu as activé le mode debug comme te le suggère Couss?

oui, aucune erreur

On manque d'élément
Peut tu nous transmettre ta réécriture et l'appel de la page voir le lien de la page également

Tenez le lien du site web http://mccodeur-plus.fr/

1ère réécriture a la racine :

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

2ème dans le dossier webroot :

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

d'après ma fonction view, aucun problème au niveau du $content_for_layout :

function view($id){
        $this->loadModel('Post');
        $d'page'] = $this->Post->findFirst(array(
            'conditions' => array('online' => 1,'id'=>$id,'type'=>'page')
        )); 
        if(empty($d'page'])){
            $this->e404('Page introuvable'); 
        }
        $this->loadModel('Setting');
        $condition = array('id'=>1); 
        $d'settings'] = $this->Setting->find(array(
            'fields' => 'Setting.site_name,Setting.site_slogan,Setting.site_separator',
            'conditions' => $condition,
        ));
        $this->set($d);
    }

ton dossier webroot se trouve à la racine de ton site ou dans le répertoire app/ ?

il est dans www/webroot/

Est ce que tu peux nous mettre ton fichier route car la quand on clique sur un lien la page se reload bien mais elle affiche la même chose.
Peut être que la redirection n'est pas correct

mon fichier route :

<?php
class Router{

static $routes = array(); 
static $prefixes = array(); 
/**
* Ajoute un prefix au Routing
**/
static function prefix($url,$prefix){
self::$prefixes$url] = $prefix; 
}
/**
* Permet de parser une url
* @param $url Url à parser
* @return tableau contenant les paramètres
**/
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; 
}

/**
* Permet de connecter une url à une action particulière
**/
static function connect($redir,$url){
$r = array();
$r'params'] = array();
$r'url'] = $url; 
$r'originreg'] = preg_replace('/([a-z0-9]+):(^\/]+)/','${1}:(?P<${1}>${2})',$url);
$r'originreg'] = str_replace('/*','(?P<args>/?.*)',$r'originreg']);
$r'originreg'] = '/^'.str_replace('/','\/',$r'originreg']).'$/'; 
// MODIF
$r'origin'] = preg_replace('/([a-z0-9]+):(^\/]+)/',':${1}:',$url);
$r'origin'] = str_replace('/*',':args:',$r'origin']); 
$params = explode('/',$url);
foreach($params as $k=>$v){
if(strpos($v,':')){
$p = explode(':',$v);
$r'params']$p[0]] = $p[1]; 
}
} 
$r'redirreg'] = $redir;
$r'redirreg'] = str_replace('/*','(?P<args>/?.*)',$r'redirreg']);
foreach($r'params'] as $k=>$v){
$r'redirreg'] = str_replace(":$k","(?P<$k>$v)",$r'redirreg']);
}
$r'redirreg'] = '/^'.str_replace('/','\/',$r'redirreg']).'$/';
$r'redir'] = preg_replace('/:([a-z0-9]+)/',':${1}:',$redir);
$r'redir'] = str_replace('/*',':args:',$r'redir']); 

self::$routes] = $r; 
}
/**
* Permet de générer une url à partir d'une url originale
* controller/action(/:param/:param/:param...)
**/
static function url($url = ''){
trim($url,'/'); 
foreach(self::$routes as $v){
if(preg_match($v'originreg'],$url,$match)){
$url = $v'redir']; 
foreach($match as $k=>$w){
$url = str_replace(":$k:",$w,$url); 
}
}
}
foreach(self::$prefixes as $k=>$v){
if(strpos($url,$v) === 0){
$url = str_replace($v,$k,$url); 
}
}
return BASE_URL.'/'.$url; 
}
}

Essayes avec ça [code]<?php class Router{

static $routes = array(); 
static $prefixes = array(); 

/**
* Ajoute un prefix au Routing
**/
static function prefix($url,$prefix){
    self::$prefixes[$url] = $prefix; 
}

/**
* Permet de parser une url
* @param $url Url à parser
* @return tableau contenant les paramètres
**/
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; } /\*\* \* Permet de connecter une url à une action particulière \*\*/ static function connect($redir,$url){ $r = array(); $r['params'] = array(); $r['url'] = $url; $r['originreg'] = preg\_replace('/([a-z0-9]+):([^\/]+)/','${1}:(?P${2})',$url); $r['originreg'] = str\_replace('/\*','(?P<args>/?.*)',$r['originreg']);
    $r['originreg'] = '/^'.str_replace('/','\/',$r['originreg']).'$/'; 
    // MODIF
    $r['origin'] = preg_replace('/([a-z0-9]+):([^\/]+)/',':${1}:',$url);
    $r['origin'] = str_replace('/*',':args:',$r['origin']); 

    $params = explode('/',$url);
    foreach($params as $k=&gt;$v){
        if(strpos($v,':')){
            $p = explode(':',$v);
            $r['params'][$p[0]] = $p[1]; 
        }
    } 

    $r['redirreg'] = $redir;
    $r['redirreg'] = str_replace('/*','(?P<args>/?.*)',$r['redirreg']);
    foreach($r['params'] as $k=&gt;$v){
        $r['redirreg'] = str_replace(":$k","(?P$v)",$r['redirreg']);
    }
    $r['redirreg'] = '/^'.str_replace('/','\/',$r['redirreg']).'$/';

    $r['redir'] = preg_replace('/:([a-z0-9]+)/',':${1}:',$redir);
    $r['redir'] = str_replace('/*',':args:',$r['redir']); 

    self::$routes[] = $r; 
}

/**
* Permet de générer une url à partir d'une url originale
* controller/action(/:param/:param/:param...)
**/
static function url($url = ''){
    trim($url,'/'); 
    foreach(self::$routes as $v){
        if(preg_match($v['originreg'],$url,$match)){
            $url = $v['redir']; 
            foreach($match as $k=&gt;$w){
                $url = str_replace(":$k:",$w,$url); 
            }
        }
    }
    foreach(self::$prefixes as $k=&gt;$v){
        if(strpos($url,$v) === 0){
            $url = str_replace($v,$k,$url); 
        }
    }
    return BASE_URL.'/'.$url; 
}

}
[/code}</args></args>

Ne marche pas, erreurs multiples au niveau des templates et urls.
Merci quand meme Gregory

Je sais plus si tu as déjà essayé d'enlever la réécriture pour voir si cela fonctionne