2008-11-27 35 views
5

Đây là sự cố nhiều trang web. Tôi có nhiều trang web có các tệp .htaccess có nhiều dòng tương tự như:Làm cách nào để buộc một số trang kết thúc bằng dấu gạch chéo [.htaccess]

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

Điều này có nghĩa là cả www.domain.com/page-one và www.domain.com/page-one/ sẽ tải www.domain.com/index.php?page=page-one

Tuy nhiên tôi luôn nói rằng đó là thực hành SEO tốt để đảm bảo bạn chỉ sử dụng một URL trên mỗi trang vì vậy những gì tôi muốn làm www.domain.com/page-one để chuyển hướng đến www.domain.com/page-one/ qua tệp .htaccess.

Hãy lưu ý câu trả lời tôi là NOT tìm kiếm là xóa? $ Từ cuối dòng vì điều đó sẽ chỉ khiến www.domain.com/page-one trở thành liên kết 404.

Trả lời

4

Dưới đây là một đoạn để buộc tất cả mọi thứ để kết thúc với một dấu gạch chéo

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

Untested, nhưng bạn không thể làm điều này?

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

Sử dụng chuyển hướng HTTP để gửi cho người dùng sử dụng URL "sai" đúng URL. Ví dụ: bạn có thể sử dụng:

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

trước RewriteRule của riêng bạn.

Hãy cẩn thận, tuy nhiên: điều này cũng sẽ thêm dấu gạch chéo vào các URL kết thúc bằng tên tệp. Nếu bạn có các URL như vậy, bạn phải đặt ngoại lệ cho chúng trước khi chuyển hướng.

Xem thêm FAQ entry on trailing slashesexample page for mod_rewrite!

Các vấn đề liên quan