Faire de la réécriture d'url sans le mod_rewrite

Contenu du snippet

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 / Exemple :


// 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.

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.