2012-04-09 13 views
6

Estoy tratando de instalar el Recess PHP framework en mi servidor web (Dreamhost). Incluye los siguientes .htaccess:.htaccess RewriteRule causando 403 Forbidden

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

Esto funciona bien en mi máquina (XAMPP 1.7.7 en Windows 7), pero los resultados en 403 errores prohibido en algunos archivos de mi proveedor de alojamiento web. Todos los permisos de directorio se establecen en 755 y todos los permisos de archivo se establecen en 644. PHP se ejecuta con el mismo usuario que posee los archivos.

Las siguientes URL resultan en 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-LICENCIA

Los siguientes URL no lo hacen:

  • 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

¿Qué causaría que esto ¿ocurrir?

Respuesta

8

Como resultado, tenía que cambiar la línea:

Options FollowSymLinks 

a:

Options +FollowSymLinks 
+0

genial! No lo encontraré demasiado fácil, me ahorras mucho tiempo. ¡Gracias de antemano! – orafaelreis

+0

¡Muchas gracias! Puedo guardar las píldoras locas ahora. – freeworlder

2

No estoy familiarizado con ese marco, pero parece que hay algunas líneas en otro lugar o puede que sea necesario ajustarlo.

Aunque ciertamente no soy un experto mod reescribir, se parece a primera línea se dirige a todas las solicitudes request_file.html, a continuación, en la línea 2 si el archivo no existe se llama boostrap.php en la línea 3.

Su problema puede estar en boostrap.php, vea qué pasa en ese script y cómo se maneja la solicitud. Un depurador puede ser útil en ese paso. Aunque puede hacer que esto funcione, me parece que puede no ser óptimo, como es. Por ejemplo, creo que generalmente hay un conjunto de reglas que evita havings .gif, .jpg .css dirigido a su secuencia de comandos de enrutamiento. Algo como esto:

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

Esto evita la sobrecarga de tener php manejar las solicitudes para esos tipos de archivos. Incluso habría más cosas que considerar para un uso sólido de la producción de aplicaciones, solo modifique sus reglas para que todo se enrute correctamente y las cosas estén bien.

Cuestiones relacionadas