.htaccess重写合并
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了.htaccess重写合并相关的知识,希望对你有一定的参考价值。
我目前在.htaccess
文件中有两个重写规则,现在需要添加另一个。但是,GTMetrix已经在这里给我一个F评级,说明:避免登陆页面重定向
- 第一个重定向将
www.
添加到URL。 - 第二个重定向将一个子目录添加到URL。
- 第三个(建议的)重定向将
https
添加到URL的开头。
RewriteEngine on #First rewrite any request to the wrong domain to use the correct one (here www.) RewriteCond %{HTTP_HOST} !^www. RewriteRule ^(.*)$ http://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301] #Then, rewrite to /catalog RewriteCond %{REQUEST_URI} !^/catalog [NC] RewriteRule ^(.*)$ /catalog/$1 [L] #Now, rewrite to HTTPS: #RewriteCond %{HTTPS} off #RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
有没有办法将这些组合成一个重定向?或者,着陆页重定向不是那么糟糕吗?
答案
您的第1和第3个重定向规则可以合并为一个,并且应该在重写规则之前保留:
RewriteEngine On
# add www and turn on https in same rule
RewriteCond %{HTTP_HOST} !^www. [NC,OR]
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^(?:www.)?(.+)$ [NC]
RewriteRule ^ https://www.%1%{REQUEST_URI} [R=301,L,NE]
#Then, rewrite to /catalog
RewriteCond %{REQUEST_URI} !^/catalog/ [NC]
RewriteRule ^(.*)$ /catalog/$1 [L]
在测试此更改之前,请务必清除浏览器缓存。
以上是关于.htaccess重写合并的主要内容,如果未能解决你的问题,请参考以下文章
DirectAdmin Apache - .htaccess 重写