Назад | Перейти на главную страницу

Канонизация URL-адресов Apache с помощью mod_jk

У меня есть домен domain.gr.

Я установил сервер Apache с mod_rewrite и mod_jk.

<VirtualHost *:80>
    ServerName domain.gr
    ServerAlias www.domain.gr
    ServerAdmin "info@domain.gr"
    DocumentRoot /var/www

    <IfModule jk_module>
        JkMount /myapp/* worker1

        Alias /myapp "/opt/tomcat/webapps/myapp"

        <Directory "/opt/tomcat/webapps/myapp">
            Options Indexes FollowSymLinks
            Allow from all
        </Directory>

        <Location "/myapp/WEB-INF/">
            Deny from all
        </Location>
    </IfModule>
</VirtualHost>

Все работает нормально, но теперь я хочу канонизировать URL-адреса.

Я хочу когда я печатаю

domain.gr         -> www.domain.gr
domain.gr/myapp   -> www.domain.gr/myapp

Я использую правила

RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\.domain\.gr [NC]
RewriteRule ^(.*)$ http://www.domain.gr$1 [L,R=301]

Когда я пишу domain.gr это идет к www.domain.gr, но когда я пишу domain.gr/myapp это не идет в www.domain.gr/myapp

Любая идея?

Где вы разместили эти правила перезаписи? т.е. находятся ли они в этом блоке или вы поместили их в другое место? Возможно, в файле .htaccess?

Что происходит вместо этого? то есть остается в domain.gr/myapp, или происходит что-то еще?

Если он находится в файле .htaccess, $ 1 будет «myapp», а не «/ myapp», что приведет к перенаправлению на domain.grmyapp, которого, конечно же, не существует.