
Во втором вызове файла config-vhost моего сервера Apache 2.4 у меня есть:
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName 51.89.98.21
RewriteEngine On
RewriteCond %{HTTP_HOST} ^http://51.89.98.21$1 [NC]
RewriteRule ^(.*)$ http://51.89.98.21/ [R=permanent,END,QSA]
</VirtualHost>
Третий config-vhost — это (раздел):
<VirtualHost *:443>
ServerAdmin [email protected]
ServerName www.developmentscout.com
ServerAlias developmentscout.com
UseCanonicalName Off
DocumentRoot "/var/www/vhosts/developmentscout.com/htdocs"
RewriteEngine On
RewriteCond %{REQUEST_URI} ^\.well\-known [NC,OR]
RewriteCond %{HTTP_HOST} ^developmentscout.com$ [NC]
RewriteRule ^ https://www.developmentscout.com%{REQUEST_URI} [END,QSA,R=permanent]
SSLEngine on
SSLCertificateKeyFile /etc/letsencrypt/live/developmentscout.com-0002/privkey.pem
SSLCertificateFile /etc/letsencrypt/live/developmentscout.com-0002/cert.pem
SSLCertificateChainFile /etc/letsencrypt/live/developmentscout.com-0002/chain.pem
...
Ссылка отhttps://51.89.98.21/industrie/automatisierung/ipc/11315-edge-computing следует перенаправить наhttp://51.89.98.21НО вместо этого у меня перенаправление на:http://51.89.98.21/industrie/automatisierung/ipc/11315-edge-computing, который показывает мне содержимое «реальной» страницы.
Второй виртуальный хост никогда не достигается, потому что в журнале у меня есть следующее:
[Вт Окт 24 18:44:23.156932 2023] [ssl:debug] [pid 8958:tid 140379014039296] ssl_engine_kernel.c(383): [клиент 98.58.102.21:64004] AH02034: Получен последующий (№ 3) HTTPS-запрос для потомка 22272 (серверwww.developmentscout.com:443), реферер:https://51.89.98.21/industrie/automatisierung/ipc/11315-edge-computing
Очевидно, что https-запрос отправляется на неправильный URL-адрес, который вызывает SSL-сертификат, что неверно, затем используется http-соединение и отображается содержимое.
Я пытался создать SSL-сертификат с помощью Letsencrypt, но это невозможно для IP. Так что любые предложения по решению этой проблемы были бы замечательными.
ОБНОВЛЯТЬ: В то же время я создал самоподписанный сертификат для 51.89.98.21. (Второй после дефолтного) vhost:
<VirtualHost *:443>
ServerAdmin [email protected]
ServerName 51.89.98.21
SSLEngine on
SSLCertificateKeyFile /etc/ca-certificates/key.pem
SSLCertificateFile /etc/ca-certificates/cert.pem
RewriteEngine On
RewriteCond %{HTTP_HOST} ^51.89.98.21/$ [NC]
RewriteRule ^ https://51.89.98.21/ [END,QSA,R=permanent]
DocumentRoot /var/www/server3
</VirtualHost>
Когда я вызываю этот URL:https://51.89.98.21/branche/automobil/11819-e-auto-laden-ladestecker-ladekabel Я получил сообщение «Не найдено» 404.
решение1
ИИ сказал мне, что состояние
RewriteCond %{HTTP_HOST} ^51.89.98.21/$ [NC]
никогда не будет верным, поскольку %{HTTP_HOST} содержит только доменное имя (или IP в данном случае) без завершающего слеша.
Итак, модификация должна быть такой:
RewriteCond %{REQUEST_URI} !^/$