我试着重写许多帖子的条件,但似乎都不起作用。
我想在整个站点上强制HTTPS
。除了一个目录必须强制HTTP
。
所有带有www.example.com
的都应该是HTTPS
。dir3
中的任何内容:应将www.example.com/dir1/dir2/dir3/test.php
强制为HTTP
。
以下是我目前的情况。
RewriteEngine On
# Redirect HTTP traffic to HTTPS
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
RewriteCond %{HTTPS} on
RewriteRule ^dir3/ http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
2条答案
按热度按时间ryhaxcpt1#
我想出了一些有效的方法,但可能不是最优雅的解决方案。
ymdaylpp2#
使用Redirect和RedirectMatch指令可以精确控制哪些区域强制为http,哪些区域强制为https。如果希望客户端浏览器缓存重定向,请对301重定向使用permanent关键字(如果它真的是永久性的),或对于302忽略它(临时)重定向。注意,当测试时,如果您使用永久,那么浏览器将缓存重定向,并且在此之后您所做的任何更改都不会被看到...清除浏览器中的重定向高速缓存可能是一种挫折。
为了保持整洁,您可能还需要example.com在端口80和端口443上重定向www.example.com,以确保始终可以从www.example.com访问您的站点www.example.com。您可以使用上面的VirtualHosts中的ServerAlias,但是指定重定向迫使客户端浏览器中的名称总是显示www.example.com,而不是显示请求来自的任何名称。大多数网站的偏好是强迫(重定向)每个人访问www.example.com。