Phần thích hợp của .htaccess của tôi trông như thế này:Vấn đề chuyển hướng 403 Forbidden đến 404 Not Found
Và nó tạo ra các phản ứng sau:
- /bao gồm 403
- /include/404
- /include/config.inc 403
Tôi có thể nói bằng cách nhìn vào mẫu của tôi rằng vấn đề có thể nằm trong phần (/ .*) nhưng mọi thứ tôi đã thử đều cho tôi kết quả tương tự; thay vì liên tục nhận được 404 tôi nhận được 404 cho một trường hợp và 403 cho mọi thứ khác. Điều gì sai với biểu thức tôi đang sử dụng? Ngoài ra kể từ khi tôi phải làm điều này cho một vài thư mục là có một cách tiếp cận chăn mà sẽ cho phép tôi chuyển đổi tất cả 403 phản ứng 404?
UPDATE: tôi đã tìm thấy rằng bằng cách loại bỏ các FileMatch tôi nhận được kết quả tốt hơn, vì vậy .htaccess của tôi bây giờ trông như thế này:
Options -Indexes
RedirectMatch 404 ^/include(/.*)?$ # Added dlamblin's first suggestion
Và tạo ra các phản ứng sau:
- /bao gồm 404
- /include/404
- /include/config.inc 403
UPDATE: Điều thú vị là đủ Tôi đã phát hiện ra rằng những điều sau đây tạo ra sản lượng khác nhau:
RedirectMatch 404 ^/include(/?|/.*)$
RedirectMatch 404 ^/template(/?|/.*)$
Các mô hình mẫu hoạt động trên tất cả các trường hợp tuy nhiên bao gồm vẫn tạo ra 403 cho tất cả các file trong bao gồm (ví dụ /include/config.inc) Đây có phải là vấn đề với tên thư mục và không phải là vấn đề với tệp .htaccess không?
CẬP NHẬT: Thông tin sau trong .htaccess của tôi xung đột với chuyển hướng khi truy cập /include/config.inc.
<FilesMatch config>
Order allow,deny
Deny from all
</FilesMatch>
Đã lâu rồi, nhưng tôi muốn đề nghị bạn có thể giải quyết tất cả những vấn đề này bằng cách chỉ đưa các mẫu và mẫu của bạn vào đâu đó bên ngoài gốc tài liệu của bạn; đó là cách khó khăn nhất để tăng tốc và nó có tải ít hơn trên Apache để khởi động! –
Giải pháp nhanh nhất và đơn giản nhất chỉ cần chỉ thị 'ErrorDocument' và trang PHP cho lỗi 404: [Chỉ cần sử dụng' http_response_code'.] (Http://stackoverflow.com/a/18109452/1134080) Không cần phải gây rối với ' RedirectMatch', 'RewriteEngine', v.v. – ADTC