.htaccess RewriteRule, вызывающий запрет 403

Я пытаюсь установить инфраструктуру Recess PHP на своем веб-хостинге (Dreamhost). Он включает в себя следующие .htaccess:

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

Это отлично работает на моей машине (XAMPP 1.7.7 на Windows 7), но приводит к 403 Запрещенные ошибки на некоторых файлах моего веб-хоста. Для всех разрешений для каталога установлено значение 755, а для всех разрешений для файлов установлено значение 644. PHP работает под одним и тем же пользователем, которому принадлежат файлы.

Следующие URL-адреса приводят к 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

Следующие URL-адреса:

  • http://test.dd.moofz.com/.gitignore
  • http://img.ruphp.com/php/logo_huge_domains.gif
  • http://test.dd.moofz.com/README.textile
  • http://test.dd.moofz.com/the-book-of-recess.pdf

Что могло бы случиться так?

Как оказалось, мне нужно было изменить линию:

 Options FollowSymLinks 

чтобы:

 Options +FollowSymLinks 

Не знакомы с этой базой, но похоже, что есть какие-то строки в другом месте или может потребоваться настройка.

Хотя я, по общему признанию, не эксперт по перезаписи мод, похоже, что первая строка направляет все запросы на request_file.html, а затем в строке 2, если файл не существует, он вызывает boostrap.php в строке 3.

Ваша проблема может заключаться в boostrap.php, см., Что происходит в этом скрипте и как обрабатывается запрос. На этом этапе может оказаться полезным отладчик. Хотя вы можете заставить это работать, мне кажется, что это не оптимально, как есть . Например, я считаю, что обычно есть набор правил, который избегает havings .gif, .jpg .css, направленного на ваш скрипт маршрутизации. Что-то вроде этого:

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

Это позволяет избежать накладных расходов на то, что php обрабатывает запросы на эти типы файлов. Было бы даже больше вещей, которые следует учитывать для надежного использования производственных приложений, просто подстраивайте свои правила, чтобы все было направлено правильно, и все должно быть хорошо.