2009-06-25 8 views
0

Je suis nouveau à l'aide de mod_rewrite et essaie de réécrire les pages au niveau de base de mon site:problème simple mod_rewrite

www.site.com

Je veux réécrire l'une des URL suivantes www. site.com/main www.site.com/settings www.site.com/nomd'utilisateur

Pour: www.site.com/index.php?v=main www.site.com/index.php?v= paramètres www.site.com/index.php?v=username

J'ai eu ce travail quand j'avais mod_rewrite mis en place sous www.site.com/directory/ mais ne peut pas comprendre comment le faire fonctionner avec www.site.com

RewriteEngine On 
RewriteRule ^/([^/\.]+)/?$ index.php?v=$1 [L] 

Répondre

0

Vous avez un "/" supplémentaire là. Cela devrait être:

RewriteEngine On 
RewriteRule ^([^/\.]+)/?$ index.php?v=$1 [L] 
+0

Vous n'avez pas échapper le point dans une déclaration de classe de caractères. – Gumbo

1

La règle correcte serait ...

RewriteRule ^([^/\.]+)/?$ index.php?v=$1 [L,NC,QSA] 

Mais vous pourriez frapper quelques problèmes - par exemple si vous avez des répertoires REAL - cela va les réécrire trop et vous empêcher de les utiliser. Vous avez deux options pour éviter le problème, vous pouvez écrire beaucoup de règles, comme ceci:

RewriteRule ^Directory/?$ index.php?v=directory [L,NC,QSA] 

Ou vous pouvez utiliser un « faire semblant répertoire » comme ça ...

RewriteRule ^Content/([^/\.]+)/?$ index.php?v=$1 [L,NC,QSA] 

Dans le second exemple , votre URL serait www.site.com/Content/Directory/~~V~~singular~~3rd

J'ai mis NC et QSA sur mes attributs - Aucun cas et chaîne de requête Append. Vous devriez certainement utiliser NC, et QSA est utile dans certaines implémentations.

0

Je me contenterais si le chemin doit être /settings ou /settings/ (vous correspond actuellement à la fois) et ainsi de suite (personnellement, je préfère /settings.) Je crois que c'est une bonne idée de faire des chemins comme non ambigous possible. Si vous deviez faire correspondre les chemins comme /settings, vous feriez comme ceci:

RewriteEngine On 
RewriteRule ^(\w+)$ index.php?v=$1 [L] 

ont également un regard sur le drapeau QSA si vous souhaitez prendre en charge les paramètres de requête supplémentaires (par exemple:. /settings?tab=password-index.php?v=settings&tab=password) Je suis le mentionner parce que c'est quelque chose qui m'a dérangé au début.