我一直在使用:
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.html
和le.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。