我最近买了一个 vps(apache + ubuntu),并使用为我的域创建了 ssl 证书acme.sh --issue --dns -d example.com -d www.example.com
并获得了它们。但对于我的域,我希望激活 https 并重定向到 https。这是我的 VH 配置:
<VirtualHost *:80>
ServerName cihanbatasul.com
ServerAlias www.cihanbatasul.com
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/\.well\-known/acme\-challenge/
RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R=301,L]
#Redirect permanent / https://cihanbatasul.com
</VirtualHost>
<VirtualHost *:443>
ServerName cihanbatasul.com
ServerAlias www.cihanbatasul.com
SSLEngine on
# curl https://ssl-config.mozilla.org/ffdhe2048.txt >> /path/to/signed_cert_and_intermediate_certs_and_dhparams
SSLCertificateFile /root/.acme.sh/cihanbatasul.com_ecc/fullchain.cer
SSLCertificateKeyFile /root/.acme.sh/cihanbatasul.com_ecc/cihanbatasul.com.key
# enable HTTP/2, if available
Protocols h2 http/1.1
# HTTP Strict Transport Security (mod_headers is required) (63072000 seconds)
Header always set Strict-Transport-Security "max-age=63072000"
</VirtualHost>
我的页面上的警告: 在此处输入图片描述
我尝试使用 RedirectRule 标签,但没有效果。希望得到帮助。谢谢!
编辑:我购买此 vps 的目的是托管我的后端应用程序并在前端调用它。我的前端托管在 godaddy 的托管服务上。我将后端放在 docker 容器中,并让它在我的 vps 的端口 8080 上运行。它是一个简单的 rest api https 服务器,它有一个端点,当有人在我的前端填写联系表格时,它会向我发送电子邮件。但要使其正常工作,它需要是一个 https 站点。现在我在控制台中收到错误:
index-HS5-14da.js:48
POST https://92.205.185.35:8080/email/ net::ERR_CONNECTION_REFUSED
r @ index-HS5-14da.js:48
Mg @ index-HS5-14da.js:37
jg @ index-HS5-14da.js:37
Rg @ index-HS5-14da.js:37
lc @ index-HS5-14da.js:37
fh @ index-HS5-14da.js:37
(anonymous) @ index-HS5-14da.js:37
tu @ index-HS5-14da.js:40
zd @ index-HS5-14da.js:37
As @ index-HS5-14da.js:37
ja @ index-HS5-14da.js:37
Gg @ index-HS5-14da.js:37
index-HS5-14da.js:48 TypeError: Failed to fetch
at r (index-HS5-14da.js:48:9155)
at Object.Mg (index-HS5-14da.js:37:9855)
at jg (index-HS5-14da.js:37:10009)
at Rg (index-HS5-14da.js:37:10066)
at lc (index-HS5-14da.js:37:31439)
at fh (index-HS5-14da.js:37:31856)
at index-HS5-14da.js:37:36768
at tu (index-HS5-14da.js:40:36808)
at zd (index-HS5-14da.js:37:8991)
at As (index-HS5-14da.js:37:33142)
答案1
呃...我对 Apache 有点生疏,但我相信这是混乱的部分:
RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R=301,L]
^
/ \
因为缺少了a /
,所以规则就变成了RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]?
据我回忆,$1
包含原始站点上调用的任何相对 URL foo/bar
,并且由于/
域名和相对 URL 之间缺失,重定向 URL 因此变得无效。