.htaccess 将http重定向到https和301重定向

jucafojl  于 2022-11-16  发布在  其他
关注(0)|答案(1)|浏览(268)

我有大约500个链接,SEO人员要求在网站刷新后更新。主要的变化是所有内容都使用https,而不是http。我想让htaccess文件尽可能简单。链接分为以下4组。

第一组(站点根目录)

http://www.example.com -〉https://www.example.com
http://example.com -〉https://www.example.com

第二组(http到https)

http://www.example.com/samepage -〉https://www.example.com/samepage

第三组(将大量旧页面和目录转发到单个新页面或目录)

http://www.example.com/old -〉https://www.example.com/new
http://www.example.com/aged -〉https://www.example.com/new

第四组(旧页到新页)

http://www.example.com/oldpage -〉https://www.example.com/newpage
我看过301重定向,但它们没有使用完整的旧URL到新的,只是子目录部分。我需要改变HTTP到HTTPS之前或之后的301的?

ibps3vxo

ibps3vxo1#

这些mod_rewrite指令应该放在.htaccess文件的顶部附近。最具体的重定向应该放在第一位(即第三组和第四组),然后是第一组和第二组。(第一组和第二组实际上是一回事。)
第三组和第四组是将旧URL重定向到新URL的标准重定向,与所请求的方案/主机名无关。

RewriteEngine On

# Specific redirects....
# Groups Three and Four - whichever is more specific should come first
RewriteRule ^oldpage$ https://www.example.com/newpage [R,L]

RewriteRule ^(old|aged)$ https://www.example.com/new [R,L]

# Canonical redirect (HTTP to HTTPS and apex to www)
RewriteCond %{HTTPS} !on [OR]
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule (.*) https://www.example.com/$1 [R,L]

通过按此顺序使用指令,您最多只能获得1个重定向。您可以先包含规范重定向,这样就不需要在其他重定向中指定绝对URL。但是,这可能会导致在访问某个旧URL时出现额外的重定向。
这些目前是暂时的(302)重新导向。只有在您确定R运作正常时,才能将其变更为R=301(永久)。

相关问题