[英]Mod_rewrite combine default path with www. and https redirect
我正在尝试减少我们网站上的重定向次数。 我已经设法合并了一些重定向代码(强制使用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]
您可以使用(按此顺序):
RewriteRule ^$ /en/
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule (.*) https://www.example.com/$1 [R=301,L]
如果这是语言测试,则还可以测试值(例如:en,fr或de),并更改其中的第一行
RewriteRule !^(en|fr|de)/ /en/ [NC]
应该管用:
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]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.