Mod_rewrite将默认路径与www结合使用。和https重定向

时间:2017-08-18 09:31:27

标签: apache .htaccess redirect mod-rewrite

我试图减少我们网站上的重定向次数。我已经设法合并了一些重定向代码(强制使用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]

2 个答案:

答案 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]