Apache:仅提供 SSL 服务

Apache:仅提供 SSL 服务

我有一个网站,希望只有https://myurl.com。正常输入myurl.com应该会被转发到https。

我尝试了不同的方法,例如:

RewriteEngine On 
RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://myurl.com/$1 [R,L] 

(重写模式开启)或

NameVirtualHost *:80
<VirtualHost *:80>
   ServerName mysite.example.com
   DocumentRoot /usr/local/apache2/htdocs
   Redirect permanent /secure https://mysite.example.com/secure
</VirtualHost>

但它们没有起作用,哪种方法才是正确的?

Debian 和 Apache 2

答案1

我将其用于端口 80 apache 配置:

<VirtualHost *:80>
    ServerName mysite.example.com
    RewriteEngine On
    RewriteRule ^(.*)$ https://mysite.example.com$1 [R=301,L]
</VirtualHost>

答案2

除了从 HTTP 重定向到 HTTPS 之外,我建议您还使用 HSTS 并在所有 Cookie 上设置安全标志。这将告诉浏览器始终通过 HTTPS(而非 HTTP)进行连接,并且仅通过 HTTPS(而非 HTTP)发送 Cookie。

有用:有关如何在 Apache 配置中设置 HSTS 的描述

答案3

您可以将其放在常规 HTTP(例如 *:80)vhost def 中。(当它仅在 HTTP vhost def 中时,无需测试 %{SERVER_PORT} 或 %{HTTPS} 变量。)

这比以前的答案更具可移植性,并且不会因为 DNS 搜索域、CNAMES 等而被不同的主机名绊倒:

RewriteEngine On
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [R,L]

(但启用 HSTS 的建议也很好。)

答案4

所以,基本上没有任何一种方法起作用,因为我意外地禁用了 apache 在 80 上的监听...很抱歉,这是我的错。

现在也

Redirect permanent / https://mysite

工作中

但是 +1 给 Paul,因为他的建议也有效,并且感谢 Keith 和 DW 提供的有趣的附加信息。

相关内容