2012-04-13 13 views
0

Ich habe den folgenden Code:Benutzerfreundliche URLS .htaccess

RewriteRule ^fishing/([^/]*)/([^/]*) fishery.php?url=$2&region=$1 [L] 
RewriteRule ^fishing/([^/]*) region.php?region=$1 [L]  

, wenn ich in domain.com/fishing/fife geben Sie dann zeigt es die richtige region.php Datei.

aber wenn ich domain.com/fishing/file/ mit dem/am Ende eintippe, dann lädt es stattdessen die Seite fishery.php. Wie kann ich das verhindern?

Zweitens ist es schlecht für SEO-Zwecke, wenn es als/fishing/Fife anstelle von fishing/fife.php lädt? Nach all dem ist eine Seite kein Verzeichnis? Wenn es egal ist, dann würde ich es viel lieber nicht die .php haben, da es viel aufgeräumter aussieht.

Vielen Dank im Voraus

Antwort

2

ich denke, das sollte es tun:

RewriteRule ^fishing/([^/]*)/([^/]+) fishery.php?url=$2&region=$1 [L] 
RewriteRule ^fishing/([^/]*)/?$ region.php?region=$1 [L] 

Auch gibt es nichts falsch mit einem „Verzeichnis“ url statt einer Seite hat, infact ich denke, das besser sein könnte nicht schlimmer für SEO ...

+0

Vielen Dank für die Hilfe. Das hat perfekt funktioniert. Könnte ich Sie um eine Erklärung bitten? auch irgendwelche Ratschläge zum zweiten Teil? –

+0

Ich änderte das '*' in ein '+' (im ersten Muster) als '+' bedeutet 1-or-more ('*' bedeutet 0-oder-mehr), so dass es nicht mehr übereinstimmen wird, wenn nichts nach dem zweiter Schrägstrich. Für das zweite Muster gebe ich ein '/?' ('?' Bedeutet 0-oder-eins des vorhergehenden Zeichens), so dass es ein '/' am Ende entspricht, wenn es da ist und dann ein '$', was nur das Ende bedeutet der URL, ist es in diesem Fall nicht wirklich notwendig, aber ich finde es eine gute Übung, zu signalisieren, wo das Ende der URL im Muster ist, um unerwartete Musterkonflikte zu vermeiden – joshuahealy

+0

Noch einmal vielen Dank für Ihre Hilfe. –