我试图减少我们网站上的重定向次数。我已经设法合并了一些重定向代码(强制使用www。和https://),但我还需要添加一个默认路径(/ en /)以防万一。
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule (.*) https://www.example.com%{REQUEST_URI} [R=301,L]
我要实现的另一部分代码是:
RewriteRule "^/$" /en/
因此,如果没有给出路径或参数,则需要重定向到/ en /。 (现在我在PHP中执行此操作,这意味着几乎每个人都在键入" example.com"获得两个重定向,其中一个应该足够了)
我的目标是将这些规则合并为一个重定向。这可能吗?
最后,我还有一个内部重写规则,这可能与上述问题无关,但我会为了完整性而添加它:
RewriteRule "(^|/)\." - [F]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$/? index.php?rewrite=$1 [QSA]
答案 0 :(得分:1)
您可以使用(按此顺序):
RewriteRule ^$ /en/
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule (.*) https://www.example.com/$1 [R=301,L]
如果这是语言测试,您还可以测试值(ex:en,fr或de)并更改
中的第一行RewriteRule !^(en|fr|de)/ /en/ [NC]
答案 1 :(得分:0)
应该工作:
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{REQUEST_URI} ^/$
RewriteRule (.*) https://www.example.com/en%{REQUEST_URI} [R=301,L]
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule (.*) https://www.example.com%{REQUEST_URI} [R=301,L]