Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

NAVIGATION 404 - FLOPTWO


Information sur la source

Catégorie :Astuces Classé sous : pseudoframe, erreur404, htaccess, url, rewriting Niveau : Débutant Date de création : 11/06/2006 Date de mise à jour : 14/06/2006 01:23:10 Vu / téléchargé: 2 435 / 233

Note :
Aucune note

Commentaire sur cette source (11)
Ajouter un commentaire et/ou une note

Description

Navigation 404 - floptwo :
Il s'agit d'un script permettant de naviguergrace a la page d'erreur 404.
C'est une sorte d'URL Rewriting.
C'est à peu près le même principe que les pseudo-frames sauf qu'au lieu de monsite.com/index?rub=blabla (ce dont j'ai horreur !) on a monsite.com/blabla/
Ca a l'avantage de perturber les petits curieux qui s'amusent à déchiffer les URL et puis je trouve ça plus original et plus propre.
 

Source

  • <?php
  • /* * * * * * * * * * * * * * * * * * * * * * * * * * *
  • * Navigation 404 - floptwo :
  • * Il s'agit d'un script permettant de naviguer
  • * grace a la page d'erreur 404.
  • * C'est une sorte d'URL Rewriting.
  • * C'est à peu près le même principe que les
  • * pseudo-frames sauf qu'au lieu de
  • * monsite.com/index?rub=blabla (ce dont j'ai horreur !)
  • * on a monsite.com/blabla/
  • * Ca a l'avantage de perturber les petits curieux
  • * qui s'amusent à déchiffer les URL et puis je trouve
  • * ça plus original et plus propre.
  • *
  • * Script réalisépar floptwo (floptwo@gmail.com)
  • * * * * * * * * * * * * * * * * * * * * * * * * * * */
  • /* Je ne décrirais pas la partie CSS car ce n'est pas
  • * fondamental pour le script.
  • * Il faut avant tout créer un fichier .htacces à la racine
  • * de votre site. Il doit contenir :
  • * ErrorDocument 404 /index.php (l'URL de votre page de
  • * pseudo-frame).
  • * (Pour plus d'info voir les tutoriaux sur le htaccess)
  • *
  • * Pour la navigation on se sert des variable PHP (ou
  • * variables d'environnement que l'on obtient en tappant
  • * phpinfo()).
  • * On se sert ici de _SERVER["REQUEST_URI"] pour récupérer
  • * ce qui nous interesse c'est à dire la page demandée qui
  • * n'a pas été trouvée.
  • * Ensuite c'est comme les pseudo frames (include($page)...).
  • * Si vous ne connaissez pas, cherchez un tutoriel sur les
  • * pseudo-frames, il y en a des milliers et dans toutes
  • * les langues.*/
  • $a = explode('/', $_SERVER["SCRIPT_NAME"]);
  • $a_count = count($a);
  • $b = $a[$a_count-1];
  • $b_count = strlen($b);
  • $adresse_index = substr($_SERVER["SCRIPT_NAME"],0, -($b_count+1));
  • /* $_SERVER["REQUEST_URI"] :
  • * retourne l'adresse saisie (l'adresse censée générer
  • * une erreur 404).
  • * substr($var,1) retire le 1er caratère : un slash. */
  • $adresse = str_replace( $adresse_index.'/', '', $_SERVER["REQUEST_URI"]);
  • /* On hache l'adresse à chaque slash '/' et retourne les
  • * valeurs dans un tableau.
  • * $tab[0] correspond au premier élément retrouver avant
  • * un slash '/', $tab[1] deuxièmem élément, etc ...*/
  • $adresse_tableau = explode ('/', $adresse);
  • if ($adresse_tableau[0] =='script')
  • {
  • if (isset($adresse_tableau[1]) && $adresse_tableau[1] == 'calendrier')
  • {
  • $page = 'page_script_calendrier.php';
  • }
  • elseif (isset($adresse_tableau[1]) && $adresse_tableau[1] == 'bidon')
  • {
  • $page = 'page_script_bidon.php';
  • }
  • else
  • {
  • $page = 'page_script.php';
  • }
  • }
  • elseif($adresse_tableau[0] =='contact')
  • {
  • $page = 'page_contact.php';
  • }
  • elseif($adresse_tableau[0] == '')
  • {
  • $page = 'main.php';
  • }
  • else
  • {
  • $page = 'page_erreur.php';
  • }
  • ?>
  • <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  • <html>
  • <head>
  • <STYLE type="text/css">
  • @IMPORT URL(css.css);
  • </STYLE>
  • <title>Navigation 404 - floptwo</title>
  • <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  • </head>
  • <body>
  • <table width="500" height="400" border="0" align="center" cellpadding="1" cellspacing="0" bgcolor="#999999">
  • <tr>
  • <td><table width="100%" height="400" border="0" align="center" cellpadding="2" cellspacing="1">
  • <tr align="center" bgcolor="#CCCCCC">
  • <td height="20" colspan="2"> <div class="titre1">Monsite.com</div></td>
  • </tr>
  • <tr bgcolor="#CCCCCC">
  • <td height="10" colspan="2"> <div class="titre2" align="right"><?php echo $adresse ?></div></td>
  • </tr>
  • <tr bgcolor="#999999">
  • <td width="400" rowspan="2" valign="top" bgcolor="#FFFFFF">
  • <div>
  • <?php
  • //Contrôle si le fichier $page existe
  • if(file_exists($page))
  • {
  • //Si celui-ci existe, on l'insère dans la page centrale
  • include($page);
  • }
  • else
  • {
  • //Sinon, on insère la page avec le message d'erreur
  • include('page_erreur.php');
  • }
  • ?>
  • </div></td>
  • <td height="10" bgcolor="#CCCCCC"><p class="titre2" align="center">Menu</p></td>
  • </tr>
  • <tr>
  • <td width="100" valign="top" bgcolor="#FFFFFF">
  • <div class="text">
  • <li><a href="<?php echo $adresse_index ?>/">Acceuil</a></li>
  • <hr/>
  • <span>
  • <div><a href="<?php echo $adresse_index ?>/script">Script</a></div>
  • <li><a href="<?php echo $adresse_index ?>/script/calendrier">Calendrier</a></li>
  • <li><a href="<?php echo $adresse_index ?>/script/bidon">Bidon</a></li>
  • </span>
  • <hr/>
  • <div><a href="<?php echo $adresse_index ?>/contact">Contact</a></div>
  • </div></td>
  • </tr>
  • </table></td>
  • </tr>
  • <tr>
  • <td bgcolor="#FFFFFF">
  • <div align="center" class="text">Script r&eacute;alis&eacute; par floptwo
  • (floptwo@gmail.com)</div></td>
  • </tr>
  • </table>
  • <?php
  • /* * * * * * * * * * * * * * * * * * * * * * * * * * * *
  • * script réalisé par floptwo (floptwo@gmail.com)
  • * * * * * * * * * * * * * * * * * * * * * * * * * * */
  • ?>
  • </body>
  • </html>
<?php
/* * * * * * * * * * * * * * * * * * * * * * * * * * * 
 * Navigation 404 - floptwo :
 *   Il s'agit d'un script permettant de naviguer
 *   grace a la page d'erreur 404.
 *   C'est une sorte d'URL Rewriting.
 *   C'est à peu près le même principe que les 
 *   pseudo-frames sauf qu'au lieu de 
 *   monsite.com/index?rub=blabla (ce dont j'ai horreur !) 
 *   on a monsite.com/blabla/
 *   Ca a l'avantage de perturber les petits curieux
 *   qui s'amusent à déchiffer les URL et puis je trouve
 *   ça plus original et plus propre.
 *
 *   Script réalisépar floptwo (floptwo@gmail.com)
 * * * * * * * * * * * * * * * * * * * * * * * * * * */
 
/* Je ne décrirais pas la partie CSS car ce n'est pas
 * fondamental pour le script. 
 
 * Il faut avant tout créer un fichier .htacces à la racine
 * de votre site. Il doit contenir :
 * ErrorDocument 404 /index.php (l'URL de votre page de 
 * pseudo-frame).
 * (Pour plus d'info voir les tutoriaux sur le htaccess)
 *
 * Pour la navigation on se sert des variable PHP (ou 
 * variables d'environnement que l'on obtient en tappant 
 * phpinfo()). 
 * On se sert ici de _SERVER["REQUEST_URI"] pour récupérer 
 * ce qui nous interesse c'est à dire la page demandée qui
 * n'a pas été trouvée.
 * Ensuite c'est comme les pseudo frames (include($page)...).
 * Si vous ne connaissez pas, cherchez un tutoriel sur les
 * pseudo-frames, il y en a des milliers et dans toutes 
 * les langues.*/

$a = explode('/', $_SERVER["SCRIPT_NAME"]);
$a_count = count($a);
$b = $a[$a_count-1];
$b_count = strlen($b);
$adresse_index = substr($_SERVER["SCRIPT_NAME"],0, -($b_count+1));

/* $_SERVER["REQUEST_URI"] :
 * retourne l'adresse saisie (l'adresse censée générer
 * une erreur 404).
 * substr($var,1) retire le 1er caratère : un slash. */
$adresse = str_replace( $adresse_index.'/', '', $_SERVER["REQUEST_URI"]); 

/* On hache l'adresse à chaque slash '/' et retourne les 
 * valeurs dans un tableau. 
 * $tab[0] correspond au premier élément retrouver avant
 * un slash '/', $tab[1] deuxièmem élément, etc ...*/
$adresse_tableau = explode ('/', $adresse); 

if ($adresse_tableau[0] =='script')
{
	if (isset($adresse_tableau[1]) && $adresse_tableau[1] == 'calendrier')
	{
		$page = 'page_script_calendrier.php';
	}
	elseif (isset($adresse_tableau[1]) && $adresse_tableau[1] == 'bidon')
	{
		$page = 'page_script_bidon.php';
	}
	else
	{
		$page = 'page_script.php';
	}
}
elseif($adresse_tableau[0] =='contact')
{
	$page = 'page_contact.php';
}
elseif($adresse_tableau[0] == '')
{
	$page = 'main.php';
}
else
{
	$page = 'page_erreur.php';
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<STYLE type="text/css">	
	@IMPORT URL(css.css);	
</STYLE>

<title>Navigation 404 - floptwo</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<table width="500" height="400" border="0" align="center" cellpadding="1" cellspacing="0" bgcolor="#999999">
  <tr> 
    <td><table width="100%" height="400" border="0" align="center" cellpadding="2" cellspacing="1">
        <tr align="center" bgcolor="#CCCCCC"> 
          <td height="20" colspan="2"> <div class="titre1">Monsite.com</div></td>
        </tr>
        <tr bgcolor="#CCCCCC"> 
          <td height="10" colspan="2"> <div class="titre2" align="right"><?php echo $adresse ?></div></td>
        </tr>
        <tr bgcolor="#999999"> 
          <td width="400" rowspan="2" valign="top" bgcolor="#FFFFFF"> 
            <div> 
              <?php 
			    //Contrôle si le fichier $page existe 
				if(file_exists($page)) 
				{ 
				    //Si celui-ci existe, on l'insère dans la page centrale
					include($page); 
				}
				else
				{
				    //Sinon, on insère la page avec le message d'erreur
					include('page_erreur.php'); 
				}
			?>
            </div></td>
          <td height="10" bgcolor="#CCCCCC"><p class="titre2" align="center">Menu</p></td>
        </tr>
        <tr> 
          <td width="100" valign="top" bgcolor="#FFFFFF"> 
		    <div class="text"> 
				<li><a href="<?php echo $adresse_index ?>/">Acceuil</a></li>
				<hr/>
				<span>
					<div><a href="<?php echo $adresse_index ?>/script">Script</a></div>
                 	<li><a href="<?php echo $adresse_index ?>/script/calendrier">Calendrier</a></li>
                  	<li><a href="<?php echo $adresse_index ?>/script/bidon">Bidon</a></li>
               </span>
			   <hr/>	
				<div><a href="<?php echo $adresse_index ?>/contact">Contact</a></div>
            </div></td>
        </tr>
      </table></td>
  </tr>
  <tr>
    <td bgcolor="#FFFFFF"> 
      <div align="center" class="text">Script r&eacute;alis&eacute; par floptwo 
        (floptwo@gmail.com)</div></td>
  </tr>
</table>
<?php
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * 
 * script réalisé par floptwo (floptwo@gmail.com)
 * * * * * * * * * * * * * * * * * * * * * * * * * * */
?>
</body>
</html>

Conclusion

Noubliez pas de bien configurer le .htaccess avant de le tester
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Historique

12 juin 2006 01:02:30 :
Corriger quelques fautes et j'ai rajouté quelques explications.
14 juin 2006 01:23:10 :
Mise a jour de procéder, mais ya comme un bug que je n'arrive pas a résoudre, mais ca fonctionne.

Commentaires et avis

signaler à un administrateur
Commentaire de pcgpegase le 11/06/2006 22:47:15

Bonjour,

Interessant comme source :) Cela faisait un certain temps que je cherchais quelque chose de similaire ;)

Par contre, quand je clic sur "calendrier" il me dit :
The requested URL /calendrier was not found on this server.

Mais quand je clic sur "contact" il affiche bien contact.php :x

bye

signaler à un administrateur
Commentaire de audayls le 11/06/2006 23:17:25

Bonsoir,
En gros c'est en quelque sorte de l'URL Rewriting avec PHP non ?

signaler à un administrateur
Commentaire de floptwo le 11/06/2006 23:23:42

Salut !
Je ne sais pas ce qu'est de l'URL Rewriting, je me renseignerai.

Pour ce script j'ai mis vraiment la base, si vous comprenez le principe vous pouvez faire de grande choses. Moi, je le developpe beaucoup plus pour mon site mais comme les explication serai redondantes...
Tant mieux si ca vous plait !  ;)

signaler à un administrateur
Commentaire de floptwo le 11/06/2006 23:33:51

Resalut!
Donc j'ai lu quelques articles sur l'URL Rewriting, et donc oui on peut dire que c'est un peut ça.
En tout cas si ça ne l'est pas il serait facile d'en faire une imitation efficace.

signaler à un administrateur
Commentaire de WhiteDwarf le 12/06/2006 03:00:32

Salut,

Le seul problème, c'est que tu peux pas utiliser les stats du serveur, vu que toutes tes connexions aboutissent à des 404, lol... et je ne sais pas comment réagissent les moteurs de recherche par rapport à ca... :p

L'idée est sympas et bien mise en oeuvre..

A mon sens l'url rewritting est plus simple (quoi que les regex c'est pas encore mon truc), et surtout pas besoin de faire un switch... si t'a vraiment beaucoup de pages c'est long à faire.

pcgpegase => je pense que le problème avec la page contact c'est au niveau de l'include car il y a une majuscule dans le nom du fichier... certain serveurs ne font pas la différence et d'autres la font :) Ca dépend si c'est Windows ou Linux :)

@++

signaler à un administrateur
Commentaire de Palleas_44 le 12/06/2006 13:43:46

Si mes souvenirs sont bons c'est la méthode utilisée sur linuxfr ^o)

signaler à un administrateur
Commentaire de abdoulax le 12/06/2006 15:33:53

Je veux pas parler trop vite mais je crois que l'URL rewriting est la meilleur façon d'être référencé par les moteurs... Je ne suis pas un expert en la matière mais ce code est belle et bien de l'url rewriting. Par contre j'ai pas essayé mais à mon avis ça ne marche pas sous free...

Par contre ce qui marche sous free c'est :
<?php
$param = $_SERVER['QUERY_STRING'];
$para = explode("/",$param);

if ( $para[0] == "compte" )
include("compte.php);
/* ...... etc */
?>

ça par contre ce n'est pas de l'url rewriting, et ça donnerai http://lesitefree.free.fr/?compte
Y a d'autre solution encore plus poussé ms celle ci est assez simple à utiliser...

Have fun

signaler à un administrateur
Commentaire de Palleas_44 le 12/06/2006 16:49:13

L'url rewriting est effectivement desactivé chez free mais pourquoi le script de flowtwo ne marcherait il pas ? Tu as la possibilité d'utiliser les htaccess chez free pour la gestion des erreurs donc pas de soucis jpense ^o)

signaler à un administrateur
Commentaire de abdoulax le 12/06/2006 16:59:55

En faite ça marche en partie, mais y a des soucis, par exemple si tu tape http://lesite.free.fr/contact et qu'un fichier contact.php existe celui-ci sera affiché. Cependant je pense qu'il doit y avoir moyen de configurer ça avec le htaccess... Je m'ettais penché sur la question mais je me suis vite arrêté, cependant je pense qu'il doit etre possible d'utiliser le principe avec un peu de bricolage. Mais je sais que quand j'ai essayé j'ai eu plein de soucis. Le truc aussi c'est que mes testes je les ai fait sur un site existant, or je pense que si on commence le site dès le début avec cette technique il doit y avoir moyen de s'en sortir...

Enfin voili voilou,

Have fun

signaler à un administrateur
Commentaire de floptwo le 12/06/2006 17:38:10

Salut!

Tu peux resoudre ton probleme facilement en observant le _SERVER["REQUEST_URI"] que te retourne ton serveur.

J'ai fais les essais depuis un site http://www.site.com/monsite/index.php
donc le _SERVER["REQUEST_URI"] retournait "/monsite/"
Mais si ton index est à la racine (http://www.site.com/index.php) le _SERVER["REQUEST_URI"] devrait te retourner "/" donc apres l'explode il n'y a rien de la tableau $tab.
Donc pour une URL qui serait http://www.site.com/ton_url le _SERVER["REQUEST_URI"] retournera /ton_url et donc tu devra tester le $tab[0] au lieu du $tab[1].

Ce script requiert une petite configuration adapté à son propre serveur pour qu'il fonctionne.
Je pourrai le modifier pour qu'il s'adapte mais ca sera pas avant la fin de la semaine et la configuration du htaccess sera toujours à faire.

signaler à un administrateur
Commentaire de kankrelune le 13/06/2006 03:11:06

Ouep... marrant comme technique mais deux problèmes... .. .

-1- chaud voir impossible à mettre en oeuvre pour un gros site et/ou à l'architecture complexe

-2- ça risque de se gater si tu passe des variable en $_GET

pour le référencement ça ne change rien normalement... .. .

@ abdoulax... ce code est une alternative à l'url rewriting mais ça n'en est pas... par contre il est vrai que les bots des moteurs de recherche (surtout google) sont frileux avec les url contenant beaucoups de variables passées via $_GET et que l'url rewriting est la meilleur manière d'optimiser le référencement sur ce point... mais il ne faut pas perdre de vue que ce n'est pas le seul paramètre à prendre en compte... .. .

@ tchaOo°

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

URL Rewriting & .htaccess [ par dorian53 ] Bonjour,j'aimerais pouvoir tester l'URL Rewriting en local sur mon PC. Je suis sous ephp 1.7. Pour le moment j'ai laissé toutes les config par défaut, urlrewriting htaccess free [ par rockclimber ] Voila, je m'explique : J'aimerais que mon site chez free g&#232;re l'url-rewriting. Pour cela je passe par l'erreur 404, donc je redirige dans mon fi htaccess et fin de session [ par jyhes ] Bonjour,La question est forcément saugrenie, mais existe-t-il un moyen de clore une session ouverte sur un dossier protégé par un htacces/htpasswd ?A1 Fichier HTACCESS [ par slhuilli ] Bjr,Quelqu'un aurat il déjàç développé un outiil PHP générant un fichier .HTACCESS car j'ai beaucoup de mal d l'écrire.Merci de vos réponses.SLSébasti Url rewriting (htaccess) [ par levampiremarius ] Bonjour, Voil&#224;, j'ai un petit probl&#232;me avec mon syst&#232;me d'url rewriting. Tout d'abord je vous donne le contenu de mon htaccess Rewri url rewriting [ par LaurentKOogar ] Bonjourvoila, je voudrais faire une url rewriting sur un annauire qui a 12 000 pages index&#233;s dans GooglePas compliquer au niveau du rewriting ave [prob] Image Jpeg - php - URL Rewriting [ par ouned ] bonjour,voici mon probl&#232;mej'ai un fichier .HTACCESS qui r&#233;&#233;crit une url pour acc&#232;der &#224; une image :RewriteRule ^websites\/b2n\ URL rewriting [ par Anthotill ] Bonjour &#224; tous !Je me tire les cheveux pour trouver un mod URL rewriting.sur ce site j'ai trouver ceci : http://www.phpcs.com/code.aspx?ID=33296& URL rewriting simple problème [ par bricethenetman ] Bonjour, je viens de trouver cette source http://www.phpcs.com/code.aspx?ID=33296&nbsp;mais je n'arrive pas &#224; la configurer (je d&#233;bute en ur url rewriting [ par titeuf974 ] bonjour,je souhaierai 'rewriter', les pages du livre de mon site. je souhaiterai passer de la structure suivante :www.monsite.com/guestbook.php?lang=f


Nos sponsors

Sondage...

CalendriCode

Septembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
2930     

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,38 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.