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

apache2 непонятное перенаправление https

У меня вопрос об apache2 и Virtualhosts.

Я объявил некоторые из них в моих / apache2 / sites-available / ownnsites, чтобы получить доступ через разные домены и поддомены, например:

<VirtualHost *:80>
    ServerName www.domain1.de
    ServerAlias domain1.de
    DocumentRoot /var/www/domain1/
    ServerAdmin myemailaddress.de
    <Directory />
            Order deny,allow
            deny from all
    </Directory>
    <Directory /var/www/domain1>
            Options -Indexes -FollowSymLinks
            AllowOverride all
            Order allow,deny
            allow from all
    </Directory>
</VirtualHost>

<VirtualHost *:80>
    ServerName www.domain2.de
    ServerAlias domain2.de
    DocumentRoot /var/www/domain1/
    ServerAdmin myemailaddress.de
    <Directory />
            Order deny,allow
            deny from all
    </Directory>
    <Directory /var/www/domain2>
            Options -Indexes -FollowSymLinks
            AllowOverride all
            Order allow,deny
            allow from all
    </Directory>
</VirtualHost>

все работает нормально, я могу получить доступ к разным доменам и поддоменам. Но я включаю ssl, чтобы получить безопасный доступ к моему почтовому веб-доступу

<VirtualHost *:443>
    SSLEngine On
    SSLCertificateFile /etc/apache2/certs/zarafa-ssl.crt
    SSLCertificateKeyFile /etc/apache2/certs/zarafa-ssl.key

    ServerName www.webaccess.domain1.de
    ServerAlias webaccess.domain1.de
    DocumentRoot /path/to/zarafa-webaccess/
    ServerAdmin myemailaddress.de 

    #rewrite rule for https  access
    RewriteEngine On
    RewriteCond %{HTTPS} !=on
    RewriteRule (.*) https://webaccess.domain1.de [R]


    <Directory />
            Order deny,allow
            deny from all
    </Directory>
    <Directory /path/to/zarafa-webaccess/>

            Options -Indexes -FollowSymLinks
            AllowOverride None
            Order allow,deny
            allow from all
    </Directory>


</VirtualHost>

Также этот доступ работает нормально, включая перезапись, если я пытаюсь получить доступ только с http

Но непонятная вещь заключается в том, что теперь, если я попытаюсь получить доступ к своему основному домену с https: https://www.domain1.de , Меня перенаправляют на apache2-standard-index.html "Это работает", даже если я удалю его. Кроме того, мой другой домен www.domain2.de перенаправляется на мой первый домен, если я попытаюсь получить доступ с помощью https: https://www.domain2.de -> http://domain1.de

Может быть, есть какой-нибудь другой файл из выходов apache2, где сохранены прежние RewriteRules, когда я пробовал некоторые RewriteRules?

Если я объявлю другие правила, чтобы определить другое поведение, разницы нет.

У кого-нибудь была такая же проблема или есть идеи, как ее решить?

http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewritecond

HTTPS

Будет содержать текст «включено», если соединение использует SSL / TLS, или «выключено» в противном случае. (Эту переменную можно безопасно использовать независимо от того, загружен ли mod_ssl).

В основном, если соединение не использует HTTPS, URL-адрес статически переписан на https://webaccess.domain1.de. Запрос http://webaccess.domain1.de/dir/file.txt? Нет, запрос переписан на https://webaccess.domain1.de.

Но это глупое правило, поскольку VHost, в котором он происходит, заблокирован для порта 443, поэтому он никогда не будет затронут подключением, которое не HTTPS. Выньте этот конфиг из *:443 config и поместите его в соответствующий *:80 файл конфигурации.

Еще лучше, обратитесь к этому и используйте это:

RewriteEngine On
# This will enable the Rewrite capabilities

RewriteCond %{HTTPS} !=on
# This checks to make sure the connection is not already HTTPS

RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]
# This rule will redirect users from their original location, to the same location but using HTTPS.
# i.e.  http://www.example.com/foo/ to https://www.example.com/foo/
# The leading slash is made optional so that this will work either in httpd.conf
# or .htaccess context

Нужно найти другие определения правил? Найдите файлы .htaccess.

find /path/to/zarafa-webaccess/ -name '.htaccess'