永久重定向与 RedirectMatch,哪个更适合在 Apache 中强制实施 SSL 安全性?

永久重定向与 RedirectMatch,哪个更适合在 Apache 中强制实施 SSL 安全性?

我一直在使用:

RedirectMatch /(.*) https://www.website.com/$1

在 apache 中强制从虚拟主机 80 重定向到 443。

我的理由是,抓取用户输入的任何内容并将其直接转换为 https 是有意义的。然而,我也经常看到这种用法:

Redirect permanent / https://www.website.com/

我一直没有使用它,因为我认为它不是用户输入的 https 地址的准确翻译。

哪一个最适合对整个站点实施加密以及使用严格传输安全?

答案1

Redirect 或 RedirectMatch 可以是 301 或 302,具体取决于您如何调用它,因此这不是两者之间的区别。

区别与含义:

不同之处Redirect仅匹配简单的 URL-PATH,同时RedirectMatch允许您使用正则表达式模式匹配。

此外,301 是永恒的重定向,302 是暂时的重定向。

寻找戈多

为了保持搜索引擎排名,您应该始终使用 301 重定向。对于 SEO,理想情况下,您需要在协议和 FQDN 中保持一定的一致性,因此这不仅仅是强制实施 SSL/TLS。

假设您的主页的“完整”URL 是:

https://www.example.com/index.php

尽管您可能拥有一个不区分大小写的服务器,并且该服务器将所有子域别名为根域,并且如果路径中没有隐式文件“index”,它将使用该文件,这样您只需在浏览器的位置字段中输入 example.com 即可到达相同的位置。虽然这确实使用户可以轻松地直接输入,但example.com它会给 SEO 带来潜在的问题。如果您的服务器是这样设置的,那么所有这些 URL 解析为完全相同的内容:

https://www.example.com/index.php
https://www.example.com/index
https://www.example.com/
https://example.com/index.php
https://example.com/index
https://example.com/
http://www.example.com/index.php
http://www.example.com/index
http://www.example.com/
http://example.com/index.php
http://example.com/index
http://example.com/

但即使你的服务器认为这些都是相同的,并且提供的内容也是相同的,Google 认为它们都是唯一的 URL,当他们确定这 12 个 URL 提供重复内容时,您将在搜索排名中受到惩罚。

并且仅仅确保所有内部链接都指定为首选 URL 是不够的 — — 您的网站的一些粉丝无疑会发布链接,并按照http://example.com您喜欢的方式写链接https://www.example.com,因此您需要让 Google 知道这http://example.com应该被解释为您的首选,而做到这一点的方法是使用永久重定向。

现在你可以创建一个Redirect永久RedirectMatch的 (301),只需在行中添加 301 即可:

Redirect 301 /here/ https:www.example.com/there/
RedirectMatch 301 /here/(.*) https:www.example.com/there/$1

此外,对于永久重定向,这些变化如下:

Redirect 301
Redirect Permanent
RedirectPermanent

都代表着完全相同的意思。

玫瑰不是玫瑰不是玫瑰不是玫瑰不是RoSe

我甚至还没有讨论目录或参数的尾部斜杠和大小写敏感性,但这些也会产生影响。Google 唯一不关心大小写或尾部斜杠的情况是在根域。

所有这些都与谷歌相同:

www.MyFunDomain.com/
www.MyFunDomain.com
www.myfundomain.com/
www.myfundomain.com
WWW.MyFuNdOmAiN.COM

这是因为域名不区分大小写。但是这些:

example.com/MyPath/
example.com/MyPath
example.com/mypath/
example.com/mypath
example.com/mYpAtH

都被认为是不同的即使您的系统或服务器认为它们相同。虽然 TLD 上不需要尾部斜杠,但所有路径上都需要它们。le.com/mypath/暗示le.com/mypath/index.htmlle.com/mypath暗示le.com/mypath.html

最佳实践

解决办法是:

1)制定内部标准,所有路径和文件名均采用小写仅有的

2)设置重写规则,对方案、子域、尾随路径斜杠和文件扩展名的所有变化进行永久 301 重定向。

因为可能性实际上是无穷无尽的,并且Redirect需要区分大小写的路径,RedirectMatch或者Rewrite是更好的选择,以便每个可能的变化:

https://www.example.com/sitepath/

向 Google 爬虫程序显示的方式正是如此,而不是

http://example.com/SitePath/index.php

我不会发布重写规则的具体示例,因为有太多变量(包括 HSTS 问题)和产生问题的方法。相反,我会推荐你​​阅读丹·莫雷尔非常棒的教程为了非 HSTS站点以及单独的关联对于 HSTS網站。

答案2

Redirect是精确的翻译。正如所写,Redirect是首选,因为它发送 HTTP 状态代码 302,而RedirectMatch发送 301。

相关内容