2008-11-27 2 views
5

Dies ist ein Problem mit mehreren Sites. Ich habe viele Websites mit .htaccess-Dateien mit mehreren Zeile ähnlich:Wie kann ich erzwingen, dass einige Seiten mit einem Schrägstrich enden [.htaccess]

rewriterule ^(page-one|page-two|page-three)/?$ /index.php?page=$1 [L] 

Dies bedeutet, dass beide www.domain.com/page-one und www.domain.com/page-one/ werden beide Last www.domain.com/index.php?page=page-one

Allerdings wurde mir immer gesagt, dass es gute SEO-Praxis ist, sicherzustellen, dass Sie nur eine URL pro Seite verwenden, also was ich machen möchte www.domain.com/page-one, um auf www.domain.com/page-one/ über die .htaccess-Datei umzuleiten.

Bitte beachten Sie die Antwort Ich bin NICHT auf der Suche nach ist das Entfernen der? $ Vom Ende der Zeile als das wird nur dazu führen, dass www.domain.com/page-one ein 404-Link werden.

Antwort

4

Hier ist ein Ausschnitt alles zu zwingen, mit einem Schrägstrich

rewritecond %{REQUEST_FILENAME} !-f 
rewritecond %{REQUEST_URI} !(.*)/$ 
rewriterule ^(.*)$ http://%{HTTP_HOST}/$1/ [L,R=301] 
zu beenden
1

Ungetestet, aber können Sie das nicht tun?

RewriteRule ^(.*[^/])$ $1/ 
RewriteRule ^(page-one|page-two|page-three)?$ /index.php?page=$1 [L] 
2

Verwenden Sie eine HTTP-Weiterleitung, um Benutzer, die die "falsche" URL verwenden, an die richtige Adresse zu senden. Sie könnten zum Beispiel verwenden:

RewriteRule ^(.+[^/])$ $1/ [R] 

vor Ihrer eigenen RewriteRule.

Vorsicht, dies wird auch Schrägstriche zu URLs hinzufügen, die in einem Dateinamen enden. Wenn Sie solche URLs haben, müssen Sie Ausnahmen für sie vor der Weiterleitung setzen.

Siehe auch die FAQ entry on trailing slashes und die example page for mod_rewrite!

Verwandte Themen