2012-08-25 22 views
25

Estoy usando un servidor Lamp en mi computadora. Empecé a usar laravel php framework. En mi .htaccess, si uso Options + FollowSymLinks, obtengo el error 500. Y Si comento hacia fuera, tengo que usar index.php en todas las direcciones de mis ..example:¿Qué es Options + FollowSymLinks?

/~ytsejam/blog/public/index.php/login

Yo uso Arch Linux. ¿Hay alguna manera de resolverlo?

corregir: he resuelto esto mediante el uso de hosts virtuales. Y eliminar index.php de application/config/application.php en la carpeta laravel.

+1

Bueno, el registro del servidor dice ¿qué pasa con los 500? –

+0

¡Error del servidor! El servidor encontró un error interno y no pudo completar su solicitud. O el servidor está sobrecargado o hubo un error en un script CGI. – ytsejam

+0

[Sáb 25 de agosto 10:23:33 2012] [alerta] [cliente :: 1] /home/ytsejam/public_html/blog/public/.htaccess: Opciones no permitidas aquí – ytsejam

Respuesta

10

Puede intentar buscar en Internet "Opciones de .htaccess no permitidas aquí".

Una sugerencia que encontré (a través de Google) es:

Compruebe para asegurarse de que su archivo httpd.conf tiene AllowOverride All.

Un archivo .htaccess que funciona para mí en Linux Mint (que se encuentra en la carpeta laravel/público):

# Apache configuration file 
# http://httpd.apache.org/docs/2.2/mod/quickreference.html 

# Turning on the rewrite engine is necessary for the following rules and 
# features. "+FollowSymLinks" must be enabled for this to work symbolically. 

<IfModule mod_rewrite.c> 
    Options +FollowSymLinks 
    RewriteEngine On 
</IfModule> 

# For all files not found in the file system, reroute the request to the 
# "index.php" front controller, keeping the query string intact 

<IfModule mod_rewrite.c> 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^(.*)$ index.php/$1 [L] 
</IfModule> 

la esperanza que esto le ayuda. De lo contrario, podría hacer una pregunta en el foro de Laravel (http://forums.laravel.com/), hay algunas personas realmente útiles dando vueltas por allí.

3

¿Cómo sabe el servidor que debe extraer image.png de la carpeta/pictures cuando visita el sitio web y busca la carpeta/system/files/images en su navegador web? Un llamado enlace simbólico es el tipo que es responsable de este comportamiento. En algún lugar de tu sistema, hay un enlace simbólico que le dice a tu servidor "Si un visitante solicita /system/files/images/image.png entonces muéstrale /pictures/image.png".

¿Y cuál es la función de la configuración FollowSymLinks en esto?

FollowSymLinks se refiere a la seguridad del servidor. Al tratar con servidores web, no puede dejar las cosas indefinidas. Tienes que decir quién tiene acceso a qué. La configuración FollowSymLinks le dice a su servidor si debería o no seguir enlaces simbólicos. En otras palabras, si FollowSymLinks se deshabilitó en nuestro caso, la búsqueda en el archivo /system/files/images/image.png devolverá, dependiendo de otras configuraciones, el error 403 (acceso prohibido) o 404 (no encontrado).

http://www.maxi-pedia.com/FollowSymLinks

3

Parámetro Options FollowSymLinks le permite tener una symlink en su Webroot apuntando a algún otro archivo/dir. Con esta opción desactivada, Apache se negará a seguir dicho enlace simbólico. En su lugar, se puede usar Options SymLinksIfOwnerMatch más seguro; esto le permitirá vincular solo a otros archivos que usted posea.

Si usa la directiva Options en .htaccess con el parámetro que ha sido prohibido en la configuración principal de Apache, el servidor devolverá el código de error HTTP 500.

Las opciones .htaccess permitidas se definen por la directiva AllowOverride en el archivo de configuración principal de Apache. Para permitir enlaces simbólicos, esta directiva debe establecerse en All o Options.

Además de permitir el uso de enlaces simbólicos, también es necesaria esta directiva para permitir mod_rewrite en .htaccess contexto. Pero para esto, también se puede usar la opción más segura SymLinksIfOwnerMatch.

+1

¿Sabes * por qué * es necesario para 'mod_rewrite' en archivos .htaccess? He visto esa calificación en los documentos, pero no hay otra explicación que no sea "razones de seguridad" ... – jwd

+0

Sí, es para seguridad, ya que controla el uso de los archivos 'mod_rewrite' por' .htaccess'. Mejor sería si tuviera un parámetro separado, pero tal vez los módulos de Apache no pueden introducir nuevos parámetros para 'AllowOverride', por lo que han elegido uno de los existentes ... – Marki555

+1

Supongo que mi pregunta, dicho de otra manera, era: ¿Qué podría hacer? una persona maliciosa, lo que previene este requerimiento 'AllowOverride' adicional? No veo lo que realmente te compra ... – jwd

Cuestiones relacionadas