Vous n'êtes pas identifié(e).
Bonjour à tous.
Avant tout, je dois préciser que ne connais rien au langage PHP (juste Include), désolé.
Ensuite, étant chez FREE et ne pouvant donc bénéficier de l'URL rewriting standard puisque mod_rewrite est désactivé, j'ai cherché des palliatifs.
J'ai trouvé tout d'abord l'astuce du fichier .htaccess avec traitement de l'erreur 404.
Mais j'ai aussi trouvé cette méthode dite du multiview, fonction qui est disponible chez FREE et qui est annoncée plus 'propre' aux yeux des programmeurs PHP.
Voici le lien vers la page qui détaille toutes ces méthodes pour FREE dont le multiview (tout en bas) http://www.fabienletort.com/blog/2008/m … iting-free.
Je demande aux personnes qui en ont la compétence de bien vouloir se pencher sur cette solution et peut-être de l'intégrer en tant que module par exemple.
Merci.
Cordialement.
Hors ligne
Slt vincecat,
Et bien en effet le Multivieuw est actif par default.
Je peux si tu veut faire en sorte que t'est URL soient de la façon suivantes:
Aulieu de tonsite.com/index.php?z=1 soit tonsite.com/index/z/1.html ou encore tonsite.com/index/z/TON-TITRE.html
Si c'est ce que tu veut, dit le moi je te détaillerai ici les manips à faire!
++
Dernière modification par phpeur (08/05/2009 20:51:58)
Hors ligne
Salut phpeur,
c'est exactement ça, t'as tout compris.
Je supposes que le '/z' est inéluctable mais tonsite.com/index/z/TON-TITRE.html ira très bien.
C'est vraiment sympa de te pencher sur ce problème pour nous, pauvres incompétents du PHP et freenautes de surcroit. Merci beaucoup.
Bon week-end.
Hors ligne
Re,
Normalement le "z/" peut être enlevé...
Je n'ai pas de compte Free, pour cela je ne peux pas faire de test,
On va essayé la premiere Manip, tu va me dire ce que sa donne, chez Free,
Pour commencer, fait une sauvegarde de tous ton dossier où tu as installé zite au cas où.
1) Ouvrir index.php, remplacer le tout par:
<?php
if (isset($_SERVER['PATH_INFO'])) {
$arg = explode('/', $_SERVER['PATH_INFO']);
if (isset($arg[1]) && !empty($arg[1]) && isset($arg[2]) && !empty($arg[2])) {
$_GET[$arg[1]] = (substr($arg[2],-5)=='.html') ? substr($arg[2],0,-5) : $arg[2];
}
if (isset($arg[3]) && !empty($arg[3]) && isset($arg[4]) && !empty($arg[4])) {
$_GET[$arg[3]] = (substr($arg[4],-5)=='.html') ? substr($arg[4],0,-5) : $arg[4];
}
}
include('zite/zite.php');
// Initalisation de zene, avec le template 'main'
$zite = & new zite(__FILE__);
// Décommenter si l'on souhaite inhiber la réécriture d'URL
$zite->rewrite = true;
// On génère le contenu
$zite->builder();
// On affiche la page
print $zite->output();
?>
L'envoyer sur le serveur.
2) dans zite/ ouvrir zite.php:
Ligne 134, remplacer toute la ligne:
if ($s[4] || $isadmin) $nav = '<li class="zli'.$s[2].' zon"><a href="'.$base.($rewrite ? $s[0].'.html' : $n).'">'.$s[1].'</a></li>';
Par
if ($s[4] || $isadmin) $nav = '<li class="zli'.$s[2].' zon"><a href="index/'.$base.($rewrite ? $s[0].'.html' : $n).'">'.$s[1].'</a></li>';
Ligne 164, remplacer toute la ligne:
$nav .= '<li class="zli'.$d.'"><a href="'.$base.$f.'">'.$s[1].'</a></li>';
Par:
$nav .= '<li class="zli'.$d.'"><a href="index/'.$base.$f.'">'.$s[1].'</a></li>';
Pour commencer fait ces manips et dit moi ce que sa donne, deconnecte toi de ta session Admin, si sa marche c'est pas fini encore,
++
Dernière modification par phpeur (09/05/2009 03:10:36)
Hors ligne
Salut phpeur,
la sauvegarde est faite, la modif 'index.php' aussi, mais je ne peux pas modifier 'zite.php' car je n'ai pas la même version que toi.
Je bosse avec Zite+ 0.8.1 et même avec une recherche sur les caractères 'if ($s[4] || $isadmin)', je ne trouve rien de similaire à modifier.
Par contre, ligne 191, je trouve ça: if ($s[cPageOn] || $isadmin) $nav = '<li class="zli'.$s[2].' zon"><a href="'.$base.($rewrite ? $s[0].'.html' : $n).'">'.$s[1].'</a></li>';
Je vais donc tenter de faire ta modif ligne 134 sur ma ligne 191...
Pour toi, a priori ça devrait le faire?
A+
Hors ligne
Et ça se complique pour la ligne 164 dont le code a comme équivalent le plus proche ceci:
$nav .= '<li class="zli'.$d.'"><a href="'.(($s[cPageType]&pgbitType)!=5?$base.$f:$s[cPageIdent]).'">'.$s[cPageTitre].'</a></li>';
ce qui est assez loin de celle que tu indiques.
Donc autant pour ta ligne 134/ma ligne 191 je n'ai pas trop de doute, pour ta ligne 164/ma ligne 231, là je n'ose pas trop y insérer ta modif 'index\\'.
A+
Hors ligne
Finalement, je l'ai fait quand même et ça marche pas trop mal.
Si tu veux voir le résultat, c'est là http://ecolonomiqhome.free.fr.
Avec ton code, j'obtiens ça http://ecolonomiqhome.free.fr/index\philosophie.html
au lieu de ça http://ecolonomiqhome.free.fr/index.php?z=3.
En fait, il y a juste le '\' qui jure dans la ligne. Est-ce que je peux tenter de remplacer 'index\\' par 'index//'?
Merci pour ce code qui promet.
A+
Dernière modification par vincecat (08/05/2009 23:19:14)
Hors ligne
oups vincecat ton site n'a pas de contenu, comme s'il n'y avait pas de css
vérifie aussi le lien de ton post vers ton site (ça renvoie vers http://ecolonomiqhome.free.fr%3C/strong>)
j'attends la suite impatiemment
vYk
Dernière modification par davyk (08/05/2009 23:12:00)
Quand Chuck Norris utilise Windows, il ne plante pas.
ChuckNorrisN'aimePasWindows
Hors ligne
Bon ben maintenant les liens sont OK, sauf que mon CSS ne s'applique plus dès que je quitte la première page, c'est à dire dès que je vais sur une page où le lien contient 'index/'.
Quand je vais sur une page différente d' index.php, les liens sont modifiés et 'index/' est ajouté à chaque changement de page.
Dans l'attente de tes nouveaux codes, phpeur.
Merci.
A+
Hors ligne
Lien corrigé Davyk (inversion balises de fermeture... bête hein?).
Merci.
Hors ligne
ça arrive ce genre de bévues.
c'est drôle que ça rajoute un "index/" à chaque fois qu'on clique sur un lien!
en fait, il y a du contenu mais il se retrouve en bas de page (enfin sur mon msi u100 1024x600px)
donc pb de css.
Et si tu remplaçait "index//" par "/"?
vYk
Dernière modification par davyk (08/05/2009 23:30:57)
Quand Chuck Norris utilise Windows, il ne plante pas.
ChuckNorrisN'aimePasWindows
Hors ligne
Ca doit être un problème d'adresse de départ pour réécrire l'adresse finale.
J'explique, si pour constituer l'adresse finale tu reprends l'adresse actuelle, que tu pars du '.' entre le nom de la page et l'extension et que tu remontes jusqu'au '/' précédent et qu'ensuite tu décide que tout ce qui est à gauche du '/' est ton adresse de base puis que tu ajoutes 'index/+nom fichier+'.html', alors tu ajoutes 'index/' à chaque fois que tu changes de page.
Pour le CSS, je ne comprends pas pourquoi il n'est pas lu (comme s'il n'était pas dans le bon répertoire) hors de la page d'accueil.
A+
Hors ligne
En fait je viens de m'apercevoir que les liens ne sont plus bons.
Quel que soit celui que j'active, je retombes invariablement sur ma page d'accueil sans CSS.
A+
Hors ligne
peut être que régler le pb du index/ résoudra aussi le pb du css, enfin, espérons.
tu as essayé de remplacer "index//" par "/ " dans le code?
Dernière modification par davyk (08/05/2009 23:36:29)
Quand Chuck Norris utilise Windows, il ne plante pas.
ChuckNorrisN'aimePasWindows
Hors ligne
Si je remplace 'index/' par '/', les adresses sont tops affichées dans la barre dinfo de Firefox, genre http://ecolonomiqhome.free.fr/contact.html, mais j'ai une erreur 404 chez FREE.
Ce qui veut dire que le code PHP actuel n'adapte pas l'adresse en retour au vrai nom des pages.
A+
Hors ligne
pµ#ain, free, intenet explorer et tinymce sont vraiment à ch...!
on perd quand même pas mal de temps à essayer de résoudre des problèmes qui ne dépendent pas de nous.
mais bon, c'est passionnant quand même.
vYk
Quand Chuck Norris utilise Windows, il ne plante pas.
ChuckNorrisN'aimePasWindows
Hors ligne
une piste:
rajouter dans le .htaccess:
Options +MultiViews
vYk
Quand Chuck Norris utilise Windows, il ne plante pas.
ChuckNorrisN'aimePasWindows
Hors ligne
Re!
Très simple pour le css, il te suffit de mettre dans template.php entre les balises
<head> et </head>
<base href="http://www.tonsite.com/" />
Sa devrait fonctionner,
Sinon pour zite.php ce n'est pas encore sa, je vai analyser un peu le code de zite+ pour voir ce que je peux faire, sa devrait se faire sans trop de soucis.
++
Hors ligne
Il semble que ce ne soit pas nécessaire.
En tout cas ça ne change rien aux comportements décrits ci-avant.
A+
Hors ligne
Si si c'est obligatoire même! ^^!
Enfaite j'ai regardé, toi c'est une rédirection que tu fait avec ton nom de domaine, celui-ci n'est pas attaché au serveur Free avec les DNS de ceux-ci.
Donc toi il te faut mettre:
<base href="http://ecolonomiqhome.free.fr/" />
++
Hors ligne
Re!
J'ai trouvé peut être en regardant vite fait le code de zite+,
On va faire un truc un peu a la barbard ^^ (façon de parler, c'est du codage propre), pour que ton site soit accessible, et j'y pencherai un peu plus quand j'aurai un peu temps.
Donc dans zite.php, ligne 129 à 174, remplacer toute la partie:
function builder() {
if (array_key_exists('perma', $_GET)) {
$z=-1;//au lieu de 1 !!!
$p = $_GET['perma']; // recheche page perma= !!!! trop long
// $z = array_search($p , $this->struct);
// if ($z==FALSE) $z=1;
foreach ($this->struct as $k => $v) if ($v[0]==$p) $z=$k;
if ($z==-1) {
$this->content['main'] = $this->get_message('error404');
header("HTTP/1.0 404 Not Found");
}
$_GET['z'] = $this->args[0] = $z;
}
$page = strlen($_GET['z']) ? $this->args[0] : 1; // fixer page en cours
if (in_array($page, $this->syspages)) { // Est-ce une page système ?
$pagefun = "page_$page";
if (in_array($page.'.php', array_keys($this->module))) { // page de modulaire
$this->content['main'] = $this->page_module($page);
} else $this->content['main'] = $this->$pagefun(); // vrai page système
} else { // page standard
if ($this->config['site_status']=='on'|$_SESSION['zite_admin']>0) {
if (array_key_exists($page, $this->struct) && ($this->struct[$page][cPageOn] || $_SESSION['zite_admin']>0)) {
// Voir si la page est affichable
$infos = $this->struct[$page];
if ($this->isPageAuth($page)) {
$this->content['menu_title'] = $infos[1];
$this->truepage = $page;
if (($infos[cPageType]&pgbitType)!=5) {
$tmp = $this->get_content($infos[cPageIdent], ($infos[cPageType]%2)==0 , true);
$this->content['main'] = $tmp ? $tmp : $this->get_message('errorNOFILE');
} else header('Location: '.$infos[cPageIdent]); // si URL
} else {
$this->content['main'] = $this->get_message('error401');} // page interdite
//header('HTTP/1.0 401 ident error');
} else {
$this->content['main'] = $this->get_message('error404');
header("HTTP/1.0 404 Not Found");
}
} else {
$this->content['main'] = $this->get_message('errorCLOSED');
}
}
$this->navbuilder();
if ($_SESSION['showadminbar']) $this->prepend($this->adminbar());
// if ($_SESSION['zite_admin']) $this->prepend($this->adminbar());
}
Par
function builder() {
if ($this->rewrite==true) {
$v = explode('.',basename($_SERVER['REQUEST_URI']));
if (count($v)==2) {
if (!array_key_exists('z',$_GET)) {
$_GET['perma']=$v[0];
}
} else {
$_GET['z'] = $this->args[0] = 1;
}
}
if (array_key_exists('perma', $_GET)) {
$z=-1;
$p = $_GET['perma'];
foreach ($this->struct as $k => $v) if ($v[0]==$p) $z=$k;
$_GET['z'] = $this->args[0] = $z;
}
$page = strlen($_GET['z']) ? $this->args[0] : 1;
if (in_array($page, $this->syspages)) {
$pagefun = "page_$page";
$this->content['main'] = $this->$pagefun();
} else {
if ($this->config['site_status']=='on'|$_SESSION['zite_admin']>0) {
if (array_key_exists($page, $this->struct) && ($this->struct[$page][4] || $_SESSION['zite_admin']>0)) {
$infos = $this->struct[$page];
$this->content['menu_title'] = $infos[1];
$this->truepage = $page;
$tmp = $this->get_content($infos[0], $infos[3]==2);
$this->content['main'] = $tmp ? $tmp : $this->get_message('errorNOFILE');
} else {
$this->content['main'] = $this->get_message('error404');
header("HTTP/1.0 404 Not Found");
}
} else {
$this->content['main'] = $this->get_message('errorCLOSED');
}
}
$this->navbuilder();
if ($_SESSION['showadminbar']) $this->prepend($this->adminbar());
// if ($_SESSION['zite_admin']) $this->prepend($this->adminbar());
}
Dernière modification par phpeur (09/05/2009 00:57:59)
Hors ligne
oui mais est-ce qu'il s'agit de zite ou zite+ que tu "customises" car c'est zite+ que vincecat utilise.
vYk
Dernière modification par davyk (09/05/2009 00:52:12)
Quand Chuck Norris utilise Windows, il ne plante pas.
ChuckNorrisN'aimePasWindows
Hors ligne
Oui, c'est pour zite+ ce que je vien de dire dans mon avant-dernier post, pour zite normal il faut faire les manips de mes 1er posts
Dernière modification par phpeur (09/05/2009 00:53:20)
Hors ligne
oki
Quand Chuck Norris utilise Windows, il ne plante pas.
ChuckNorrisN'aimePasWindows
Hors ligne
c'est bizarre, en local (easyphp), il n'y a aucun changement, toujours les mêmes liens affichés (index?z=1 par exemple)
vYk
Quand Chuck Norris utilise Windows, il ne plante pas.
ChuckNorrisN'aimePasWindows
Hors ligne