将http重定向到https,301重定向

时间:2017-05-23 21:13:49

标签: .htaccess redirect

我有大约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重定向,但他们没有使用完整的旧网址到新的,只是子目录部分。我是否需要在301之前或之后将HTTP更改为HTTPS?

1 个答案:

答案 0 :(得分:1)

这些mod_rewrite指令应该接近.htaccess文件的顶部。最具体的重定向应首先(即第3组和第4组),然后是第一组和第二组。 (第一组和第二组真的是一样的。)

第三组和第四组标准将旧网址重定向到新网址,无论请求的方案/主机名如何。

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(永久)。