tag attribute html apache vhosts

attribute - title tag html



Apache dando 403 errores prohibidos. (5)

Acabo de solucionar este problema después de luchar durante unos días. Esto es lo que funcionó para mí:

Primero, revise su archivo de error_log Apache y vea el mensaje de error más reciente.

  • Si dice algo como:

    access to /mySite denied (filesystem path ''/Users/myusername/Sites/mySite'') because search permissions are missing on a component of the path

    entonces hay un problema con sus permisos de archivo. Puede corregirlos ejecutando estos comandos desde el terminal:

    $ cd /Users/myusername/Sites/mySite $ find . -type f -exec chmod 644 {} /; $ find . -type d -exec chmod 755 {} /;

    Luego, actualice la URL donde debería estar su sitio web (como http://localhost/mySite ). Si aún recibe un error 403, y si Apache error_log aún dice lo mismo, suba progresivamente su árbol de directorios, ajustando los permisos del directorio a medida que avanza. Puedes hacerlo desde la terminal:

    $ cd .. $ chmod 755 mySite

    Si es necesario, continúa con:

    $ cd .. $ chmod Sites

    y, si es necesario,

    $ cd .. $ chmod myusername

    NO ir más lejos que eso. Podrías realmente arruinar tu sistema. Si aún recibe el error que dice que search permissions are missing on a component of the path , no sé qué debe hacer. Sin embargo, encontré un error diferente (el de abajo) que solucioné de la siguiente manera:

  • Si su error_log dice algo como:

    client denied by server configuration: /Users/myusername/Sites/mySite

    entonces su problema no es con sus permisos de archivo, sino con su configuración de Apache.

    Observe que en su archivo httpd.conf , verá una configuración predeterminada como esta (Apache 2.4+):

    <Directory /> AllowOverride none Require all denied </Directory>

    o como este (Apache 2.2):

    <Directory /> Order deny,allow Deny from all </Directory>

    ¡NO cambies esto! No anularemos estos permisos globalmente, sino en su archivo httpd-vhosts.conf . Sin embargo, primero asegúrese de que la línea de Include de httpd.conf en httpd.conf tenga comentarios . Debe tener un aspecto como este. (Su ruta exacta puede ser diferente.)

    # Virtual hosts Include etc/extra/httpd-vhosts.conf

    Ahora, abra el archivo httpd-vhosts.conf que acaba de Include d. Agregue una entrada para su página web si aún no tiene una. Debería verse algo como esto. Las rutas de DocumentRoot y del Directory deben ser idénticas y deben apuntar a donde esté ubicado su archivo index.html o index.php . Para mí, eso está dentro del subdirectorio public .

    Para Apache 2.2:

    <VirtualHost *:80> # ServerAdmin [email protected] DocumentRoot "/Users/myusername/Sites/mySite/public" ServerName mysite # ErrorLog "logs/dummy-host2.example.com-error_log" # CustomLog "logs/dummy-host2.example.com-access_log" common <Directory "/Users/myusername/Sites/mySite/public"> Options Indexes FollowSymLinks Includes ExecCGI AllowOverride All Order allow,deny Allow from all Require all granted </Directory> </VirtualHost>

    Las lineas diciendo

    AllowOverride All Require all granted

    Son críticos para Apache 2.4+. Sin estos, no anulará la configuración predeterminada de Apache especificada en httpd.conf . Tenga en cuenta que si está utilizando Apache 2.2, estas líneas deberían decir

    Order allow,deny Allow from all

    Este cambio ha sido una fuente importante de confusión para los usuarios de Google de este problema, como I, porque copiar y pegar estas líneas de Apache 2.2 no funcionará en Apache 2.4+, y las líneas de Apache 2.2 todavía se encuentran comúnmente en los hilos de ayuda más antiguos.

    Una vez que haya guardado los cambios, reinicie Apache . El comando para esto dependerá de su sistema operativo e instalación, por lo tanto, búsquelo por separado si necesita ayuda con él.

¡Espero que esto ayude a alguien más!

PD: Si tiene problemas para encontrar estos archivos .conf , intente ejecutar el comando de find , como:

$ find / -name httpd.conf

Ok, entonces he configurado dos hosts virtuales y están funcionando bien. ambos albergan proyectos web simples y funcionan bien con http://project1 y http://project2 en el navegador.

De todos modos, he venido a añadir otro vhost. Edité el archivo / etc / hosts con 127.0.0.1 project3 y también actualicé el archivo httpd-vhosts.conf copiando y pegando las entradas anteriores para project2 y editando la ruta del archivo.

He comprobado todos los permisos de archivos y carpetas (de hecho, copié y pegué de project2) y simplemente puse un mensaje de "hola mundo" en el archivo index.php.

Cuando accedo a http://project3

¿Por qué es esto? Simplemente puedo averiguar qué paso he omitido, ya que todo parece estar configurado correctamente.

Gracias por adelantado.


El servidor puede necesitar permiso de lectura para su directorio de inicio y .htaccess en el mismo


Mira esto :

  • Apache puede acceder físicamente al archivo (el usuario que ejecuta apache, probablemente www-data o apache, puede acceder al archivo en el sistema de archivos)
  • Apache puede listar el contenido de la carpeta (permiso de lectura)
  • Apache tiene una directiva "Permitir" para esa carpeta. Debe haber uno para / var / www /, puede verificar vhost por defecto, por ejemplo.

Además, puede ver el archivo error.log (que generalmente se encuentra en /var/log/apache2/error.log) que describe por qué recibió el error 403 exactamente.

Finalmente, es posible que desee reiniciar Apache, solo para asegurarse de que se aplica toda la configuración. Esto se puede hacer generalmente con /etc/init.d/apache2 restart . En algún sistema, el script se llamará httpd. Sólo averigua.


Puede intentar deshabilitar selinux e intentarlo una vez más usando el siguiente comando

setenforce 0


restorecon funciona de la siguiente manera:

restorecon -v -R /var/www/html/