我有大约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?
答案 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
(永久)。