2012-04-09 115 views
6

我試圖在我的虛擬主機(Dreamhost)上安裝Recess PHP framework。它包括以下的.htaccess:.htaccess RewriteRule導致403 Forbidden

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

此作品在我的機器(在Windows 7 XAMPP 1.7.7)上正常,但導致在403禁止錯誤的一些文件我的虛擬主機。所有目錄權限設置爲755,並且所有文件權限都設置爲644. PHP在擁有文件的同一用戶下運行。

以下網址導致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

以下網址不會:

  • 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

什麼會導致這種情況發生?

回答

8

事實證明,我需要改變線路:

Options FollowSymLinks 

到:

Options +FollowSymLinks 
+0

太棒了!我不會覺得這很容易,你爲我節省了很多時間。先謝謝你! – orafaelreis 2014-05-06 10:43:36

+0

非常感謝!我現在可以放棄瘋狂的藥片。 – freeworlder 2015-08-08 13:00:35

2

不熟悉該框架,但它看起來像其他地方有一些行或它可能需要調整。

雖然我承認我沒有國防部重寫專家,看起來像第一行是指導所有的請求request_file.html,那麼第2行,如果該文件不存在,在網上調出boostrap.php 3.

你的問題可能在於boostrap.php,看看在這個腳本中發生了什麼,以及如何處理請求。調試器可能在該步驟中很有用。雖然你可能會得到這個工作,但它似乎可能不是最佳的,因爲它是。例如,我相信通常有一個規則可以避免將.sg,.jpg .css指向您的路由腳本。這樣的事情:

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

這樣可以避免php處理這些類型文件的請求的開銷。甚至還有更多的事情要考慮強大的應用程序生產使用,只是調整你的規則,所以一切都路由適當,事情應該沒問題。