Apache RewriteCond没有完全正常工作

时间:2012-03-28 06:47:51

标签: regex apache mod-rewrite

我使用Apache作为Web服务器来重写URL。模式很简单:

if request starts with "/services" then
  rewrite is off
else
  using ssl. replaces http with https

所以我有自己的解决方案:

 RewriteEngine On
 RewriteCond %{REQUEST_URI} !^/services.* [NC]
 RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

此外,我通过urL分隔访问日志,一个是ssl访问日志,另一个是没有ssl访问日志。我想要看的是没有ssl访问日志包含请求只从服务开始。但我发现一些请求在没有ssl访问日志喜欢这样:

10.75.6.22 - - [28/Mar/2012:08:38:08 +0800] "GET /validate/showValidateProgress.jsp?
10.186.96.70 - - [28/Mar/2012:09:01:48 +0800] "GET /vjsp/confirm.jsp?

不以/ services开头的请求应该使用ssl,遗憾的是我的配置文件无效。但是在ssl访问日志中仍然存在一些请求,这意味着一些请求满足了我的期望。   我对日志非常困惑,无法弄清楚我的配置有什么问题。感谢。

1 个答案:

答案 0 :(得分:0)

这应该有效:

# if request starts with "/services" then rewrite is off
RewriteRule ^/services - [QSA,NC,L]
# using ssl. replaces http with https
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}