2010-06-04 5 views
2

Voici ce que je veux faire:Besoin d'aide avec un RewriteRule - Apache

http://www.mysite.com/  > http://www.mysite.com/index.php 
http://www.mysite.com/asd > http://www.mysite.com/index.php?page=$1 

asd sera le nom de la page (s) qui se joint en annexe à index.php de la variable $ page.

Ma règle de réécriture actuelle redirige correctement la page demandée mais ne parvient pas à charger la page index.php par défaut.

RewriteEngine On 
RewriteRule ^([\w]*)$ /index.php?page=$1 [L] 

Comment résoudre ce problème? :/

Répondre

1

Vous devez avoir une règle qui correspond à seulement la /:

RewriteRule ^/$ /index.php [L] 

Et puis votre autre:

RewriteRule ^/([\w]+)$ /index.php?page=$1 [L] 
+0

Est-ce que [\ w] 'n'est pas redondant? Je pense que "\ w" est suffisant. – Amarghosh

+0

Je dirais que c'était redondant. Je trouve que RewriteRules a tendance à ne pas fonctionner de manière inattendue, donc je l'ai laissé po –

1

Pour moi, je passe simplement le chemin complet vers la sommaire.

RewriteRule ^.*$ /index.php?page=$0 [L,QSA] 

Ensuite, utilisez list() et explode() pour morceau vers le haut.

list($param1, $param2, $param3) = explode("/", $_GET['page']); 

Sinon, vous aurez besoin de deux règles.

Ou utilisez la même règle et sur la page/avez un paramètre? Page = = vide.