Bonjour,
Mon site est en MVC, ma version de celui du tutos.
Un petit problème m'est survenu en faisant une verification W3C.
Mes pages avec slug indique une erreur 404.
Est-ce normal ? Que faire ?
Tu veux dire qu'elles renvoient un header 404 ? Si tel est le cas possible que le problème vienne du serveur qui prend l'url comme un chemin pour le fichier à charger et qui est donc introuvable.
Oui voilà... Exemple : www.monsite/pagecontact/edit/
Sur W3C Validator, il me dit que c'est une erreur 404, alors que lorsque je vais sur ce lien, il m'affiche bien ma page parfaitement et chrome ne détecte pas d'header 404.
nan page publique. Je n'ai toucher a aucun paramètre pour les robots et la même page avec le lien www.monsite/ peut être vérifié.
Tu peux nous montrer un controller où tu fais appel au slug ? Que je vois le code que tu mets je te guiderai s'il le faut ;) .
Mon dossier core est le même que dans le tuto.
Il me semble que c'est cette fonction :
/**
* 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';
foreach(self::$prefixes as $k=>$v){
if(strpos($request->action,$v.'_') === 0){
$request->prefix = $v;
$request->action = str_replace($v.'_','',$request->action);
}
}
$request->params = array_slice($params,2);
return true;
}
Ce code n'est pas différent du mien et ce n'est pas ce que je demandais ;) . Passes nous un contrôleur où tu fais utilisation des slugs car avec le slug tu peux aussi rediriger si le slug entré n'est pas le bon.
Mon PagesController :
<?php
class PagesController extends Controller{
public function accueil()
{
}
public function services()
{
}
public function offres()
{
}
}
Tout le contenu de mes pages est dans le dossier view. Un fichier par page.
Si je n'ai toujours pas compris dit moi ^^.
A voir du côté donc de la fonction redirect,e404, error et de connect.
Je pense que le problème vient d'une des 4 j'ai un header 200 pour mes pages avec slugs moi ;) .
Je n'y vois rien. Le problème est que je ne peux indexer mon site dans google a cause de cette erreur car le bot trouve une erreur 404.
J'ai supprimer la fonction e404 ainsi que la fonction error, aucune différence.
EDIT: redirect et connect sont identique au tutoriel.
Est-ce que ça ne serais pas un problème avec mon hébergement ? Parce que j'ai essayer avec les fichiers du tuto sans les modifier mais rien a faire j'ai toujours une erreur 404.
Tu veux pas nous donner la vraie url de ton site, pour voir si le problème ne vient pas d'ailleurs ?
Bisous
Sur W3C Validator, il me dit que c'est une erreur 404, alors que lorsque je vais sur ce lien, il m'affiche bien ma page parfaitement et chrome ne détecte pas d'header 404.
Faux:
Request URL:http://www.sun-web.fr/contact
Request Method:GET
Status Code:404 Not Found
Request Headersview source
Sur quasi toute tes pages, tu reçois bien un header 64 (chrome le detecte bien)
Si en local tu n'as pas le même soucis, à voir du coté de l'hebergeur...
Je voulais dire que Chrome m'affiche la page.
En vérité si l'on actualise très souvent la page, on remarque dans la console de Chrome qu'il y a une erreur 404 mais qui est de suite rediriger vers la page demandé.
C'est assez spéciale je ne comprend pas vraiment ce qu'il se passe dans le code.