Tengo una aplicación web tomcat 6 ejecutándose con apache httpd como interfaz. Estoy usando mod_proxy y mod_proxy_ajp para reenviar las solicitudes a tomcat. Mi servidor ejecuta Ubuntu. Ahora estoy tratando de usar mod_rewrite para eliminar el www, por lo que mi URL del sitio web canónica es http://domain.com en lugar de http://www.domain.com¿Cómo soluciono el problema de por qué apache no aplica las reglas de reescritura?
He leído una serie de tutoriales sobre el uso de mod_rewrite, pero no puedo obtener ninguna reescritura trabajo. Intenté colocar la regla de reescritura en un archivo .htaccess (después de modificar mi archivo/etc/apache/sites-available/default para establecer AllowOverride all). Intenté poner la regla de reescritura en apache2.conf, httpd.conf y rewrite.conf. He intentado todo esto con el registro de reescritura activado. El archivo de registro se crea, pero apache no le ha escrito nada. Pensé que tal vez mod_proxy estaba de alguna manera impidiendo que se utilizaran las reglas de reescritura, así que intenté desactivarlo también ... y todavía no recibo ninguna reescritura, y nada para el registro.
En este momento no tengo ni idea de qué probar a continuación. ¿Cómo puedo solucionar los problemas por los que apache no está utilizando mis reglas de reescritura?
Como referencia, aquí están mis directivas de reescritura:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.domain.com$ [NC]
RewriteRule ^(.*)$ http://domain.com/$1 [R=301,L]
RewriteLog "/var/log/apache2/rewrite.log"
RewriteLogLevel 3
</IfModule>
Editar: las respuestas a continuación son útiles para mi caso particular, pero probablemente no es tan útil a la comunidad en grande como respuestas acerca de cómo usted soluciona las directivas de apache en general. Por ejemplo, ¿hay alguna manera de habilitar el registro hasta el punto en que me diga qué directivas se están aplicando y en qué orden cuando entra la solicitud?
Editar 2: He conseguido que las cosas funcionen ahora. Mis servidores virtuales no estaban bien configurados, y tampoco tenía la reescritura correcta. Aquí es las directivas finales de reescritura llegué al trabajo:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.domain\.com [NC]
RewriteRule ^(.*)$ http://domain.com$1 [L,R=301]
</IfModule>
¿Se ha asegurado de que mod_rewrite esté cargado? –
Sí. Lo cargué usando "a2enmod rewrite", que configura un enlace simbólico en mods-enabled para apuntar a mod \ _rewrite.load en mod-available. También intenté escribir mal una de las reglas de reescritura (es decir, "Rewrite3Rule") para probar que apache realmente está tomando las reglas, y apache me da un mensaje de error como era de esperar. Cuando arreglo la ortografía y reinicio Apache, se reinicia bien. –