htaccess重定向不保留协议

时间:2015-02-23 12:31:18

标签: php .htaccess

我在.htaccess设置了一个规则来添加一个尾部斜杠,但是如果主机是https,这会导致它通过http重定向,但我没有#{1}}。明白为什么:

# add trailing slash
RewriteCond %{REQUEST_URI} ^\/([A-Za-z0-9\-\/]*[A-Za-z0-9\-]+)$
RewriteRule .* /%1/ [R=301,L]

因此,如果我请求https://www.example.com/some/page,则会触发.htaccess中的规则添加尾部斜杠,但会将我重定向到http://www.example.com/some/page/

如果以 https: // www.example.com/some/page请求页面,为什么上面的规则会将其重定向到 http: // www .example.com的/一些/页/?

如何在仍然使用正确的主机重定向时添加尾部斜杠?

1 个答案:

答案 0 :(得分:1)

为什么不修改你的规则:

RewriteCond %{REQUEST_URI} ^\/([A-Za-z0-9\-\/]*[A-Za-z0-9\-]+)$
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI}/ [R=301,L]

这也会强制使用 HTTPS ,这总是一件好事。 :)