Habilitar mod_rewrite en apache. Problemas con .htaccess

Ayer nos peleamos un poco con esto en un cliente…a ver si le ayuda a alguien. En nuestro caso fue para cambiar los enlaces permanentes de WordPress, pero puede ser para cualquier symlink o para hacer que reconozca lo que pongamos en el fichero .htaccess.

  • Primero debe estar el módulo rewrite (mod_rewrite) cargado en apache. ¿Como vemos esto? Fácil:
    Crea un fichero y llámalo, por ejemplo phpinfo.php. Dentro pon lo siguiente.
    <?php
    phpinfo();
    ?>

    Súbelo por FTP a tu sitio web y ejecutalo en el navegador (por ejemplo http://www.midominio.com/phpinfo.php)
    Entonces verás toda la información del php y de apache. En un apartado verás los módulos cargados y tiene que mencionarse el mod_rewrite.
  • Si no está cargado tienes que añadirlo. Te pongo los pasos para OpenSuse, se que en Ubuntu es más fácil…compruebalo para tu distribución:
    -Abre (con permisos de escritura) el fichero: /etc/sysconfig/apache2
    -Busca la línea con algo como (los módulos pueden variar): APACHE_MODULES=”suexec access actions alias auth auth_dbm autoindex cgi dir env expires include log_config mime negotiation setenvif userdir ssl php4″
    Antes de la última ” añade rewrite.
    – Guardalo.
    -Ejecuta SuSEconfig para que se actualicen los cambios en apache.
    – Ejecuta  /etc/init.d/apache2 restart para que coja los cambios.
    – Vuelve a comprobar el phpinfo.php.
  • Si todavía no funciona puede que no se te permita poner ficheros .htaccess personalizados. Para cambiar esto edita tu fichero de configuración de apache…en OpenSuse es /etc/apache2/default-server.conf
    Aquí puedes hacer el cambio para el directorio raíz…pero yo prefiero hacerlo sólo para el que quiero..por seguridad. En casos normales sólo tendrás un dominio, yo tengo varios así que voy a la línea del que quiero y busco algo como :
    <Directory “/srv/www/htdocs/smythsys”>
    Debajo de esa línea pongo AllowOverride All que permite que te saltes la configuración con comandos de .htaccess.
    Guardo el fichero y reinicio apache (por ejemplo con  /etc/init.d/apache2 restart )
  • Aquí puede pasarte como a nosotros, hacía caso del .htaccess, por lo tanto los cambios habían funcionado, pero daba error de permisos. Error 403 no te dejaba ver nada. No te preocupes, en nuestro caso era que no estaban activados los Symlinks.
    Ve de nuevo al fichero de Apache (/etc/apache2/default-server.conf) y debajo de lo que has puesto antes añade: Options +FollowSymlinks
    Esto activa los enlaces permanentes. Guarda el fichero, reinicia apache y prueba. Ya debería estar.
  • Si no comprueba la sintaxis de tu .htaccess y los permisos de los directorios por si acaso.

 

 

 

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s