2010-09-24 10 views
10

Quiero configurar una regla mod_rewrite sin usar archivos .htaccess. Cuando pongo reglas en los archivos .htaccess, funcionan bien, pero preferiría dejar toda la configuración en mi archivo de configuración/etc/apache2/sites-available/[nombre del sitio].¿Dónde pongo RewriteRules en Apache2 sin usar archivos .htaccess?

Cuando coloco las mismas RewriteRules en las directivas VirtualHost o Directory, nada funciona. ¿Qué estoy haciendo mal? Aquí está una muestra de mi archivo de configuración VirtualHost:

<Directory /> 
Options FollowSymLinks 
# AllowOverride is on for the .htaccess files to work 
AllowOverride All 
RewriteEngine On 
RewriteRule ^oldsite\.php$ newsite.php 
</Directory> 

estoy pensando que podría estar pasando por alto alguna directiva en el archivo apache2.conf, pero no estoy seguro. Ayuda. :)

Respuesta

5

Estás utilizando un RewriteRule pattern that is meant for an .htaccess file. La razón:

Cuando se utiliza el motor de reescritura en archivos .htaccess el prefijo por directorio (que siempre es el mismo para un directorio específico) es automáticamente eliminó para la coincidencia de patrones y automáticamente añadió después de la la sustitución se ha hecho.

Así que trate de esta regla con la ruta URL completa:

RewriteRule ^/oldsite\.php$ /newsite.php 
+0

muchas gracias por la respuesta rápida. No funcionaría cuando lo incluí dentro de la directiva del Directorio, pero lo moví a VirtualHost y ahora está funcionando bien. ¿Alguna idea de por qué? – wittmaniac

+0

@ user358036: Supongo que debe colocarlo en la sección '' que describe la raíz de su documento. – Gumbo

Cuestiones relacionadas