重定向.htaccess仅用于/ root服务器并单独留下DIR?

时间:2014-10-02 23:36:15

标签: php apache .htaccess mod-rewrite redirect

我有多个托管域并使用:

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流量?

2 个答案:

答案 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选项正确。

问题解决了。