X

VirtualHost 403 forbidden en apache [Solucionado]

A la hora de desarrollar aplicaciones web, u otras basadas en apache, te puedes encontrar con problemas. Esta vez te cuento como solucionar error 403 forbidden en apache y virtualhost.

Este método te va a ser últil en Linux, pues se basa en revisar la configuración del servicio y también en el sistema de archivos y permisos. No descarto que en alguna actualización sea necesario también en WSL.

Cómo arreglar error 403 forbidden virtualhost apache

Tras dejar configurado o puesto en marcha apache, has intentado abrir la web que tengas en la carpeta concreta y te ha dado error 403. Esto no suele ser difícil de solucionar, pero tendrás que revisar varios puntos, ya que generalmente es por algo que no está bien configurado (o falta), o por que el usuario de apache no puede ejecutar los archivos.

Lo primero, revisar que hayas creado y habilitado el sitio en apache. Para eso vete a la carpeta de las configuraciones de apache:

cd /etc/apache2/sites-available

Una vez ahí puedes hacer ls -l y ver si tienes el archivo de configuración del sitio que intentas revisar. Deberías tener algo como 000-default.conf y vichaunter.conf que será tu sitio configurado. Por si no lo tienes te dejo un ejemplo de cómo debería parecer este archivo:

sudo nano vichaunter.conf

y dentro poner algo así:

<VirtualHost *:80>
       ServerAdmin webmaster@localhost
       DocumentRoot /var/www/vichaunter

       ServerName vichaunter.local
       ServerAlias www.vichaunter.local

       ErrorLog ${APACHE_LOG_DIR}/vichaunter-error.log
       CustomLog ${APACHE_LOG_DIR}/vichaunter-access.log combined

       <Directory /var/www/vichaunter/>
               Options +FollowSymLinks
               AllowOverride All
               Order allow,deny
               allow from all
       </Directory>
</VirtualHost>

Cambia la ruta de vichaunter por la carpeta donde tengas tu proyecto.

Cómo habilitar el sitio en apache

Vale, ya lo tenemos creado, pero no bastará con que reinicies el servidor de apache, pues la configuración solo está creada pero no habilitada. Para eso tienes que ejecutar este comando:

sudo a2ensite vichaunter.conf

Ahora sí que debes reiniciar el servidor de apache con

sudo service apache2 restart

Arreglar que apache no tenga permiso de ejecución y salga forbidden

Si después de esto aún te da problemas, aún queda una cosa por hacer antes de profundizar.

Suele ser porque los archivos de la carpeta donde está la web o aplicación no son ejecutables, y podrás solucionarlo con un comando sencillo:

sudo chmod +x /var/www/vichaunter

Si aun así no te funciona puedes ir más lejos y ejecutar:

sudo chmod -R +xr  /var/www/vichaunter

Aunque no suele ser necesario, y como es para desarrollo no habría ningún problema mientras sea en local.

Revisar los permisos de los archivos

Por otro lado también conviene que le eches un ojo a los permisos de los archivos. Muchas veces los creamos con un usuario en concreto y el usuario de apache no tiene acceso de lectura.

Puedes ejecutar este otro comando para arreglarlo:

sudo chown -R www-data.www-data /var/www/vichaunter

Por supuesto en todos los comandos de arriba debes cambiar /var/www/vichaunter por la ruta a la carpeta del sitio que estés habilitando.

También recuerda que para poder acceder desde tu equipo local con la ruta vichaunter.local debes habilitarlo en el archivo /etc/hosts. Edítalo y añade esta línea al final:

sudo nano /etc/hosts

127.0.0.1 vichaunter.local

Así con todas las urls que quieras que se resuelvan desde el navegador contra tu servidor local. No es necesario reiniciar ni nada, pero es posible que tengas que poner http:// en algunos navegadores para que no te salga el buscador.

Si aun así estás teniendo problemas con este u otro error dímelo y te echo un cable en los comentarios. Recuerda reiniciar apache o incluso el equipo si se resiste tras configurar.

¿Has podido resolverlo? ¿Qué versión de linux usas? Comenta y comparte.

VicHaunter:
    Categorías: Ayuda

Ver comentarios (7)

  • Y esta fue la conf que implemente de acuerdo al tutorial

    ServerAdmin webmaster@localhost
    DocumentRoot /home/ubuntu/cursophp

    ServerName cursophp.local
    ServerAlias http://www.cursophp.local

    ErrorLog ${APACHE_LOG_DIR}/cursophp-error.log
    CustomLog ${APACHE_LOG_DIR}/cursophp-access.log combined

    Options +FollowSymLinks
    AllowOverride
    All Order allow,deny
    allow from all

    Al habilitar esta conf no dejaba recargar el apache, con la configuracion por default si activo las opciones del Directoru como en este archivo, igualmente no me permite recargar apache, gracias por la atencion, saludos

    • Te recomiendo que mejor dejes el archivo 000-default sin modificar.

      
              ServerAdmin webmaster@localhost
              DocumentRoot /var/www/html
      
              ErrorLog ${APACHE_LOG_DIR}/error.log
              CustomLog ${APACHE_LOG_DIR}/access.log combined
      
              
                      Options +FollowSymLinks
                      AllowOverride All
                      Order allow,deny
                      allow from all
              
      

      Luego en los demás archivos ya pongas todas las configuraciones para cada dominio, por ejemplo cursophp.local.conf (en la carpeta sites available):

      
              ServerAdmin webmaster@localhost
              DocumentRoot /home/ubuntu/cursophp
      
      		ServerName cursophp.local 
      		ServerAlias www.cursophp.local	
      		
              ErrorLog ${APACHE_LOG_DIR}/cursophp-error.log
              CustomLog ${APACHE_LOG_DIR}/cursophp-access.log combined
      
              <Directory /home/ubuntu/cursophp/				 
                      Options +FollowSymLinks
                      AllowOverride All
                      Order allow,deny
                      allow from all
              
      

      Y por último
      sudo a2ensite cursophp.local.conf

      Y reinicias el servidor de apache.

  • Hola VicHaunter:
    esta es la configuracion del archivo 000-default,conf

    # The ServerName directive sets the request scheme, hostname and port that
    # the server uses to identify itself. This is used when creating
    # redirection URLs. In the context of virtual hosts, the ServerName
    # specifies what hostname must appear in the request's Host: header to
    # match this virtual host. For the default virtual host (this file) this
    # value is not decisive as it is used as a last resort host regardless.
    # However, you must set it for any further virtual host explicitly.

    ServerName cursophp.local
    ServerAlias http://www.cursophp.local

    ServerAdmin webmaster@localhost
    DocumentRoot /home/ubuntu/cursophp

    # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
    # error, crit, alert, emerg.
    # It is also possible to configure the loglevel for particular
    # modules, e.g.
    #LogLevel info ssl:warn

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    # For most configuration files from conf-available/, which are
    # enabled or disabled at a global level, it is possible to
    # include a line for only one particular virtual host. For example the
    # following line enables the CGI configuration for this host only
    # after it has been globally disabled with "a2disconf"

    # AllowOverride All
    # Order allow,deny
    # Deprecated
    # Allow from all
    # Deprecated
    # --New way of doing it Required all granted

    # vim: syntax=apache ts=4 sw=4 sts=4 sr noet

  • Hola, Buenas noches VicHaunter, tengo el mismo problema con Apache, he seguido el tutorial al pie de la letra y el problema se ha hecho mas grande ya que me no me permite acceder de ninguna forma al servidor, quiero realizar un proyecto e instale LAMP para probar en una maquina local, cuando termine de instalar todos los componentes me aparecia la pagina de inicio de apache y al verificar el php tambien me confirmaba que estaba activo, pero hasta ahi, al habilitar la conf de la carpeta donde tengo el proyecto dejo de enviar el forbidden y me indico que no podia iniciar apache, lo deshabilite con a2disite y ya me aparece nuevamente el forbidden, ya es la segunda vez que instalo el LAMP y caigo en este error, me podras apoyar? el sistema es Ubuntu 16.04(xenial) y lo tengo en una maquina virtual, saludos.

    • Pégame la configuración de tu sitio de Apache, la de la carpeta sites-available. Generalmente no necesitas reinstalar, será tema de configuración o permisos

Artículo relacionado
Los comentarios de Disqus están cargando....

Como todos, usamos cookies.