2015-02-23 56 views
0

我有一个规则,.htaccess设置添加一个结尾的斜线,但如果主机https,这使得它通过http重定向,但我不明白为什么:htaccess的重定向不保留协议

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

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

如果一个页面请求为HTTPS: //www.example.com/some/page,为什么它上面重定向到HTTP规则: //www.example.com/some/page/ ?

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

+0

难道你不能只在你的重定向中添加一个结尾的斜杠吗? – Blaatpraat 2015-02-23 12:32:31

+0

http://stackoverflow.com/questions/10489895/http-to-https-through-htaccess – caramba 2015-02-23 12:35:34

+0

可能的重复[你如何将HTTPS重定向到HTTP?](http://stackoverflow.com/questions/8371/how https-to-http) – 2015-02-23 12:36:42

回答

1

你为什么不只是修改规则如下:

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

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

+0

,因为代码/ htaccess被众多网站共享,其中一些需要通过“https”服务,一些是http http: – 2015-02-23 12:45:17

+0

您可以将它放在负责特定网站的子目录中。 – 2015-02-23 12:50:35

+0

这不是一个真正可行的解决方案。可能有10个通过https服务的网站,这意味着要添加和维护10个独立的'.htaccess'文件。我不明白为什么规则将'https'重定向到'http' – 2015-02-23 12:55:01