2012-04-09 31 views
6

Tôi đang cố cài đặt Recess PHP framework trên máy chủ web của mình (Dreamhost). Nó bao gồm các .htaccess sau:.htaccess RewriteRule gây ra 403 Forbidden

Options FollowSymLinks 
RewriteEngine On 
RewriteRule ^([^.]+)$ $1.html [QSA] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)$ bootstrap.php [QSA,L] 

này hoạt động tốt trên máy tính của tôi (XAMPP 1.7.7 trên Windows 7) nhưng kết quả trong 403 lỗi Forbidden trên một số tập tin máy chủ web của tôi. Tất cả các quyền truy cập thư mục được đặt là 755 và tất cả các quyền của tệp được đặt thành 644. PHP chạy dưới cùng một người dùng sở hữu tệp.

Các URL sau dẫn đến 403s:

  • http://test.dd.moofz.com/
  • http://test.dd.moofz.com/recess-conf.php
  • http://test.dd.moofz.com/index.php
  • http://test.dd.moofz.com/bootstrap.php
  • http://test.dd.moofz.com/ MIT-LICENSE
.210

Các URL sau không:

  • http://test.dd.moofz.com/.gitignore
  • http://test.dd.moofz.com/httpd_logo_wide.gif
  • http://test.dd.moofz.com/README.textile
  • http://test.dd.moofz.com/the-book-of-recess.pdf

Điều gì sẽ gây ra điều này để xảy ra?

Trả lời

8

Khi nó quay ra, tôi cần phải thay đổi dòng:

Options FollowSymLinks 

tới:

Options +FollowSymLinks 
+0

tuyệt vời! Tôi sẽ không tìm thấy nó quá dễ dàng, bạn tiết kiệm cho tôi rất nhiều thời gian. Cảm ơn bạn trước! – orafaelreis

+0

Xin cảm ơn! Tôi có thể bỏ đi những viên thuốc điên. – freeworlder

2

Không quen với khuôn khổ đó, nhưng có vẻ như có một số dòng ở nơi khác hoặc có thể cần chỉnh sửa.

Mặc dù tôi phải thừa nhận là không có chuyên gia viết lại mod, trông giống như dòng đầu tiên được chỉ đạo tất cả các yêu cầu để request_file.html, sau đó trên dòng 2 nếu các tập tin không tồn tại nó gọi lên boostrap.php trên dòng 3.

Vấn đề của bạn có thể nằm trong tệp tin boostrap.php, xem điều gì sẽ xảy ra trong tập lệnh đó và cách xử lý yêu cầu. Trình gỡ lỗi có thể hữu ích ở bước đó. Mặc dù bạn có thể làm việc này, dường như với tôi, nó có vẻ là có thể không tối ưu là. Ví dụ, tôi tin rằng thường có một ruleset tránh havings .gif, .jpg .css hướng đến script định tuyến của bạn. Một cái gì đó như thế này:

RewriteCond $1 !^(favicon\.ico|favicon\.png|media|robots\.txt|crossdomain\.xml|css|js) 

Điều này tránh được việc phải xử lý yêu cầu cho các loại tệp đó. Thậm chí sẽ có nhiều điều để xem xét cho việc sử dụng sản xuất ứng dụng mạnh mẽ, chỉ cần tinh chỉnh các quy tắc của bạn để mọi thứ được định tuyến phù hợp và mọi thứ sẽ ổn.

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