Je travaille actuellement sur un projet et j'essaie de rendre les liens jolis.
Nous avons des URL comme ceci: http://subdomain.domain.com/DynamicCountry/DynamicName/file.php
Ce que j'essaie de faire est de définir le RewriteBase sur /DynamicCountry/DynamicName
. Est-ce possible d'utiliser les variables de Mod_Rewrite?
Pourvu que vous soyez satisfait de jolies URL qui ne se terminent pas par /
mais ne comportent aucune extension de fichier, telle que .php
, par exemple:http://subdomain.domain.com/DynamicCountry/DynamicName/file
alors vous pourriez essayer cette solution.
http://subdomain.domain.com/.htaccess
:
RewriteEngine on
RewriteRule ^(lib|theme|uploads|images|ajax) - [L]
RewriteCond $1 !^(index\.php|api|theme|images|robots\.txt|sitemap\.xml)
RewriteRule ^(.*)$ /index.php/$1 [L]
http://subdomain.domain.com/index.php
(en remplaçant la valeur de la variable $sPath
par le chemin linux correct pour votre environnement d'hébergement):
<?php
$sPath='/var/www/subdomain.domain.com/';
$sAlias=isset($_SERVER["REQUEST_URI"])?substr($_SERVER["REQUEST_URI"],1):'';
if(strpos($sAlias,'?')>0) $sAlias=substr($sAlias,0,strpos($sAlias,'?'));
if(strpos($sAlias,'?')<1) $sAlias='default';
if(!file_exists($sPath.$sAlias.'php')) $sAlias='file-not-found';
require_once($sPath.$sAlias.'php');
Créez ensuite un sous-dossier pages
dans le dossier racine Web du sous-domaine. Dans celui-ci, vous pourriez avoir des sous-dossiers DynamicCountry
et DynamicName
, puis file.php
. Dans cet exemple, la jolie URL:http://subdomain.domain.com/DynamicCountry/DynamicName/file
montrerait la page:/var/www/subdomain.domain.com/pages/DynamicCountry/DynamicName/file.php
En cas d'erreur HTTP 404, vous aurez besoin d'un fichier présent sur:/var/www/subdomain.domain.com/pages/file-not-found.php
afin d’assurer une boucle infinie d’erreurs File Not Found ne se produit pas! Pour des raisons principalement de référencement, n'oubliez pas d'utiliser PHP code header('HTTP/1.0 404 Not Found');
avant la sortie de tout code HTML. Cela aide les moteurs de recherche à identifier les pages réelles des pages d'erreur.
Bien entendu, vous pouvez modifier cette solution selon vos besoins, mais nous espérons que cela vous donnera un bon concept de base de travail.