我一直在尝试使用apache .htaccess规则来强制所有网址https://www.
对于那些浏览过的人,请记住,由于多种原因,我不能在重写规则中使用“domain.com”。
例如:
https://domain.com to https://www.domain.com
http://domain.com to https://www.domain.com
http://www.domain.com to https://www.domain.com
但...
在我的情况下,我有很多域(由于是一个wordpress多站点),为每个域添加规则将是非常低效的。而且由于我在网络模式下使用wordpress MS,我有一些映射到基本网址的网站,特别是这些网站在尝试用mod重写以外的其他方式时很容易破解..然后我需要确保所有域使用www但MU域映射不强制www从网络模式的根站点...这是一种允许通过wp多网络插件将站点分离到网络的模式。所以这意味着我需要通过mod重写强制执行此操作 我在网上发现了这些变化,但我不确定最干净的方法是什么?
## force HTTPS and www RewriteCond %{HTTP_HOST} (?!^www\.)^(.+)$ [OR] RewriteCond %{HTTPS} off RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{HTTP_HOST} !^(dev|www)\. [NC] RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI}/ [R=302,L] RewriteCond %{HTTPS} off RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI}/ [R=302,L]
RewriteCond %{HTTP_HOST} !^www\. [NC,OR] RewriteCond %{HTTPS} off RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI}/ [R=302,L]
实现这一目标的最佳方法是什么? 谢谢
答案 0 :(得分:0)
您可以对所有3个条件使用此单一规则:
## force HTTPS and www
RewriteCond %{HTTP_HOST} !^www\. [NC,OR]
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteRule ^ https://www.%1%{REQUEST_URI} [L,R=302,NE]
在新浏览器中测试时,请注释掉所有其他规则,以避免旧的浏览器缓存。