mod_rewrite将所有内容重定向到https,但一个文件除外

时间:2013-10-02 15:52:51

标签: apache mod-rewrite

我使用此代码

RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

将所有请求重定向到HTTPS,这没关系。

现在除了一个文件index810.php

之外我想要同样的东西

当我这样写的时候

RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} !^ index810.php
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}  

我收到太多重定向,有任何建议。

提前谢谢

2 个答案:

答案 0 :(得分:5)

解决方案是使用非重写规则:

# do nothing for /index810.php
RewriteRule ^index810\.php$ - [L]
# else ...
RewriteCond %{HTTPS} off
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI}

你的模式错了:

  • ^和index810.php之间有空格
  • %{REQUEST_URI}是所有HTTP路径(即,如果在文档根目录,则为=/index810.php

答案 1 :(得分:0)

接受的答案对我不起作用。但这确实如此:

RewriteCond %{THE_REQUEST} !/index810\.php [NC]
RewriteCond %{HTTPS} off
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI}