2012-01-07 20 views
7

Tôi muốn hiển thị thông báo 404 (Không tìm thấy), khi người dùng cố truy cập thư mục trái phép. Tôi không muốn sử dụng các trang bị cấm. Tôi đã thử với mã dưới đây, nhưng nó không hoạt động..htaccess để chuyển hướng tới thông báo 404 (Không tìm thấy) trên truy cập thư mục trái phép

RedirectMatch 404 ^/htaccess/.*$ 

Bất kỳ ý tưởng nào về những gì có thể xảy ra?

+0

Tại sao bạn không muốn sử dụng các trang bị cấm? – Dan

+0

@ Tôi có thể nghĩ rằng để làm cho thư mục vô hình. – rekire

+0

@rekire ya u r correct. tôi có thể làm cho mọi thư mục bất khả chiến bại bằng cách sử dụng RedirectMatch 404/nhưng tôi phải đặt htaccess trong mỗi thư mục. bất kỳ cách nào để ảnh hưởng đến tất cả các thư mục con? – Leon

Trả lời

11

thử thêm dòng sau vào file .htaccess bạn

#if the URI starts with htaccess, return a 404 
RewriteRule ^htaccess/ - [R=404,L,NC] 

Sửa

ví dụ như hệ thống/chức năng, hệ thống/lớp, ...

Nếu bạn có một nhiều thư mục sau đó sử dụng một RewriteCond như dưới đây vì nó dễ đọc hơn nhiều thư mục trong một RewriteRule hoặc nhiều RewriteRules, trùng lặp mảnh 404

RewriteCond %{REQUEST_URI} ^htaccess/ [NC,OR] 
RewriteCond %{REQUEST_URI} ^system/function/ [NC,OR] 
#just make sure the last rule does NOT have an OR 
RewriteCond %{REQUEST_URI} ^system/class/ [NC] 
RewriteRule . - [R=404,L,NC] 
+0

tôi có toàn bộ chi nhánh của thư mục, ví dụ như hệ thống/chức năng, hệ thống/lớp, nếu người dùng cố gắng truy cập vào các thư mục này bằng uri, chỉ cần hiển thị chúng trang 404. làm tôi nid để viết một htaccess trong mỗi thư mục? – Leon

+0

@Leon xem chỉnh sửa ở trên –

+0

Đó là một giải pháp thực sự tốt đẹp +1 – rekire

0

R = 404 không phải là giá trị R hợp lệ, nó phải nằm trong phạm vi 300-399 hoặc sẽ bị bỏ qua. Tốt hơn là chỉ cần chuyển hướng đến một url không tồn tại mà không bị chặn bởi các quy tắc khác, điều này sẽ kích hoạt sai sót của bạn.

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