Mam aplikację webową tomcat 6 z apache httpd jako front end. Używam mod_proxy i mod_proxy_ajp do przekazywania żądań do tomcat. Na moim serwerze działa ubuntu. Teraz staram się używać mod_rewrite aby usunąć główną www, tak, że moja kanoniczny URL strony jest http://domain.com zamiast http://www.domain.comJak mogę rozwiązać problem, dlaczego moje reguły przepisywania nie są stosowane przez apache?
Czytałem kilka tutoriali na temat korzystania z mod_rewrite, ale nie mogę nic na przepisywanie praca. Próbowałem wstawić regułę przepisywania w pliku .htaccess (po zmodyfikowaniu pliku/etc/apache/sites-available/default, aby ustawić AllowOverride wszystkie). Próbowałem już wstawić regułę przepisywania w apache2.conf, httpd.conf i rewrite.conf. Próbowałem już wszystkich z włączonym logowaniem wielokrotnego zapisu. Plik logu zostanie utworzony, ale apache nic na nim nie napisał. Pomyślałem, że może mod_proxy uniemożliwiło użycie reguł przepisywania, więc spróbowałem wyłączyć to również ... i wciąż nie mogę napisać od nowa i nic w dzienniku.
W tym momencie nie mam absolutnie pojęcia, co dalej. Jak mogę rozwiązać problem, dlaczego Apache nie stosuje reguł przepisywania?
Dla porównania, tutaj są moje dyrektyw przepisujące:
<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>
Edit: poniżej odpowiedzi są pomocne w moim konkretnym przypadku, ale chyba nie tak pomocne dla społeczności-at-large jako odpowiedzi na temat sposobu rozwiązywać ogólne problemy z dyrektywami apache. Na przykład, czy istnieje sposób, aby włączyć rejestrowanie do punktu, w którym informuje mnie, które dyrektywy są stosowane w jakiej kolejności, w zależności od żądania?
Edytuj 2: Mam już rzeczy do roboty. Moje wirtualne hosty nie były skonfigurowane poprawnie, a także nie miałem dość przepisania regularnego wyrażenia regularnego. Oto ostateczne dyrektywy do przepisywania, które mam do wykonania:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.domain\.com [NC]
RewriteRule ^(.*)$ http://domain.com$1 [L,R=301]
</IfModule>
Masz pewność, że załadowany jest moduł mod_rewrite? –
Tak. Załadowałem go za pomocą "a2enmod rewrite", które ustawia dowiązanie symboliczne w modach, aby wskazywało na mod \ _rewrite.load w mod-available. Próbowałem również celowo przepisać jedną z reguł przepisywania (np. "Rewrite3Rule"), aby sprawdzić, czy reguły są pobierane przez apache, a apache podaje komunikat o błędzie, jak się spodziewałam. Kiedy poprawiam pisownię i zrestartuję apache, restartuje się dobrze. –