2009-06-25 8 views
0

Ich bin neu in mod_rewrite und ich versuche Seiten an der Basis-Ebene von meiner Seite neu zu schreiben:Einfaches mod_rewrite Problem

www.site.com

ich eine der folgenden URLs www neu schreiben möge. site.com/main www.site.com/settings www.site.com/username

An: www.site.com/index.php?v=main www.site.com/index.php?v= Einstellungen www.site.com/index.php?v=username

Ich hatte dies funktioniert, als ich mod_rewrite unter www.site.com/directory/ eingerichtet hatte, aber nicht kann Finde heraus, wie man es mit www.site.com macht

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

Antwort

0

Sie haben ein extra "/" dort. Das sollte sein:

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

Sie müssen den Punkt innerhalb einer Zeichenklassen-Deklaration nicht verlassen. – Gumbo

1

Die richtige Regel wäre ...

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

Aber Sie könnten einige Probleme treffen - zum Beispiel, wenn Sie REAL Verzeichnisse haben - das sie umschreiben wird und verhindern, dass Sie benutze sie. Sie haben zwei Möglichkeiten, das Problem zu vermeiden, können Sie viele Regeln, wie folgt schreiben:

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

Oder Sie können ein „Verzeichnis vorgeben“ verwenden wie dieses ...

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

Im zweiten Beispiel , Ihre URL wäre www.site.com/Content/Directory/

Ich habe NC und QSA auf meine Attribute gesetzt - No Case und Query String Append. Sie sollten auf jeden Fall NC verwenden, und QSA ist in einigen Implementierungen nützlich.

0

ich auf, ob der Pfad sollte absetzen würde /settings oder /settings/ (Sie derzeit beide übereinstimmen) und so weiter (persönlich ziehe ich /settings.) Ich glaube, dass es eine gute Idee ist Pfade als nicht-mehrdeutig wie möglich zu machen. Wenn Sie Pfade passen wie /settings, würden Sie tun, wie folgt:

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

auch einen Blick auf die QSA Flagge haben, wenn Sie zusätzliche Abfrageparameter unterstützt werden sollen (zum Beispiel:. /settings?tab=password-index.php?v=settings&tab=password) Ich bin Ich erwähne es, weil mich das am Anfang gestört hat.