Cómo habilitar la reescritura de mod para Apache 2.2
Tengo una nueva instalación de Apache 2.2 en mi máquina Vista, todo funciona bien, excepto la reescritura de mod.
No he comentado
LoadModule rewrite_module modules/mod_rewrite.s
Pero ninguna de mis reglas de reescritura funciona, incluso las simples como
RewriteRule not_found %{DOCUMENT_ROOT}/index.php?page=404
Todas las reglas que estoy usando funcionan en mi alojamiento, por lo que deberían estar bien, por lo que mi pregunta es, ¿hay alguna cosa oculta en la configuración de Apache que pueda bloquear la reescritura de mod?
16 answers
Para usar mod_rewrite
puede escribir el siguiente comando en el terminal:
sudo a2enmod rewrite
Reiniciar apache2 después de
sudo /etc/init.d/apache2 restart
O
sudo service apache2 restart
O según la nueva Forma de Control del Sistema unificado
sudo systemctl restart apache2
Entonces, si lo desea, puede usar el siguiente archivo .htaccess
.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
El archivo anterior .htaccess
(si se coloca en su DocumentRoot
) redirigirá todo el tráfico a un archivo index.php
en el DocumentRoot
a menos que el archivo exista.
Entonces, digamos que tienes el siguiente directorio estructura y httpdocs es el DocumentRoot
httpdocs/
.htaccess
index.php
images/
hello.png
js/
jquery.js
css/
style.css
includes/
app/
app.php
Cualquier archivo que exista en httpdocs será servido al solicitante usando el .htaccess
mostrado arriba, sin embargo, todo lo demás será redirigido a httpdocs/index.php
. Sus archivos de aplicación en includes/app
no serán accesibles.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-04-13 07:49:05
Para mi situación, tuve
RewriteEngine On
En mi .htaccess
, junto con el módulo que se está cargando, y no estaba funcionando.
La solución a mi problema fue editar mi entrada vhost para inlcude
AllowOverride all
En la sección <Directory>
para el sitio en cuestión.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-12-19 09:55:05
He escrito sobre esto en un artículo: http://www.jarrodoberto.com/articles/2011/11/enabling-mod-rewrite-on-ubuntu
Intenta establecer: AllowOverride All
.
El segundo problema más común es no tener habilitada la reescritura de mod: a2enmod rewrite
y luego reiniciar apache.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-02-17 20:35:04
Si no hay ninguno de los trabajos anteriores, intente editar /etc / apache2 / sites-enabled / 000-default
Casi en la parte superior se encuentra
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
Cambiar el AllowOverride None
a AllowOverride All
Esto funcionó para mí
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-09-13 16:32:45
En Ubuntu:
Ejecutar:
a2enmod rewrite
Y luego:
service apache2 restart
mod_rewrite
ahora estará habilitado!
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-10-13 12:01:34
Hay muchas maneras de solucionar este problema, si conoce la raíz del problema.
Problema 1
En primer lugar, puede ser un problema con su apache no tener el mod_rewrite.módulo c instalado o habilitado.
Por esta razón, tendría que habilitarlo de la siguiente manera
-
Abre tu consola y escribe en ella, esto:
sudo a2enmod rewrite
-
Reinicie su servidor apache.
service apache2 restart
Problema 2
También puede, además de lo anterior, si no funciona, tener que cambiar la regla de anulación del archivo conf de Apache (ya sea apache2.conf, http.conf, o 000-archivo predeterminado).
Localizar " Directorio / var / www/"
-
Cambie el "Override None "a"Override All"
Problema 3
Si obtiene un error que indica que el módulo de reescritura no se encuentra, probablemente su módulo userdir no está habilitado. Para esto razón por la que necesitas habilitarlo.
-
Escriba esto en la consola:
sudo a2enmod userdir
Luego intente habilitar el módulo de reescritura si aún no está habilitado (como se mencionó anteriormente).
Para leer más sobre esto, puede visitar este sitio: http://seventhsoulmountain.blogspot.com/2014/02/wordpress-permalink-ubuntu-problem-solutions.html
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-02-09 18:33:38
Abra terminal y typin a2enmod rewrite
, habilitará su módulo mod_rewrite
para Apache.
Luego vaya a /etc/apache2/sites-available
y edite el archivo predeterminado. (Para esto debe tener permisos de escritura para este archivo y la carpeta sites-available.)
Sustitúyase a continuación por las actuales líneas 4 a 14
DocumentRoot /var/www
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
Ahora reinicie su apache por /etc/init.d/apache2 restart
o service apache2 restart
Tome la prueba de URL limpia de nuevo y esta vez se pasará.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-08-04 11:59:46
La nueva versión de Apache ha cambiado de alguna manera. Si tu versión de apache es 2.4 entonces tienes que ir a /etc/apache2/
. Habrá un archivo llamado apache2.conf
. Tienes que editar esa (deberías tener permiso de root). Cambiar el texto del directorio como este
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
Ahora reinicie apache.
service apache2 reload
Espero que funcione.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-06-18 06:09:14
Acabo de notar que dijiste mod_rewrite.s en lugar de mod_rewrite.so -espero que sea un error tipográfico en tu pregunta y no en el httpd.conf archivo! :)
Estoy más acostumbrado a usar Apache en Linux, pero tuve que hacer esto el otro día.
En primer lugar, eche un vistazo a su directorio de instalación de Apache. (Asumiré que lo instalaste para "C:\Program Archivos" aquí)
Echa un vistazo en la carpeta: "C:\Program Archivos\Apache Software Foundation\Apache2.2 \ modules " y asegúrese de que hay un archivo llamado mod_rewrite.so ahí dentro. (Debería ser, se proporciona como parte de la instalación predeterminada.
A continuación, abre "C:\Program Files\Apache Software Foundation\Apache2. 2 \ conf" y abra httpd.conf. Asegúrese de que la línea:
#LoadModule rewrite_module modules/mod_rewrite.so
No está comentado:
LoadModule rewrite_module modules/mod_rewrite.so
Además, si desea habilitar el RewriteEngine de forma predeterminada, es posible que desee agregar algo como
<IfModule mod_rewrite>
RewriteEngine On
</IfModule>
Al final de su httpd.conf file.
Si no, asegúrese de especificar
RewriteEngine On
En algún lugar de su .archivo htaccess.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-05-16 22:31:14
Acabo de hacer esto
sudo a2enmod rewrite
Luego debe reiniciar el servicio apache siguiendo el comando
sudo service apache2 restart
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-08-04 11:58:21
Obviamente hay más de una manera de hacerlo, pero sugeriría usar la más estándar:
ErrorDocument 404 /index.php?page=404
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-05-15 15:52:58
La primera vez que tuve problemas con las reglas mod_rewrite ignorando mi tráfico, aprendí (frustrantemente) que las había colocado en el <VirtualHost>
incorrecto, lo que significaba que mi tráfico ignoraría todos de ellos sin importar lo bien escritos que estuvieran. Asegúrate de que esto no te esté pasando a ti:
# Change the log location to suit your system.
RewriteLog /var/log/apache-rw.log
RewriteLogLevel 2
Estos parámetros se activarán si realiza un reinicio elegante de Apache, para que pueda reciclarlos y supervisar de cerca el comportamiento mod_rewrite. Una vez que se solucione su problema, gire el RewriteLogLevel vuelve y celebra.
En el 100% de mi experiencia, he encontrado que el RewriteLog me ha ayudado a descubrir el problema con mis reglas de reescritura. No puedo recomendar esto lo suficiente. Buena suerte en su solución de problemas!
Además, este marcador es tu mejor amigo: http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewritelog
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-04-29 09:29:27
Recomiendo encarecidamente a todos los que quieran habilitar las directivas mod_rewrite en .archivos htacces para usar AllowOverride FileInfo
en lugar de permitir todo, como sugieren TODAS las respuestas en esta página. Es triste ver que todas estas respuestas toman el enfoque de "mientras funcione" en lugar de tratar de entender las consecuencias de la "solución" propuesta. Trate de entender lo que está haciendo en su servidor y cómo limitar los privilegios que acaba de regalar con AllowOverride All
. RTFM!, es bastante claro en tema. Vamos chicos, no es rocketscience, es sólo un servidor web!
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-12-19 14:10:23
Hilo viejo, solo quiero poner que no establecer AllowOverride a todos en lugar de utilizar mod específico que desea utilizar,
AllowOverride mod_rewrite mod_mime
Y esta línea debe ser sin comentarios
LoadModule rewrite_module modules/mod_rewrite.so
Refrences
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-03-27 09:03:48
Lo que funcionó para mí (en ubuntu):
sudo su
cd /etc/apache2/mods-enabled
ln ../mods-available/rewrite.load rewrite.load
También, como ya se mencionó, asegúrese de que AllowOverride all
esté establecido en la sección pertinente de /etc/apache2/sites-available/default
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-02-07 10:00:50
Use el comando debajo
sudo a2enmod rewrite
Y el comando reiniciar apache a través de abajo
sudo service apache2 restart
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-09-12 13:37:24