Nếu bạn chọn quy tắc ghi đè Apache, thay vì ánh xạ/bộ lọc máy chủ ứng dụng (như tôi đã làm), bạn cũng có thể muốn làm nhiều hơn là chỉ tìm "^ ([0-9a-zA-Z] +) $ "
Bạn có thể muốn xác nhận url không phải là thư mục hoặc tệp tồn tại nếu apache đang ở phía trước và phân phối tài nguyên không phải jsp. Và xác nhận rằng JSP tồn tại và thực hiện chuyển qua chứ không phải chuyển hướng và nối thêm bất kỳ chuỗi truy vấn nào có thể.
RewriteCond %{REQUEST_URI} !^/.*\.(jsp)$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME}.jsp -f
RewriteRule ^(.+)$ /$1.jsp [PT,QSA,L]
Và để đảm bảo rằng người dùng chỉ thấy điều này qua/tìm kiếm, không /search.jsp sau đó bạn muốn viết lại hoàn toàn ngược với cũng
RewriteRule ^(.+)\.jsp$ $1 [R=301,QSA,L]
RewriteRule ^(.+)index$ $1 [R=301,QSA,L]
Đây là một ý tưởng tốt cho mục đích SEO quá rằng công cụ tìm kiếm không giúp bạn sao chép nội dung ở nhiều url.
Nguồn
2009-02-11 21:11:34
Đó không phải là câu trả lời mà anh ấy đang tìm kiếm nhưng tôi nghĩ đó là cách tiếp cận đơn giản nhất và do đó tốt nhất. +1 –
Tôi không có chuyên gia regex, nhưng điều này không chỉ hoạt động nếu tệp jsp có chứa chữ cái hoặc số trong tên? Ví dụ: 'advanced-search.jsp' sẽ không hoạt động. – styfle
@styfle ... yes ... thêm \ - trước] để hỗ trợ dấu gạch ngang –