htaccess重定向未保留协议


htaccess redirect not preserving protocol

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

# 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/some/page/?

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

为什么不将规则修改为:

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

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