我有多个托管域并使用:
RewriteCond %{HTTP_HOST} !^www\.domain\.com [NC]
RewriteCond %{HTTP_HOST} !^$
RewriteRule ^/?(.*) http://www.domain.com/$1 [L,R,NE]
将它们重定向到默认域,但我还想将任何https流量重定向到http,但不强制其他区域,例如/ server-status,administrator,phpmyadmin。这可能吗?
我是否可以在不引起循环的情况下实现此目的,并且几乎不保留它是否强制443 / https或http / 80流量?
答案 0 :(得分:0)
您可以使用https
重定向的其他规则,但有一些例外:
RewriteCond %{HTTPS} on
RewriteCond %{THE_REQUEST} !\s/(server-status|phpmyadmin|administrator)
RewriteRule ^ http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L,NC,NE]
RewriteCond %{HTTPS} off
RewriteCond %{THE_REQUEST} \s/(server-status|phpmyadmin|administrator)
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L,NC,NE]
RewriteCond %{HTTP_HOST} !^www\.domain\.com [NC]
RewriteCond %{HTTPS}s on(s)|
RewriteRule ^ http%1://www.domain.com/%{REQUEST_URI} [L,R=301,NE]
答案 1 :(得分:0)
感谢你的帮助Anubhava
我找到了问题,因为我今天有时间完成它。我仍在使用我的规则将托管域转发到我的默认域名,如下所示:
RewriteCond %{HTTP_HOST} !^www\.domain\.com [NC]
RewriteCond %{HTTP_HOST} !^$
RewriteRule ^/?(.*) http://www.domain.com/$1 [L,R,NE]
比301规则更好,更快。
我还有一个扩展,可以将后端的所有流量重定向到https但不强制。如果需要,我还可以选择强制重定向其他插件和模块等。
我设法找到了罪魁祸首!问题是cloudflare.com保留我的缓存并将我的连接重定向为一个循环到http然后https。
如果您有CDN,请确保清除缓存或确保https选项正确。
问题解决了。