1. ¡OFERTA! con cupón "DIRVPS": hosting por $0,01 y también VPS Linux y Windows por $0,01 el primer mes por Interserver ← publi
    Descartar aviso
Descartar aviso
Al usar este sitio web, aceptas que nosotros y nuestros socios podamos establecer cookies para fines tales como personalizar el contenido y la publicidad. Más información.

Apache mod_rewrite - problemas de activación

Tema en 'Asuntos Técnicos' iniciado por ClusterIP, 19 May 2015.

  1. ClusterIP

    ClusterIP Usuario activo

    Empezaré diciendo que el sistema es Centos 6.6 manejado por Plesk 12. La versión de Apache es la 2.2.15 y PHP 5.3. El caso es que no consigo activar módulo mod_rewrite para que funcionen las directivas .htaccess de las páginas web alojadas en el servidor.

    Explico los pasos que he seguido hasta el momento:

    Edito el archivo de configuración de Apache:
    CODE, HTML o PHP Insertado:
    # vi /etc/httpd/conf/httpd.conf
    Localizo la línea > AllowOverride None y la sustituyo por AllowOverride All e indico el directorio base:
    CODE, HTML o PHP Insertado:
    <Directory "/var/www/vhosts"> (directorio dónde Plesk12 aloja los archivos web)
                 Options FollowSymLinks
                 AllowOverride All
    <Directory>
    Localizo la línea > AllowOverride controls what directives may be placed in .htaccess files y modifico el parámetro AllowOverride None a AllowOverride All:
    CODE, HTML o PHP Insertado:
    AllowOverride All
    Compruebo que está cargado el modulo mod_rewrite:
    CODE, HTML o PHP Insertado:
    LoadModule rewrite_module modules/mod_rewrite.so
    Reinicio el servidor Apache:
    CODE, HTML o PHP Insertado:
    # service httpd restart
    Genero el archivo phpinfo.php para comprobar si el módulo está cargado en la configuración:
    CODE, HTML o PHP Insertado:
    <?php
    phpinfo();
    phpinfo(INFO_MODULES);
    ?>
    Lo cargo en ejemplo.com/phpinfo.php y no muestra el bloque de módulos de Apache Loaded modules.

    Realizando estas modificaciones, el servidor sigue registrando error 500 cuando habilito .htaccess y mod_rewrite en Joomla. Busco en Parallels.com - http://kb.sp.parallels.com/es/124 y apunta la resolución al problema: Los archivos .htaccess pueden habilitarse añadiendo lo siguiente al archivo "/etc/httpd/conf.d/zz010_psa_httpd.conf":
    CODE, HTML o PHP Insertado:
    AccessFileName .htaccess
    
    <Directory "/var/www/vhosts">
    Options +All
    AllowOverride All
    Order allow,deny
    Allow from all
    </Directory>
    Reinicio apache:
    CODE, HTML o PHP Insertado:
    # service httpd stop
    # service httpd start
    En este punto ya no se que más hacer para habilitar el módulo. ¿Veis que me haya saltado algún paso o me falta algo (es evidente que si) por configurar?

    Gracias saludos
     
  2.  
  3. egrueda

    egrueda Usuario activo

    Cuando te da el error 500, ¿qué dice exactamente el log de apache?
     
  4. ClusterIP

    ClusterIP Usuario activo

    Al renombrar htaccess.txt a .htaccess.

    Estas son las alertas que presenta el log de la web:
    CODE, HTML o PHP Insertado:
    [Mon May 18 12:05:57 2015] [error] [client 212.188.108.124] Options FollowSymLinks or SymLinksIfOwnerMatch is off which implies that RewriteRule directive is forbidden: /var/www/vhosts/ejemplo.com/httpdocs/index.php, referer: http://www.ejemplo.com/
    
    [Mon May 18 17:03:31 2015] [alert] [client 188.165.15.32] /var/www/vhosts/ejemplo.com/httpdocs/.htaccess: Option FollowSymLinks not allowed here
    [Mon May 18 17:04:05 2015] [alert] [client 107.21.70.244] /var/www/vhosts/ejemplo.com/httpdocs/.htaccess: Option FollowSymLinks not allowed here
    [Mon May 18 17:05:40 2015] [alert] [client 54.167.44.174] /var/www/vhosts/ejemplo.com/httpdocs/.htaccess: Option FollowSymLinks not allowed here
    [Mon May 18 17:12:04 2015] [alert] [client 54.167.169.63] /var/www/vhosts/ejemplo.com/httpdocs/.htaccess: Option FollowSymLinks not allowed here
    [Mon May 18 17:17:45 2015] [alert] [client 54.167.44.174] /var/www/vhosts/ejemplo.com/httpdocs/.htaccess: Option FollowSymLinks not allowed here
    [Mon May 18 17:25:35 2015] [alert] [client 66.249.65.28] /var/www/vhosts/ejemplo.com/httpdocs/.htaccess: Option FollowSymLinks not allowed here
    [Mon May 18 17:25:51 2015] [alert] [client 188.165.15.32] /var/www/vhosts/ejemplo.com/httpdocs/.htaccess: Option FollowSymLinks not allowed here
    [Mon May 18 17:33:40 2015] [alert] [client 107.20.115.238] /var/www/vhosts/ejemplo.com/httpdocs/.htaccess: Option FollowSymLinks not allowed here
     
  5. egrueda

    egrueda Usuario activo

    Veo entonces que el problema viene con la directiva FollowSymLinks, que no está habilitada o existe un problema de propietario (chown) pero desde aquí no veo mucho más.
    Lo que veo raro es que tengas que modificar la configuración de apache para usar archivos .htaccess en plesk12, ¿eso es así? ¿no funcionan si no cambias la configuración? (el enlace de plesk que pones es de 2009)
     
  6. ClusterIP

    ClusterIP Usuario activo

    No funciona, por eso la modificación de Apache. ¿Te has fijado en el comentario que hago (punto 6º) sobre la no aparición de los módulos en php.ini?

    Cuando comento Options +FollowSymLinks en .htaccess el servidor envía un error 403 en vez de 500 y el log muestra:
    CODE, HTML o PHP Insertado:
    Options FollowSymLinks or SymLinksIfOwnerMatch is off which implies that RewriteRule directive is forbidden: /var/www/vhosts/ejemplo.com/httpdocs/
     
  7. egrueda

    egrueda Usuario activo

    Claro, el phpinfo te muestra los módulos de PHP que tengas cargados, no los módulos de Apache, es lógico.
    Para eso tienes el comando httpd -D DUMP_MODULES de apache
    ¿Puedes confirmar que los propietarios de los archivos están correctos dentro de /var/www/vhosts/ejemplo.com/httpdocs?
     
  8. ClusterIP

    ClusterIP Usuario activo

    Claaaaaaro! Acabo de comprobar que los permisos estaban mal. Los he modificado a:
    CODE, HTML o PHP Insertado:
     chown -R owner:psacln ejemplo.com/*
    Ahora el error a variado del 500 al 403. Por aquí anda la solución.

    El log me indica que:
    CODE, HTML o PHP Insertado:
    (13)Permission denied: /var/www/vhosts/ejemplo.com/httpdocs/.htaccess pcfg_openfile: unable to check htaccess file, ensure it is readable
     
  9. egrueda

    egrueda Usuario activo

    Ejecuta este comando y dame la salida:
    CODE, HTML o PHP Insertado:
    ls -l /var/www/vhosts/ejemplo.com/httpdocs/.htaccess
    ¡Cuidado! eso afecta a todos los directorios de la cuenta, no sólo al httpdocs
     
  10. ClusterIP

    ClusterIP Usuario activo

    CODE, HTML o PHP Insertado:
    -rw-r--r-- 1 owner root 3199 feb 20 20:29 /var/www/vhosts/ejemplo.com/httpd
    ocs/.htaccess
    El propietario es correcto pero el grupo ¿debe pereneceer a root? ¿creo que no verdad?
     
  11. egrueda

    egrueda Usuario activo

    Mmm... me temo que pueda haber algún problema de propietarios/permisos (¡o que has tecleado mal, jajaja!)
    Opción 1. Prueba a ver los permisos con alguna interfaz, como el midnight commander (mc) o la interfaz web de plesk
    Opción 2. Restaurar los permisos con las herramientas de plesk:
    /usr/local/psa/bin/repair --restore-vhosts-permissions
    (http://kb.odin.com/es/6572)
     
  12. ClusterIP

    ClusterIP Usuario activo

    Nada, sigue igual. ¡Que frustrante!
     
  13. ClusterIP

    ClusterIP Usuario activo

    El módulo está cargado, ¿porqué no trabaja entonces?:
    CODE, HTML o PHP Insertado:
    # httpd -t -D DUMP_MODULES | grep rewrite
    Syntax OK
    rewrite_module (shared)
     
  14. egrueda

    egrueda Usuario activo

    No, no tiene mucho sentido, debería pertenecer a psacln, si no me falla la memoria (como el resto de páginas web en ese directorio)
     
  15. ClusterIP

    ClusterIP Usuario activo

    Al realizar la restauración de permisos que me sugeriste se modificaron las páginas web al grupo psaserv
     
  16. ClusterIP

    ClusterIP Usuario activo

    ¡¡¡SOLUCIONADO!!!

    egrueda, antes de nada quiero agradecerte las molestias que te has tomado y la ayuda prestada. La solución está en la ruta:
    CODE, HTML o PHP Insertado:
    <Directory /var/www/vhosts/*/httpdocs>
        Options FollowSymLinks
        AllowOverride All
    </Directory>
    
    #
    # Note that from this point forward you must specifically allow
    # particular features to be enabled - so if something's not working as
    # you might expect, make sure that you have specifically enabled it
    # below.
    #
    
    #
    # This should be changed to whatever you set DocumentRoot to.
    #
    <Directory "/var/www/vhosts/*/httpdocs">
    De esta forma todo lo que está por debajo del directorio vhosts queda recojido por las directivas.
     


Alojamiento web, Hosting Reseller, Servidores Dedicados - All in Hosting


    
    
    
    
Blog · Sitios amigos: GuiaHosting · Unidominios · Interalta ·