301重定向后是否需要保留HTTPS RewriteRule?

时间:2020-10-22 14:16:35

标签: apache .htaccess redirect https

我已经成功地完成了通配符301的重定向,但是我想知道是否有必要保留强制使用HTTPS的重写规则以及.htaccess文件中代码的顺序是否重要。

例如,我应该将重定向链从http://oldsite.comhttps://oldsite.comhttps://newsite.com

这是旧网站上的.htacess文件:

# HTTPS forced by SG-Optimizer
<IfModule mod_rewrite.c>
    RewriteEngine On
    
    RewriteCond %{HTTP:X-Forwarded-Proto} !https
    RewriteCond %{HTTPS} off
    RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</IfModule>
# END HTTPS

#REDIRECT
Redirect 301 / https://newsite.com/
#END REDIRECT

1 个答案:

答案 0 :(得分:3)

首先,将mod_rewrite指令与RedirectRedirectMatch指令混合使用是一个坏主意,因为它们是Apache中的不同模块,并且不同模块的执行顺序不同。

第二,您还应避免在浏览器中引起多次重定向,因为这被认为是不良的用户体验,并且还将给您的Web服务器造成不必要的负担。

您应将特定的重定向规则放置在通用http -> https之前,如下所示:

<IfModule mod_rewrite.c>
    RewriteEngine On
    
    #REDIRECT
    RewriteCond %{HTTP_HOST} ^(?:www\.)?oldsite\.com$ [NC]
    RewriteRule ^ https://newsite.com%{REQUEST_URI} [L,NE,R=301]
    #END REDIRECT

    RewriteCond %{HTTP:X-Forwarded-Proto} !https
    RewriteCond %{HTTPS} off
    RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</IfModule>
# END HTTPS

通过这种方式,将oldsite.com的所有流量都通过一次重定向重定向到https://newsite.com

仅当您支持http -> https以外的任何其他网站时,才会执行您的oldsite.com重定向。