Edw*_*ard 6 server virtualhost apache2 redirect
我一直在到处寻找一种解决方案,以便能够使用虚拟主机在我的所有 URL 前强制使用 https://www。这是我目前在 000-default.conf 文件中的内容:
<VirtualHost *:80>
ServerName www.domain.com
Redirect / https://www.domain.com/
</VirtualHost >
Run Code Online (Sandbox Code Playgroud)
这意味着所有 www. 将重定向到 https://www。
现在我缺少将所有/任何其他形式的 URL 重定向到https://www 的代码。使用相同的概念(不是 RewriteEngine,因为 Apache 建议不要在简单重定向上使用 RewriteEngine)。
例如:
他们都会去=> https://www.domain.com
如果有人能指出我正确的方向,那就太好了!
Fre*_*ers 14
这对我有用,如果你愿意,你可以在我的域上测试它。
<VirtualHost *:80>
ServerName freesoftwareservers.com
ServerAlias *.freesoftwareservers.com
Redirect / https://www.freesoftwareservers.com/
</VirtualHost>
<VirtualHost *:443>
ServerName freesoftwareservers.com
ServerAlias *.freesoftwareservers.com
Run Code Online (Sandbox Code Playgroud)
我在重新实现这个时遇到了问题,发现如果我从 /sites-enabled 中删除了 000-default.conf 符号链接,它就会起作用。不知道是怎么回事,但我在 DNS 端有 0 个其他 DNS 记录,我的 Apache 完成了所有重定向,并且可以正常工作。
您需要三个重定向才能执行您想要的操作:
http://example.com 到 https://www.example.com
http://www.example.com 到 https://www.example.com
https://example.com 到 https://www.example.com
前两个来自端口 80 纯 HTTP,因此您有一个 VirtualHost 用于它们。您可以通过使用 ServerAlias 部分使 VirtualHost 部分应用于多个主机名(www.example.com 和 example.com):
# Redirect http://example.com and http://www.example.com to main site
<VirtualHost *:80>
ServerName www.example.com
ServerAlias example.com
Redirect / https://www.example.com/
</VirtualHost >
Run Code Online (Sandbox Code Playgroud)
然后,您只需要一个用于https://example.com的 VirtualHost 。HTTPS 使用端口 443:
# Redirect https://example.com to main site
<VirtualHost *:443>
ServerName example.com
Redirect / https://www.example.com/
</VirtualHost >
Run Code Online (Sandbox Code Playgroud)
注意:您还需要在那里设置 SSL 设置,使用支持带和不带“www.”域的证书。设置您的 SSL 设置不在此问题的范围内。(添加信息:如果您愿意,这些可以是两个单独的证书;现在拥有许多单独的证书变得越来越普遍,我们拥有 Let's Encrypt 和 SNI 之类的东西)
如果您没有支持不带“www”的域的 SSL 证书。那么您将无法从https://example.com. 重定向只会在浏览器检查证书后发生。用户将看到不匹配的证书错误。
然后,最后,您需要“有效”站点的 VirtualHost 部分:www.example.com 上的 HTTPS(端口 443):
# Main site
<VirtualHost *:443>
ServerName www.example.com
# Put all your configuration for this site here
</VirtualHost >
Run Code Online (Sandbox Code Playgroud)
一旦你测试了你的重定向并且你很高兴他们正在工作,你可以通过在重定向中指定 301 状态(更改Redirect / https://www.example.com/为Redirect 301 / https://www.example.com/无处不在),并通过启用强制用户浏览器记住 HTTPS 首选项的HSTS来使它们永久化。