Tengo el siguiente contenido en mi .htaccess
archivo. Esperaba que redirigiese a la carpeta de mi proyecto /hc
, que está en el mismo nivel que .htaccess
. La redirección no se realiza y todavía se muestra el contenido de index.html
.
RewriteEngine On
RewriteBase /hc/
<Files .*>
Order Deny,Allow
Deny From All
</Files>
RewriteCond %{HTTP_HOST} ^example.com$ [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]
RewriteRule ^(?:application|modules|system)\b.* index.php/$0 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php?/$0 [PT,L,QSA]
Respuesta1
Esperaba que redirigiese a la carpeta de mi proyecto,
/hc
que esal mismo nivel que.htaccess
.
Ese es el problema. Si el .htaccess
archivo está en el /hc
subdirectorio, nunca verá la solicitud a menos que ya incluya el /hc
subdirectorio en la solicitud.
Su .htaccess
archivo debe ir al directorio principal. es decir. la raíz del documento. (Por cierto, solo necesitaría la RewriteBase /hc/
directiva si este archivo estuviera en la raíz del documento).
O incluir unadicional .htaccess
archivo en la raíz del documento que simplemente reenvía todas las solicitudes a su /hc
directorio (su controlador frontal), por ejemplo:
RewriteEngine On
RewriteRule (.*) hc/$1 [L]
Tenga en cuenta que, dado que mod_rewrite no se hereda de forma predeterminada, una vez que la solicitud se reescribe en el /hc
subdirectorio, el .htaccess
archivo en el subdirectorio se procesa y anula las directivas mod_rewrite en el .htaccess
archivo principal, para que no termine con un bucle de reescritura.
RewriteRule .* index.php?/$0 [PT,L,QSA]
ACTUALIZAR:SusustituciónLa cadena en la última RewriteRule
difiere de la directiva anterior. Probablemente ambas no sean correctas. Es posible que desee eliminar la ?
directiva anterior, a menos que desee enviarnos la cadena de consulta, entonces debe agregar una ?
a la directiva anterior. Tal como están las cosas, los primeros usosinformación de rutapara pasar la URL, el segundo usa elcadena de consulta.
Por cierto, la PT
bandera es redundante en archivos por directorio .htaccess
. Y si no está utilizando la cadena de consulta, la QSA
marca también se puede eliminar.
Respuesta2
Debe habilitar la opción "reescribir" en su archivo de configuración de Apache "sitios disponibles". Para laravel debes tener cuidado porque tu DocumentRoot (carpeta pública donde necesitas el archivo .htaccess) está dentro de la carpeta del proyecto.