RewriteRule帮助指向http / https和来自http / https

时间:2011-03-29 14:52:43

标签: mod-rewrite

在我的Apache配置文件中,如果页面名称已登录,我有以下内容重定向到https:

<VirtualHost 1.2.3.4:80>
    -- snip --

    RewriteEngine On
    RewriteRule ^/(.*)login(.*) https://domain/$login$2 [L]
</VirtualHost>

这是我遇到麻烦的部分。我想将每个与^/(.*)login(.*)不匹配的页面重定向回http。

<VirtualHost 1.2.3.4:443>
    -- snip --

    RewriteEngine On
    RewriteRule ^/(.*) http://domain/$l [L]
</VirtualHost>

但是正如我所知,我创建了一个循环重写。

我错过了什么?

。,IP 1.2.3.4是假的。 :)

2 个答案:

答案 0 :(得分:0)

未经测试,但应与之合作:

RewriteEngine On
RewriteRule ^(.*)login(.*) https://domain/${REQUEST_URI} [L]
RewriteRule (.*[^l][^o][^g][^i][^n].*) http://domain/${REQUEST_URI} [L]

也许您还可以忘记(.*[^l][^o][^g][^i][^n].*) qnd匹配.*,因为[L]应该阻止HTTPS请求在其重写规则后匹配。待测试。

答案 1 :(得分:0)

这解决了我的问题:

RewriteEngine On
RewriteCond %{REQUEST_URI} !^/(.*)login(.*)
RewriteRule ^/(.*) http://domain/$1 [L]