2011-08-26 38 views
5

Tôi không phải là rất tốt với mod_rewrite nhưng tôi thực sự cần nó ngay bây giờ.RewriteRule chuyển hướng mọi thứ ngoại trừ một thư mục

Tôi có toàn bộ trang web mới trong một thư mục có tên là site. Vì vậy, nếu bạn cần truy cập trang web mới, URL sẽ trông giống như http://domain.com/site/.... Bây giờ, tôi cần phải loại trừ số site khỏi URL nhưng vẫn trỏ đến /site/ EXCEPT cho một thư mục có tên là upload. Tôi có thể làm cái này như thế nào?

Vì vậy, http://domain.com/anything.exthttp://domain.com/anyfolder sẽ trỏ đến http://domain.com/site/... ngoại trừ domain.com/upload vẫn trỏ đến domain.com/upload.

Sau đó, một câu hỏi khác, giả định điều này chỉ tốt cho một giải pháp tạm thời hoặc không thực sự quan trọng (suy nghĩ về tốc độ và hiệu quả)?

Trả lời

7

(Giả sử bạn đang đặt các quy tắc trong một tập tin .htaccess trong thư mục gốc tài liệu của bạn) sử dụng này:

RewriteEngine on 
RewriteCond %{REQUEST_URI} !^upload 
RewriteRule (.*) site/$1 [L] 

Nếu bạn đang đưa nó vào httpd.conf, bạn cần phải thay đổi nó một chút:

RewriteEngine on 
RewriteCond %{REQUEST_URI} !^/upload 
RewriteRule (.*) /site$1 [L] 

Về câu hỏi thứ hai, cá nhân tôi không thích mod_rewrite và chắc chắn sẽ không sử dụng nó như một giải pháp vĩnh viễn trừ khi bạn hoàn toàn phải làm vậy. Điều này là do mod_rewrite khá kém hiệu quả, đặc biệt là trên các máy chủ bận, bởi vì nó phải chạy ít nhất một biểu thức chính quy trên mỗi yêu cầu gửi đến. Bạn nên luôn sử dụng cờ [L] để đảm bảo rằng không có quy tắc nào nhiều hơn mức cần thiết được xử lý.

Việc cấu trúc thư mục của bạn cũng giống như cách ứng dụng đề cập đến chúng luôn hiệu quả hơn. Ở trên sẽ giúp bạn làm việc, nhưng cố gắng không để nó ở vị trí quá lâu.

Tôi chắc chắn bạn đã biết điều này, nhưng here là tài liệu mod_rewrite.

+0

Khi tôi sử dụng nó (mã .htaccess), nó sẽ hiển thị Lỗi Máy chủ Nội bộ. Tôi không thể tìm thấy những gì là sai. – Boyd

+0

Nhật ký apache của bạn nói gì khi bạn gặp lỗi? ;-) – DaveRandom

+0

Khách hàng của tôi lưu trữ công ty đang là một nỗi đau trong ass. Họ không cung cấp hỗ trợ về các vấn đề htaccess và do đó không muốn gửi cho tôi bất kỳ bản ghi .. Họ đã nói rằng họ không giới hạn bất kỳ chức năng htaccess. Giả sử mã của tôi là ok, tôi chỉ nên tiếp tục liên hệ với công ty lưu trữ hoặc có thể có nguyên nhân khác của Lỗi Máy chủ Nội bộ không? (Đừng quên rằng nó chỉ hiển thị khi .htaccess chứa mã từ trên) – Boyd

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