apache .htaccess rewrite httpd.conf

apache - Opciones FollowSymLinks o SymLinksIfOwnerMatch está desactivado



.htaccess rewrite (5)

Observe que el directorio donde está viviendo su aplicación web no está incluido en otro directorio principal que tiene restricciones de FollowSymLinks .

La solución es habilitar FollowSymLinks en el directorio superior (directorio principal) o mover su aplicación web a un directorio fuera del alcance del "no FollowSymLinks " en el directorio principal.

Por ejemplo, la próxima configuración de apache podría ser un problema y seguramente reproduce el problema:

<VirtualHost *:80> ... <Directory "D:/"> Options Indexes </Directory> <Directory "D:/mywebfolder/"> Options Indexes FollowSymLinks </Directory> ... </VirtualHost>

Para evitar este problema:

<VirtualHost *:80> ... <Directory "D:/"> Options Indexes FollowSymLinks </Directory> ... ... </VirtualHost>

O mueva su D:/mywebfolder/ a otra unidad, por ejemplo, E:/mywebfolder

He leído casi todo lo posible sobre este tema y no pude encontrar nada que pudiera resolver mi problema. Este es el log de erorr que obtengo: las opciones FollowSymLinks o SymLinksIfOwnerMatch están desactivadas, lo que implica que la directiva RewriteRule está prohibida: /var/www/vhosts/site.com/httpdocs/cgi-bin/cron.pl

Cuando accedo al sitio obtengo 403 Prohibido "No tienes permiso para acceder a este documento". error.

Modifiqué mi .htaccess para tener esto:

Options +FollowSymLinks +SymLinksIfOwnerMatch AddDefaultCharset utf-8 RewriteEngine on RewriteCond %{HTTP:Authorization} ^(.*) RewriteRule ^(.*) - [E=HTTP_CGI_AUTHORIZATION:%1] . . .

También agregué esto a httpd.conf:

AddHandler cgi-script .cgi AddHandler cgi-script .pl <Directory /> Options -ExecCGI FollowSymLinks -Includes -IncludesNOEXEC -Indexes -MultiViews -SymLinksIfOwnerMatch AllowOverride All </Directory>

Realmente, ¿qué puedo hacer ahora?


Pon esto en tu directorio raíz:

<Directory /> #AllowOverride none Require all denied Options FollowSymLinks Options SymLinksIfOwnerMatch </Directory> <Directory "root"> Options FollowSymLinks Options SymLinksIfOwnerMatch </Directory>


Recientemente tuve un error similar y lo solucioné para mí. Una posible causa raíz para este problema es que la carpeta de destino (a la que se realiza la reescritura), mencionada en el texto de error, no tiene establecida la opción FollowSymLinks. De su mensaje de error, veo que esta carpeta es: /var/www/vhosts/site.com/httpdocs/cgi-bin/

En este caso, puede usar en .htaccess de esa carpeta específica:

Options +FollowSymLinks

Esta configuración anterior solo agregará FollowSymLinks para esta carpeta además de las opciones existentes (eso es lo que + significa, solo agrega esta opción).

Ejemplo:

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

Este fue el caso donde tuve el error y así fue como lo arreglé. En mi caso, había una carpeta diferente (no cgi-bin) y un archivo diferente (un archivo PHP).

Advertencia:

  • Asegúrese de que realmente desea reescribir la URL para apuntar a cgi-bin. Si tiene scripts importantes aquí, puede tener un impacto en la seguridad y es posible que no desee que se realice esta reescritura. Si realiza esta configuración en cgi-bin, las personas podrían ver la salida de sus scripts en cgi-bin, lo que podría no ser bueno a menos que sepa lo que está haciendo.

Notas:

  • Tenga en cuenta que, dependiendo de la configuración local / configuración del navegador, la actualización de .htaccess puede no proporcionar el efecto en el navegador al instante, cuando ingresa la URL y puede mostrar el mismo resultado de inmediato, sin considerar sus modificaciones a .htaccess. En este caso, es posible que deba reiniciar el navegador para ver el efecto de sus modificaciones. Para los principiantes esto puede consumir mucho tiempo al tratar de corregir y confundir por qué no funcionará. Además, si modifica httpd.conf (no es el caso en mi publicación), debe reiniciar el servidor web.

  • Mientras investigaba la reparación de mi error, noté en la web que este error también se ha presentado para algunas personas, para una instalación de Plesk, en cuyo caso la solución a ese problema específico era editar / etc / apache2 / mods-enabled / dir. conf, y actualizar DirectoryIndex, y mover index.php antes de index.pl.


Tenga en cuenta esto de la opción de docs de apache :

Opciones de mezcla con a + o - con los que no tienen una sintaxis válida, y se rechazarán durante el inicio del servidor mediante la comprobación de sintaxis con un aborto.

Está mezclando opciones con +/- y sin en su bloque (es decir, consulte FollowSymLinks).

Tuve el mismo error exacto que aparece hoy en uno de mis sitios donde había olvidado agregar un "+" al frente de una opción. Agregué el "+" y ahora funciona.


Tuve este problema y finalmente encontré que debido a que tenía php configurado con fast-cgi en lugar de como módulo apache, tuve que actualizar el /conf/extra/httpd-fcgid.conf y luego agregué FollowSymLinks a este bloque

<Files ~ "/.php$"> Options ExecCGI FollowSymLinks AddHandler fcgid-script .php FcgidWrapper "d:/php/php-cgi.exe" .php </Files>

Espero que esto ayude a alguien y ahorre las horas que perdí.