![Apache HTTP 到 HTTPS 重定向,绝对链接和书签失败](https://linux22.com/image/689070/Apache%20HTTP%20%E5%88%B0%20HTTPS%20%E9%87%8D%E5%AE%9A%E5%90%91%EF%BC%8C%E7%BB%9D%E5%AF%B9%E9%93%BE%E6%8E%A5%E5%92%8C%E4%B9%A6%E7%AD%BE%E5%A4%B1%E8%B4%A5.png)
我为我们的网站获取了一些合适的 SSL 证书。我能够安装它们,并且 HTTPS 端的测试运行良好。唯一剩下的就是将所有 HTTP 流量重定向到 HTTPS,然后事情就变得糟糕了。
<VirtualHost *:80>
我在我的区域添加了以下行:
Redirect permanent / https://www.website.com/
这在两个方面导致了有趣的行为。首先,网站内所有指向网站内其他目录的绝对链接都失败了。例如,指向的链接http://www.website.com/directory
最终会出现https://www.website.comdirectory
“无法访问此网站”的错误。直接输入 URLhttp://www.website.com/directory
也会出现同样的行为。
用这个替换 Redirect 语句会更好吗?
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{SERVER_NAME}/%$1 [R,L]
或者还需要别的东西吗?
答案1
在.htaccess 中尝试这个:
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.my-site.com/$1 [R,L]
答案2
因此我们解决了这个问题。
因为有多个配置文件,每个文件用于不同的挂载目录,所以每个配置文件都需要一个重定向规则或重写规则集。
现在上述规则已经到位,网站可以按预期运行。