2008-11-24 36 views
5

Có vẻ như không có nhiều thông tin về chủ đề này vì vậy tôi sẽ phác thảo vấn đề cụ thể của tôi sau đó có lẽ chúng ta có thể định hình câu hỏi và câu trả lời vào một cái gì đó phổ biến hơn một chút.Mod-rewrite Trailing Slash Issue

tôi có viết lại quy tắc này

RewriteEngine On 
RewriteBase /bookkeepers/ 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.+)/?$ index.php?franchise=$1 

Đó là những thay đổi URL này

http://example.com/location/kings-lynn 

Into này một

http://example.com/location/index.php?franchise=kings-lynn 

Vấn đề tôi đang gặp là nếu tôi thêm một dấu cắt giảm

http://example.com/location/kings-lynn/ 

sau đó chuỗi truy vấn được trả về như

franchise=kings-lynn/ 

và vì một lý do không ai trong số tôi file CSS và Javascript đang được nạp.

Bất kỳ ý tưởng nào?

+0

Tôi đã đăng câu trả lời về kết hợp cụm từ thông dụng. Để khắc phục sự cố CSS/Javascript, bạn nên xem nhật ký máy chủ để xem những gì đang được yêu cầu. Bạn có thể phải thêm [R, L] vào RewriteRule đó, nhưng tôi chưa bao giờ hiểu phần đó. –

Trả lời

10

Như @Paul Tomblin cho biết,. + Đang tham lam; có nghĩa là, nó phù hợp nhiều nhất có thể.

^(.+[^/])/?$ yêu cầu nó khớp với mọi thứ, theo sau là ký tự không phải là /, sau đó theo sau là tùy chọn /. Điều này có tác dụng không chụp dấu /.

Lý do có thể xảy ra nhất khiến CSS và Javascript của bạn không hoạt động là bạn đang sử dụng đường dẫn tương đối, như src = "my.js". Khi có dấu gạch chéo, nó trông giống như một thư mục, do đó trình duyệt của bạn sẽ tìm kiếm /location/kings-lynn/my.js. Bạn có thể sửa lỗi này đơn giản bằng cách sử dụng đường dẫn tuyệt đối cho tệp của bạn (ví dụ: /location/my.js).

6

Dường như (. +) Đang được tham lam phù hợp. Trong trường hợp đó, bạn có thể thử

RewriteRule ^(.+[^/])/?$ index.php?franchise=$1 

Điều này đảm bảo rằng nhóm đầu tiên (trong ngoặc đơn) không kết thúc bằng dấu gạch chéo.

+0

Rất đẹp. Điều này cố định vấn đề dấu gạch chéo của tôi (nhưng không phải là thiếu vấn đề CSS). Đừng cho rằng bạn có thể nói chuyện về cách thức hoạt động của bạn? – Binarytales

+0

Cụm từ thông dụng khớp với một nhóm gồm 1 hoặc nhiều ký tự bất kỳ, theo sau là bất kỳ ký tự nào khác ngoài dấu gạch chéo. Bên ngoài nhóm bạn có thể tùy chọn kết hợp dấu gạch chéo. Trước khi tôi thay đổi, dấu gạch chéo có thể đã kết thúc trong nhóm. –