.png)
Estoy intentando redirigir /carpeta a/usando .htaccess pero lo único que obtengo es la página de prueba del servidor HTTP Apache. Mi directorio raíz se ve así:
/
.htaccess
-/folder
-/folder2
-/folder3
Mi .htaccess se ve así:
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/folder/
RewriteRule (.*) /folder/$1
¿Qué estoy haciendo mal? Revisé mi httpd.conf (estoy ejecutando Centos) y se está cargando la biblioteca mod_rewrite. Como nota al margen, mi servidor no es un servidor www, es simplemente una máquina virtual, por lo que su nombre de host es centosvm.
Además: Mi httpd.conf se ve así:
<VirtualHost *:80>
ServerName taa.local
DocumentRoot /var/www/html
SetEnv APPLICATION_ENV "dev"
Alias /taa /var/www/html/taa/public
<Directory /var/www/html/taa/public>
DirectoryIndex index.php
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
Respuesta1
Asegúrese de que Mod_Rewrite esté cargado. Asegúrese de tenerlo AllowOverrides All
en su directorio raíz (es el valor predeterminado de Apache, pero la mayoría de las distribuciones tienen un valor predeterminado none
en el archivo httpd.conf).
Respuesta2
Descubrí que a mi <VirtualHost>
declaración le faltaba una <Directory>
declaración para root. Cambiando mi <VirtualHost
a:
<VirtualHost *:80>
ServerName taa.local
DocumentRoot /var/www/html
SetEnv APPLICATION_ENV "dev"
Alias /folder1 /var/www/html/folder1/public
<Directory /var/www/html>
AllowOverride All
Order allow,deny
Allow from all
</Directory>
<Directory /var/www/html/folder1/public>
DirectoryIndex index.php
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
Mi /.htaccess se parece a:
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/folder1/
RewriteCond %{REQUEST_URI} !^/folder2/
RewriteCond %{REQUEST_URI} !^/folder3/
RewriteCond %{REQUEST_URI} !^/folder4/
RewriteCond %{REQUEST_URI} !^/folder5/
RewriteRule (.*) folder1/$1 [L]
Sería más limpio si supiera decir si REQUEST_URI = /
y luego redirigir, pero no sé cómo.
Respuesta3
Debes eliminar el '/' inicial de una coincidencia con RewriteCond
Vea los ejemplos enhttp://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewritecond
RewriteEngine On
RewriteCond %{REQUEST_URI} !^folder/
RewriteRule (.*) /folder/$1