2011-09-07 33 views
8

được tìm kiếm trong 2 ngày và không thể có được giải pháp đúng do tôi thiếu hiểu biết về mod_rewrite và hạn chế về thời gian cho dự án này để hy vọng ai đó có thể giúp đỡ..htaccess trong subdirectory 'overriding' parent htaccess

Mục đích

Để viết lại tất cả các yêu cầu đến index.php root nếu khách hàng không có cookie chính xác. Nếu khách hàng có cookie chính xác cho phép họ duyệt theo ý muốn.

Vấn đề

Các .htaccess trong thư mục con của tôi đang tiến hành precendence hơn htaccess gốc của tôi, vì vậy yêu cầu như www.mydomain.com/subdir/index.php arn't bị chuyển hướng.

.htaccess Rễ ta

Options FollowSymLinks 
RewriteEngine On 
RewriteBase/
RewriteCond %{HTTP_COOKIE} !^.*pass.*$ 
RewriteCond %{REQUEST_URI} !^/index.php$ 
RewriteRule ^(.*)$ http://www.mydomain.com/index.php?url=$0 [NC] 

subdir htaccess My

RewriteEngine On 
RewriteBase/
RewriteCond $1 !\.(gif|jpe?g|png)$ [NC] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ /index.php?/$1 [L] 

thông tin bổ sung

Lý tưởng nhất là tôi đang cố gắng để tạo ra một khu vực được bảo vệ mật khẩu, vì vậy tất cả các yêu cầu được chuyển đến index.php một mật khẩu có thể được nhập vào và khi xác minh một cookie được tạo ra, cho phép duyệt miễn phí các nội dung và thư mục con. Vì vậy, nếu có một cách tốt hơn để thực hiện điều này thì xin vui lòng cho tôi biết, và tôi không đi cho .htpasswd kể từ khi tôi cần đăng nhập tùy chỉnh, lỗi và các trang splash.

Ngoài ra, subdht .htaccess là trình xử lý URL ExpressionEngine.

Cảm ơn.

+0

Bất kể thế nào bạn khắc phục điều này, kiểm tra sự hiện diện của một cookie là không tốt Bảo vệ. Nó là tầm thường với giả mạo, và vì bạn không xác thực dữ liệu trong cookie, chỉ cần kiểm tra sự hiện diện của nó), hệ thống "bảo mật" của bạn là tầm thường để bỏ qua. –

+0

@ Chỉ là một gợi ý nhưng bạn đã nghĩ đến việc triển khai xác thực HTTP, nếu bạn chỉ tìm cách cho phép truy cập vào directorys: http://uk.php.net/manual/en/features.http-auth.php –

Trả lời

18

Để cho phép thực thi các quy tắc viết lại từ phụ huynh .htaccess (htaccess từ thư mục mẹ), bạn cần cho phép rõ ràng nó (Apache sẽ xử lý các quy tắc viết lại trong .htaccess hiện tại là duy nhất cần thực thi, miễn là URL được viết lại vẫn nằm trong cùng một thư mục con).

Bạn cần phải thêm dòng này vào .htaccess trong thư mục con:

RewriteOptions inherit 

Apache dẫn sử dụng: http://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewriteoptions