.htaccess url chuyển hướng mà không có dấu gạch chéo


9

Trong htaccess của tôi, tôi có một số url được viết lại như sau:

RewriteRule ^first-page$ /subdir/page.php?id_page=1 [QSA,L]
RewriteRule ^second-page$ /subdir/page.php?id_page=2 [QSA,L]
RewriteRule ^third-page$ /subdir/page.php?id_page=161 [QSA,L]

Vì vậy, kết quả cuối cùng là: www.mywebsite.com/subdir/first-page

Bây giờ tôi muốn biến điều này thành www.mywebsite.com/subdir/first-page/

Nếu không có www.mywebsite.com/subdir/first-pagelỗi 404.

Tôi đã thử mã này sau khi viết lại url, nhưng không hoạt động:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ $1/ [L,R=301]

Bất kỳ đề xuất? Cảm ơn bạn rất nhiều.

Câu trả lời:


4

Hãy thử một trong hai

RewriteRule ^first-page/$ /subdir/page.php?id_page=1 [QSA,L]
RewriteRule ^second-page/$ /subdir/page.php?id_page=2 [QSA,L]
RewriteRule ^third-page/$ /subdir/page.php?id_page=161 [QSA,L]

hoặc là

RewriteRule ^first-page /subdir/page.php?id_page=1 [QSA,L]
RewriteRule ^second-page /subdir/page.php?id_page=2 [QSA,L]
RewriteRule ^third-page /subdir/page.php?id_page=161 [QSA,L]

Nhân $vật nói với Apache rằng đây là phần cuối của chuỗi và không có thêm ký tự nào được mong đợi. Vì vậy, bạn sẽ phải thông báo cho nó để chấp nhận dấu gạch chéo ở cuối chuỗi hoặc để sẵn sàng cho bất kỳ ký tự phụ nào. Bạn có thể sử dụng ?cờ để làm dấu gạch chéo không bắt buộc, nhưng được chấp nhận nếu có, ví dụ:

RewriteRule ^first-page(/)?$ /subdir/page.php?id_page=1 [QSA,L]

Vì vậy, điều này sẽ không cho phép bất kỳ nhân vật nào khác ngoài dấu gạch chéo.

Hi vọng điêu nay co ich.


Cảm ơn người đàn ông! Thêm (/)? ở cuối url đã giải quyết vấn đề. Tuy nhiên, url ưa thích vẫn là url không có dấu gạch chéo. Bạn có thể vui lòng cho tôi biết tôi có thể làm gì để tạo URL với dấu gạch chéo như ưu tiên không?

0

Thử cái này

RewriteRule ^first-page($|/$) /subdir/page.php?id_page=1 [QSA,L]
RewriteRule ^second-page($|/$) /subdir/page.php?id_page=2 [QSA,L]
RewriteRule ^third-page($|/$) /subdir/page.php?id_page=161 [QSA,L]

($ | / $) - Nó cho phép cả www.mywebsite.com/subdir/first-pagewww.mywebsite.com/subdir/first-page/. Nó cũng đảm bảo không cho phép bất kỳ url không mong muốn như www.mywebsite.com/subdir/first-page/some-unwanted-text.

Nếu bạn muốn url với bất kỳ tham số nào bạn có thể sử dụng như sau

RewriteRule ^third-page/?$ /subdir/page.php?id_page=161 [QSA,L]
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.