begin process at 2010 09 09 10:46:07
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Astuces

 > FAIRE DE LA RÉÉCRITURE D'URL SANS LE MOD_REWRITE

FAIRE DE LA RÉÉCRITURE D'URL SANS LE MOD_REWRITE


 Information sur la source

Note :
9,67 / 10 - par 3 personnes
9,67 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Astuces Niveau :Initié Date de création :31/01/2004 Vu :7 604

Auteur : Hellway

Ecrire un message privé
Site perso
Commentaire sur cette source (5)
Ajouter un commentaire et/ou une note

 Description

Dans certains hébergeurs il n'y pas la possibilité d'utiliser l'url rewriting, et c'est bien dommage... Car l'url rewriting permet, entre autre, d'avoir un référencement de première classe dans les moteurs de recherche qui n'indexent pas les page contenant du CGI (à part google, mais pas plus de deux valeurs).

Bref, ce petit bout de code, fais exactement la même chose.

D'abord, créer un fichier .htaccess sur la racine de votre site contenant ceci :
ErrorDocument 404 /Site/index.php?Rub=Erreur&Act=404

Puis, créer vos liens avec la fonction Lien de cette manière :
<a href="<? echo Lien("Rub", "Article", "Act", "Lire"); ?>" title="Lire">Article 1</a>

Et enfin, insérer la fontion Lien()
Et le petit bout de script dans votre fichier index.php...

Source

  • // Réécrire les url ou pas
  • $URLReecrire=true;
  • // Cookies acceptés par le client ou pas
  • $AccepteCookie="true";
  • // Récupération des variables passés par url reformée
  • if(($URLReecrire)&&($Act=="404"))
  • {
  • header("Status: 200 OK");
  • $Act="";
  • if(!isset($_SERVER['REQUEST_URI']))
  • {
  • $_SERVER["REQUEST_URI"] = substr($_SERVER['argv'][0], strpos($_SERVER['argv'][0], ';') + 1);
  • }
  • $URL = explode ( ".", $_SERVER["REQUEST_URI"]);
  • foreach($URL as $V)
  • {
  • if (ereg ("([^/][a-zA-Z0-9]+)-([a-zA-Z0-9]+)", $V, $Val)) { $$Val[1]=$Val[2]; echo $$Val[1]; echo $Val[2];}
  • }
  • }
  • // Fontion de formation des URL
  • if($URLReecrire)
  • {
  • function Lien()
  • {
  • global $CookieAccepte;
  • global $Id;
  • global $Lang;
  • $Url="";
  • $NbArgument = func_num_args();
  • $Argument = func_get_args();
  • for ($i = 0; $i < $NbArgument; $i++)
  • {
  • if ($Argument[++$i])
  • {
  • if ($i>"1") { $Url .= "."; }
  • $Url .= $Argument[--$i] . "-" . $Argument[++$i];
  • }
  • }
  • if(!$CookieAccepte)
  • {
  • $Url .= "_Lang-$Lang";
  • if($Id) { $Url .= "_Id-$Id"; }
  • }
  • $Url .= ".html";
  • return $Url;
  • }
  • }
  • else
  • {
  • function Lien()
  • {
  • global $CookieAccepte;
  • global $Id;
  • global $Lang;
  • $Url = "?";
  • $NbArgument = func_num_args();
  • $Argument = func_get_args();
  • for ($i = 0; $i < $NbArgument; $i++)
  • {
  • if ($Argument[++$i])
  • {
  • if ($i>"1") { $Url .= "&amp;"; }
  • $Url .= $Argument[--$i] . "=" . $Argument[++$i];
  • }
  • }
  • if(!$CookieAccepte)
  • {
  • $Url .= "&amp;Lang=$Lang";
  • if($Id) { $Url .= "&amp;Id=$Id"; }
  • }
  • return $Url;
  • }
  • }
// Réécrire les url ou pas
$URLReecrire=true;
// Cookies acceptés par le client ou pas
$AccepteCookie="true";

// Récupération des variables passés par url reformée
if(($URLReecrire)&&($Act=="404"))
{
header("Status: 200 OK");
$Act="";
if(!isset($_SERVER['REQUEST_URI']))
{
$_SERVER["REQUEST_URI"] = substr($_SERVER['argv'][0], strpos($_SERVER['argv'][0], ';') + 1);
}

$URL = explode ( ".", $_SERVER["REQUEST_URI"]);
foreach($URL as $V)
{
if (ereg ("([^/][a-zA-Z0-9]+)-([a-zA-Z0-9]+)", $V, $Val)) { $$Val[1]=$Val[2]; echo $$Val[1]; echo $Val[2];}
}
}

// Fontion de formation des URL
if($URLReecrire)
{
function Lien()
{
global $CookieAccepte;
global $Id;
global $Lang;
$Url="";
$NbArgument = func_num_args();
$Argument = func_get_args();
	for ($i = 0; $i < $NbArgument; $i++)
	{
	if ($Argument[++$i])
		{
		if ($i>"1") { $Url .= "."; }
		$Url .= $Argument[--$i] . "-" . $Argument[++$i];
		}
	}
	if(!$CookieAccepte)
	{
	$Url .= "_Lang-$Lang";
	if($Id) { $Url .= "_Id-$Id"; }
	}
	$Url .= ".html";
return $Url;
}
}
else
{
function Lien()
{
global $CookieAccepte;
global $Id;
global $Lang;
$Url = "?";
$NbArgument = func_num_args();
$Argument = func_get_args();
	for ($i = 0; $i < $NbArgument; $i++)
	{
	if ($Argument[++$i])
		{
		if ($i>"1") { $Url .= "&amp;"; }
		$Url .= $Argument[--$i] . "=" . $Argument[++$i];
		}
	}
	if(!$CookieAccepte)
	{
	$Url .= "&amp;Lang=$Lang";
	if($Id) { $Url .= "&amp;Id=$Id"; }
	}
return $Url;
}
}

 Conclusion

Les varialbes $Lang et $Id sont mises dans des cookies, mais si le visiteur n'a pas activé les cookies, je les fais passer via l'url par la méthode GET.

Sinon, si vous laissez UrlReecrire à false, alors, la fonction lien créera des Url normales en CGI.

L'intérêt de ce script n'est pas à prouver, mais sachez qu'à mon grand désarroi, ce script ne marche pas sur free, mais chez moi, en local, tout tourne à merveille. Essayer chez multimania ou autre hébergeurs gratuits (voire payants) peut être une bonne idée.


 Sources du même auteur

MAIS QUE GÉNÉRE LE PHP ?
CONTRÔLER LES ERREURS MYSQL
LA RECHERCHE PAR MOT CLEF DANS UNE TABLE MYSQL AVEC PHP
Source avec Zip Source avec une capture XCMS V1.0B : LE CMS XHTML ET RSS :)

 Sources de la même categorie

MULTIPLIEZ LES TIMERS SUR VOS SCRIPTS PHP ET BENCHEZ FACILEM... par MonkeyIsBack
Source avec Zip Source avec une capture AFFICHER UNE IMAGE SANS IMAGE (GRÂCE AUX URI) par Astalavista
Source avec Zip EXÉCUTER UN SCRIPT PHP EN TANT QUE SERVICE WINDOW par ig3
Source avec Zip Source avec une capture LOGGER LE TEMPS D'EXÉCUTION DE VOS FONCTIONS PHP par djroulo
LA DIFFÉRENCE ENTRE DEUX DATE EN PLUSIEURS FORMATS par nasro81

Commentaires et avis

Commentaire de iubito le 02/02/2004 08:46:08

merde ça marche pas sur free tu dis :'(

Commentaire de Hellway le 02/02/2004 12:23:34

Non, malheureusement, et je sais pas trop pourquoi... Chez moi, en local, la redirection des erreurs fait que dans mon $_SERVER['REQUEST_URI']; j'ai l'URL qui a provoqué l'erreur, chez free, t'as l'URL de rediredtion et tu peux pas en faire cgrand chose...

Commentaire de perig le 10/10/2004 11:32:48

J'ai voulu utiliser ce principe sur mon site (c'est pas ton script mais c'est le meme principe avec le 404) et ca marche.
Le prob est que toutes mes pages ont pour titre  "Erreur 404" ce qui me conviens assez mal et j'arrive pas a redéfinir le titre !!!!

Commentaire de dom_ponge le 05/08/2006 02:16:22

Sa ne marche jamais vos affaire de Url Rewriting avec les 404.

Commentaire de safamine le 14/10/2007 15:15:46 10/10

ca marche merci

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Septembre 2010
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
27282930   

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), 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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,702 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales