400 Неверный запрос Перезапись HTTP на HTTPS не работает

Я использую apache 2.4.25 на сервере Debian. Есть веб-сайт, доступный через:

example.de    and
www.example.de

, они должны быть переписаны через конфиги и .htaccess в:

https://example.de
https://www.example.de

Это не работает.

Эти строки были добавлены с помощью let-encrypt в sites-enabled / 000-default.conf , закомментированные строки были добавлены мной для перезаписи example.de в www.example.de, но он не работает:

RewriteEngine on
# rewrite example.de to www.example.de changed 11.11.2019
#RewriteCond %{HTTP_HOST} ^example\.de$ [NC]
#RewriteRule (.*) https://www.example.de/$1 [R=301,L]
#RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [R=301]
RewriteCond %{SERVER_NAME} =www.example.de
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent] 

SSL-config записан в 000-default-le-ssl.conf:

<IfModule mod_ssl.c>
<VirtualHost *:443>
...
    <Directory /var/www/>
            Options -Indexes +FollowSymLinks
            AllowOverride all
            Order allow,deny
            allow from all
    </Directory>
    # added 01.04.2019 END
    <Directory /var/www/html/>
      Options -Indexes +FollowSymlinks
      AllowOverride All
      Require all granted
      allow from all
    </Directory>
 ...
 SSLEngine on
 Include /etc/letsencrypt/options-ssl-apache.conf
 Header always set Content-Security-Policy upgrade-insecure-requests
 SSLCertificateFile /etc/letsencrypt/live/www.example.de/fullchain.pem
 SSLCertificateKeyFile /etc/letsencrypt/live/www.example.de/privkey.pem 

Также есть wordpress.conf с записями виртуального хоста для порта 80 и 443, буквально содержащий части default и default-ssl.conf.

В .htaccess написано следующее:

# BEGIN WordPress
<IfModule mod_rewrite.c> 
Options +FollowSymLinks
RewriteEngine On
RewriteBase /

# rewrite example.de to www.example.de changed 11.11.2019
#RewriteCond %{HTTP_HOST} !^www\.
#RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [R=301]
#RewriteCond %{SERVER_PORT} !=443
#RewriteRule ^(.*)$ https://www.example.de/$1 [R=301,L]

RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI}
RewriteRule îndex\.php$ - [L]
# add a trailing slash to /wp-admin
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
RewriteRule . index.php [L]
</IfModule>     

Я взглянул на rewrite- записи в журнале ошибок: правила перезаписи для перезаписи на www или https там не отображаются (перезапись отладки на уровне журнала: trace4).

Когда это был всего лишь тестовый сервер, переписывание с http на https работало как шарм, а теперь оно живое и это не так, при использовании https непосредственно в браузере работает (URL-адрес изменен на один символ и было добавлено условие перезаписи example.de на www.example.de). Я проверил модули; перезапустил сервер; servername = www.example.de, serveralias = example.de;

Я нашел это здесь, в stackoverflow, но ничего не работало или не применимо к моему случаю: https://stackoverflow.com/questions/17853828/redirecting-http-to-https-with-apache

Обслуживающий порт 443 через http создает ошибку 400 Bad Request вместо перенаправления.

Не могли бы вы помочь. Я не могу решить эту проблему. Заранее спасибо.

0
задан 11 November 2019 в 20:52
1 ответ

Проблема решена, один из моих коллег изменил настройки в SNI, что и вызвало проблему.

0
ответ дан 4 December 2019 в 23:58

Теги

Похожие вопросы