【问题标题】:301 Redirect HTTP to HTTPS: Best Way301 将 HTTP 重定向到 HTTPS:最佳方式
【发布时间】:2018-05-03 22:30:39
【问题描述】:

我一直在寻找完美的 301 重定向。但我找到了这么多解决方案,不知道哪一个是最好的。虽然我尝试过前 2 个选项并且它们正在工作。

这是一个全新的网站,我想将所有内容从 http://www.exampledomain.com 重定向到 https://www.exampledomain.com

如果有人能帮我解决这个问题,那就太好了。

我找到了很多参考资料,如下:

1。 <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{SERVER_PORT} 80 RewriteRule ^(.*)$ https://www.exampledomain.com/$1 [R,L] </IfModule>

2。 RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

3。 <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC] RewriteRule ^ https://%1%{REQUEST_URI} [R=301,L] </IfModule>

4。 RewriteEngine On RewriteCond %{HTTPS} off RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

5。 RewriteCond %{HTTP_HOST} !^www\. RewriteRule ^(.*)$ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301] RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

6。 RewriteCond %{HTTPS} off RewriteCond %{HTTP_HOST} example\.com$ [NC] RewriteRule ^ https://example.com%{REQUEST_URI} [R=301,L,NE]

非常感谢, 周杰伦

【问题讨论】:

  • 这些规则并不都做同样的事情,有些也适用于子域,有些则不会。有些会依赖端口,有些会依赖 HTTPS 环境变量。有些会根据 URL 重定向到不同的目标。如果您在处理 SSL 并将纯 HTTP 与您的规则所在的后端进行通信的反向代理后面,那么它们都不会做您想做的事情(如果您不将其设置为执行重定向,则可能会像 CloudFlare 一样) .

标签: html wordpress https


【解决方案1】:

它们都差不多,只是有一些小的变化。

  1. 通过端口号 (80) 而非变量 %{HTTPS} 检测非 https 流量,并且仅重定向到 https://www.exampledomain.com/。所以跳过这个。

  2. 这是“核心”版本,它说“当请求仅是 http 时,将其重定向到适当的 https 版本”。不多也不少。

  3. 与 2 类似,但还添加了 mod_rewrite 在 Apache 中是否可用的条件。如果您确定,则不需要添加它(如果没有 mod_rewrite,这些方法都不会起作用)。此外,它在域名开头去掉“www”,因此所有流量都被重定向到网站的非 www 版本(从 www.somedomain.com 到 somedomain.com)

  4. 这个缺少[L,R=301],可能是误删了

  5. 类似于 2,但重定向到 www 版本的域名。

  6. 类似于 2,但不是通用的,仅适用于 example.com(您不想在现实世界中使用)。

因此,如果您不想摆弄地址中的 www,请选择 2,如果您愿意,请选择 3 或 5。您可以在.htaccess 的开头添加RewriteEngine On,它需要onlu 一次,而不是每个规则。如果您想在不同的服务器上使用相同的代码并且不确定哪些模块可用,您可以添加 3 中的 &lt;IfModule mod_rewrite.c&gt;&lt;/IfModule&gt;

【讨论】:

  • 非常感谢您提供的信息。应该像下面这样吗?默认情况下,从开始 WordPress 到结束 WordPress 就在那里。我在上面添加了重定向代码。 RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] # BEGIN WordPress &lt;IfModule mod_rewrite.c&gt; RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] &lt;/IfModule&gt; # END WordPress
猜你喜欢
  • 2015-05-15
  • 2017-05-08
  • 1970-01-01
  • 1970-01-01
  • 2018-12-26
  • 2017-06-17
  • 2018-10-19
  • 2015-06-23
  • 2019-08-13
相关资源
最近更新 更多