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.
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?
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é.
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
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
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);
}
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=>$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$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;
}
}
[/code}</args></args>
Ne marche pas, erreurs multiples au niveau des templates et urls.
Merci quand meme Gregory