在第二次调用我的 Apache 2.4 服务器 config-vhost 文件时,我有:
<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,它向我展示了“真实”页面的内容。
第二个虚拟主机永远不会到达,因为在日志中我有这样的内容:
[2023 年 10 月 24 日星期二 18:44:23.156932] [ssl:debug] [pid 8958:tid 140379014039296] ssl_engine_kernel.c(383):[客户端 98.58.102.21:64004] AH02034:针对子级 22272(服务器www.developmentscout.com:443), 引荐来源:https://51.89.98.21/industrie/automatisierung/ipc/11315-edge-computing
显然https请求转到了错误的URL,调用了SSL证书,这是错误的,然后使用http连接并显示内容。
我尝试使用 Letsencrypt 创建 SSL 证书,但对于 IP 来说这是不可能的。所以任何关于如何解决这个问题的建议都很好。
更新:与此同时,我为 51.89.98.21 创建了一个自签名证书。(默认之后的第二个)虚拟主机是:
<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),而没有尾随斜杠。
所以修改应该是:
重写条件 %{REQUEST_URI} !^/$