2012-04-09 31 views
6

Próbuję zainstalować Recess PHP framework na moim hostingiem (Dreamhost). Obejmuje ona następujące .htaccess:. Htaccess RewriteRule powoduje 403 zabronione

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

to działa prawidłowo na moim komputerze (XAMPP 1.7.7 na Windows 7), ale wyniki w 403. błędów na niektóre plików mój hostingowego. Wszystkie uprawnienia katalogowe są ustawione na 755, a wszystkie uprawnienia do plików są ustawione na 644. PHP działa pod tym samym użytkownikiem, który jest właścicielem plików.

Następujące URL spowodować 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-LICENCJA

Następujące adresy URL nie:

  • 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

Co spowodowałoby to zdarzyć?

Odpowiedz

8

Jak się okazuje, musiałem zmienić linię:

Options FollowSymLinks 

do:

Options +FollowSymLinks 
+0

świetnie! Nie znajdę tego zbyt łatwo, oszczędzasz mi dużo czasu. Z góry dziękuję! – orafaelreis

+0

Wielkie dzięki! Teraz mogę odłożyć szalone pigułki. – freeworlder

2

Nie jest obeznany z tym schematem, ale wygląda na to, że istnieje kilka linii w innym miejscu lub może wymagać ulepszenia.

Choć co prawda nie jestem ekspertem mod rewrite, wygląda pierwszej linii kieruje wszystkie żądania do request_file.html, a następnie na linii 2, jeśli plik nie istnieje, to nazywa się boostrap.php na linii 3.

Twój problem może leżeć w boostrap.php, zobacz, co dzieje się w tym skrypcie i jak obsługiwane jest żądanie. Na tym etapie może być przydatny debugger. Chociaż możesz to uruchomić, wydaje mi się, że to może nie być optymalne, tak jak jest. Na przykład, wydaje mi się, że zazwyczaj istnieje zestaw reguł, które zapobiegają przechodzeniu .gif, .jpg .css kierowane do skryptu routingu. Coś takiego:

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

Pozwala to uniknąć narzutu na to, że php będzie obsługiwać żądania dotyczące tych typów plików. Będzie jeszcze więcej rzeczy do rozważenia na temat solidnego wykorzystania produkcji aplikacji, po prostu dostosuj swoje zasady, aby wszystko było poprawne, a wszystko powinno być w porządku.

Powiązane problemy