У меня есть веб-приложение tomcat 6, работающее с apache httpd в качестве внешнего интерфейса. Я использую mod_proxy и mod_proxy_ajp для пересылки запросов в Tomcat. Мой сервер работает под управлением Ubuntu. Сейчас я пытаюсь использовать mod_rewrite, чтобы удалить ведущий www, чтобы мой канонический URL-адрес веб-сайта был http://domain.com, а не http://www.domain.com
Я прочитал несколько руководств по использованию mod_rewrite, но я не могу заставить что-либо переписать для работы. Я попытался поместить правило перезаписи в файл .htaccess (после изменения моего файла / etc / apache / sites-available / default, чтобы установить AllowOverride all). Я попытался поместить правило перезаписи в apache2.conf, httpd.conf и rewrite.conf. Я пробовал все это с включенным переписыванием журнала. Файл журнала создается, но apache ему ничего не написал. Я подумал, что, возможно, mod_proxy каким-то образом не позволяет использовать правила перезаписи, поэтому я тоже попытался отключить это ... и все равно не получаю перезаписи и ничего в журнал.
На данный момент я абсолютно не знаю, что делать дальше. Как мне устранить неполадки, почему apache не использует мои правила перезаписи?
Для справки, вот мои директивы перезаписи:
<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>
Редактировать : приведенные ниже ответы полезны для моего конкретного случая, но, вероятно, не так полезны для сообщества в целом, как ответы о том, как вы устраняете неполадки в директивах apache в целом. Например, есть ли способ включить ведение журнала до того момента, когда он скажет мне, какие директивы применяются в каком порядке при поступлении запроса?
Редактировать 2 : У меня сейчас все работает. Мои виртуальные хосты были не совсем правильно настроены, и у меня тоже не было права на переписывание регулярных выражений. Вот последние директивы переписать, которые я получил для работы:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.domain\.com [NC]
RewriteRule ^(.*)$ http://domain.com$1 [L,R=301]
</IfModule>