Tengo un servidor del servicio AWS EC2 que se ejecuta en Linux ubuntu y he instalado apache, php y mysql.
He agregado un .htaccess
archivo en la raíz de mi documento /var/www/html
.
Ingresé este código en él:
ErrorDocument 404 /var/www/html/404.php
y todavía no aparece.
Seguí ingresando este comando varias veces: sudo service httpd restart
para reiniciar el servidor pero no se muestran cambios ...
¿Cómo puedo solucionar esto? ¿Hice algo mal?
¡Gracias por adelantado!
apache
.htaccess
amazon-ec2
amazon-web-services
apache-config
Shalin Shah
fuente
fuente
400 Bad Request
error/var/www/html/404.php
?Respuestas:
Primero, tenga en cuenta que reiniciar httpd no es necesario para los archivos .htaccess. Los archivos .htaccess son específicamente para personas que no tienen root, es decir, no tienen acceso al archivo de configuración del servidor httpd y no pueden reiniciar el servidor. Como puede reiniciar el servidor, no necesita archivos .htaccess y puede usar la configuración del servidor principal directamente.
En segundo lugar, si se ignoran los archivos .htaccess, debe verificar que AllowOverride esté configurado correctamente. Ver http://httpd.apache.org/docs/2.4/mod/core.html#allowoverride para más detalles. También debe asegurarse de que esté configurado en el ámbito correcto, es decir, en el bloque correcto de su configuración. Asegúrate de NO editar el que está en el bloque, por ejemplo.
En tercer lugar, si desea asegurarse de que se está leyendo un archivo .htaccess, coloque basura en él. Una línea no válida, como "LÍNEA NO VÁLIDA AQUÍ", en su archivo .htaccess, dará como resultado un error de servidor 500 cuando apunte su navegador al directorio que contiene ese archivo. Si no es así, entonces no tiene AllowOverride configurado correctamente.
fuente
"A STRING"
mi .htaccess, así que recibí un error, así que puseAllowOverride All
todoapache2.conf
en mi Debian y funcionaAllowOverride
solo funciona en<Directory>
directivas y se ignorará si se coloca dentro de una<Location ...>
sección, consulte: httpd.apache.org/docs/2.4/mod/core.html#allowoverride<Directory>
directiva espera una ruta absoluta en lugar de relativa. En mi caso,<Directory />
falló mientras<Directory /var/www/html/subdir>
trabajaba.Habilitar el módulo Apache mod_rewrite
a2enmod rewrite
agregue el siguiente código a
/etc/apache2/sites-available/default
AllowOverride All
Reiniciar apache
/etc/init.d/apache2 restart
fuente
Si ha intentado todo lo anterior, que son todas respuestas válidas y buenas, y su archivo htaccess no funciona o está siendo leído, cambie la directiva en el
apache2.conf
archivo. Bajo Ubuntu la ruta es/etc/apache2/apache2.conf
Cambie la
<Directory>
directiva que apunta a sus páginas web públicas, donde reside el archivo htaccess. Cambiar deAllowOverride None
aAllowOverride All
Tuve el mismo problema y encontré la respuesta y la explicación en Ubuntu Ask! foro /ubuntu/421233/enabling-htaccess-file-to-rewrite-path-not-working
fuente
AllowOverride FileInfo
se requiere en la tercera línea para que el.htaccess
archivo sea leído y utilizado.All
también permite anulaciones de configuración adicionales, como.httpasswd
(que se puede habilitar individualmente mediante el uso enAuthconfig
lugar deAll
).Para Ubuntu,
primero, ejecute este comando: -
Luego, edite el archivo
/etc/apache2/sites-available/000-default.conf
usando nano o vim usando este comando: -Luego, en el
000-default.conf
archivo, agregue esto después de la líneaDocumentRoot /var/www/html
. Si su directorio html raíz es algo diferente, entonces escriba eso:Después de hacer todo, reinicie apache usando el comando
sudo service apache2 restart
fuente
Solo sigue 3 pasos
Habilite mode_rewrite usando el siguiente comando
sudo a2enmod reescribir
Se le pedirá contraseña. Entonces ingrese su contraseña
Actualice su archivo 000-default.conf o default.conf ubicado en el directorio / etc / apache2 / sites-available / . No puedes editarlo directamente. así que usa el siguiente comando para abrir
sudo gedit /etc/apache2/sites-available/000-default.conf
O sudo gedit /etc/apache2/sites-available/default.conf
conseguirás
O
línea. Agregue el siguiente código después.
Haga que el usuario la ruta de la etiqueta del directorio sea la misma que se muestra en su archivo.
Reinicie su servidor apache usando el siguiente comando
sudo service apache2 restart
fuente
Lo más probable es que AllowOverride esté establecido en Ninguno. en la sección Directorio de apache2.conf ubicado en la carpeta / etc / apache2
Intenta configurarlo en AllowOverride All
fuente
En mi experiencia, la directiva / var / www / directory evita las directivas de subhost de virtualhost de subcarpeta. Entonces, si ha probado todas las sugerencias y aún no funciona y está usando virtualhosts, intente esto;
1 - Asegúrese de tener una
AllowOverride All
directiva en/etc/apache2/sites-available/example.com.conf
2 - Marque / var / www / Directivas de directorio en
/etc/apache2/apache2.conf
(posiblemente en la línea 164), que se ve así;Si hay una
AllowOverride None
directiva cámbielaAllowOverride All
o simplemente escape de la líneafuente
Por defecto, Apache prohíbe el uso de un archivo .htaccess para aplicar reglas de reescritura, por lo que
Paso 1: habilitación de mod_rewrite (si no está habilitado) Primero, necesitamos activar mod_rewrite. Está disponible pero no habilitado con una instalación limpia de Apache 2.
Esto activará el módulo o le avisará que el módulo ya está habilitado. Para que estos cambios surtan efecto, reinicie Apache.
mod_rewrite ahora está totalmente habilitado. En el siguiente paso, configuraremos un archivo .htaccess que usaremos para definir reglas de reescritura para redireccionamientos.
Paso 2: configuración de .htaccess Abra el archivo de configuración predeterminado de Apache con nano o su editor de texto favorito.
Dentro de ese archivo, encontrará un bloque que comienza en la primera línea. Dentro de ese bloque, agregue el siguiente bloque nuevo para que su archivo de configuración tenga el siguiente aspecto. Asegúrese de que todos los bloques estén sangrados correctamente.
/etc/apache2/sites-available/000-default.conf
Guarde y cierre el archivo. Para que estos cambios surtan efecto, reinicie Apache.
Hecho. Su .htacess debería funcionar. Este enlace puede ayudar a alguien https://www.digitalocean.com/community/tutorials/how-to-rewrite-urls-with-mod_rewrite-for-apache-on-ubuntu-16-04
fuente
$ sudo httpd -k restart
(Red Hat 4.4.7-23)Despejé este uso. Al usar este sitio, haga clic aquí , siga los pasos, los mismos pasos hasta la versión de Ubuntu 18.04
fuente
En el
WampServer
icono Abrir bandeja de WampServer ----> Apache ---> Módulos Apache ---> rewrite_modulefuente
use RewriteBase / {su carpeta} / en su .htaccess
fuente
Para completar, si "AllowOverride All" no soluciona su problema, puede depurarlo usando:
Ejecute
apachectl -S
y vea si tiene más de un host de nombres. Puede ser que httpd esté buscando .htaccess de otro DocumentRoot.Use
strace -f apachectl -X
y busque desde dónde se carga (o no carga) .htaccess desde.fuente