2008-11-27 10 views
5

To jest problem dotyczący wielu witryn. Mam wiele stron z plikami .htaccess z wielokrotnością linia podobna do:Jak wymusić zakończenie niektórych stron w ukośniku [.htaccess]

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

Oznacza to, że zarówno www.domain.com/page-one i www.domain.com/page-one/ będzie zarówno obciążenie www.domain.com/index.php?page=page-one

Jednak zawsze słyszę, że dobrą praktyką SEO jest używanie tylko jednego adresu URL na stronę, więc to, co chcę zrobić, www.domena.com/page-one przekierowuje na stronę www.domena.com/page-one/ za pomocą pliku .htaccess.

Uwaga odpowiedź jestem NIE szukasz jest usunięcie? $ Od końca linii jak to będzie po prostu spowodować www.domain.com/page-one stać się 404 linków.

Odpowiedz

4

Oto urywek zmusić wszystko kończy się ukośnikiem

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

Nienormowany, ale czy nie możesz tego po prostu zrobić?

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

Użyj przekierowania HTTP, aby wysyłać użytkowników, którzy używają niewłaściwego adresu URL do poprawnego. Można na przykład użyć:

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

przed własnym RewriteRule.

Uwaga: spowoduje to również dodanie ukośników do adresów URL, które kończą się nazwą pliku. Jeśli masz takie adresy URL, musisz wprowadzić wyjątki przed przekierowaniem.

Zobacz także FAQ entry on trailing slashes i example page for mod_rewrite!