2010-03-12 8 views
0

Je deviens fou avec .htaccess et règle de réécriture. Je voudrais comprendre comment cela fonctionne, je déteste, de toute façon voici mon problème.Règle de réécriture Htaccess

(très simple pour la plupart d'entre vous)

Mon site a une page principale index.php. C'est la seule page, toutes les autres sont gérées par celui-ci.

j'ai fait simple RewriteRule:

RewriteRule ^([a-zA-Z0-9_-]+)$ index.php?page=$1 

pour ce faire:

/index.php?page=VAL -> /VAL 

Mais je ne sais pas comment créer une règle pour cela:

/index.php?page=VAL&var1=VAL2&var2=VAL3 etc. 

Je d comme une URL finale comme:

/VAL/VAL2/VAL3 etc. 

Merci

Répondre

1

Vous pouvez simplement réécrire la demande à votre index.php et analyser le chemin URI demandé avec PHP:

$_SERVER['REQUEST_URI_PATH'] = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH); 
$segments = implode('/', ltrim($_SERVER['REQUEST_URI_PATH'], '/')); 

Et la règle que:

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule !^index\.php$ index.php [L] 

Cela va réécrire chaque requête, c'est le chemin URI ne peut pas être mappé à un fichier existant, à votre index.php.

+0

ok, si j'ai bien compris, le RewriteCond vérifie si l'uripath n'est pas un fichier, mais pouvez-vous m'expliquer ce que fait RewriteRule? merci – Marcx

+0

@Marcx: Le 'RewriteRule' va réécrire n'importe quelle requête, son chemin URI (sans préfixe de chemin) n'est pas' index.php', 'index.php'. – Gumbo

+0

ah merci .. donc '!' Pas 'index.php' (préfixe de chemin) sera réécrire à' index.php' ok merci beaucoup .. – Marcx

Questions connexes