mod_rewrite无法redirect到lib文件夹

我有一个rewriterule,除了lib文件夹的一切工作。 规则是

RewriteRule ^/uk(.*) $1 

这是一套更为复杂的规则之一,但是除了这个之外,我已经禁用了所有的规则。 该规则适用于lib文件夹的所有内容:

http://site.local/lib/cookies.js的作品,但http://site.local/uk/lib/cookies.js不。

网站上的其他path都可以redirect,例如:

http://site.local/uk/course/view.php?id = 15转到http://site.local/course/view.php?id = 15

  • 其他名称只有三个字母的文件夹工作。
  • 英国/ otherpath / lib的作品。
  • lib文件夹中没有htaccess文件
  • 站点根目录中没有htaccess文件(规则在虚拟主机定义中)
  • 这个问题发生在Ubuntu和RedHat(开发和生产)
  • 这个问题发生在同事工作站上的另一个moodle站点上
  • lib文件夹的权限与目录树的其余部分完全相同

我错过了什么?

—编辑—

 RewriteLog "/var/log/apache2/rewrite.log" RewriteLogLevel 9 

给我

 127.0.0.1 - - [22/Sep/2011:11:21:57 +0100] [site.local/sid#7f15a0b345d0][rid#7f15a0e1b270/initial] (2) init rewrite engine with requested uri /uk/lib/cookies.js 127.0.0.1 - - [22/Sep/2011:11:21:57 +0100] [site.local/sid#7f15a0b345d0][rid#7f15a0e1b270/initial] (3) applying pattern '^/uk(.*)' to uri '/uk/lib/cookies.js' 127.0.0.1 - - [22/Sep/2011:11:21:57 +0100] [site.local/sid#7f15a0b345d0][rid#7f15a0e1b270/initial] (2) rewrite '/uk/lib/cookies.js' -> '/lib/cookies.js' 127.0.0.1 - - [22/Sep/2011:11:21:57 +0100] [site.local/sid#7f15a0b345d0][rid#7f15a0e1b270/initial] (2) local path result: /lib/cookies.js 127.0.0.1 - - [22/Sep/2011:11:21:57 +0100] [site.local/sid#7f15a0b345d0][rid#7f15a0e1b270/initial] (1) go-ahead with /lib/cookies.js [OK] 127.0.0.1 - - [22/Sep/2011:11:21:57 +0100] [site.local/sid#7f15a0b345d0][rid#7f15a0e232b0/initial] (2) init rewrite engine with requested uri /favicon.ico 127.0.0.1 - - [22/Sep/2011:11:21:57 +0100] [site.local/sid#7f15a0b345d0][rid#7f15a0e232b0/initial] (3) applying pattern '^/uk(.*)' to uri '/favicon.ico' 127.0.0.1 - - [22/Sep/2011:11:21:57 +0100] [site.local/sid#7f15a0b345d0][rid#7f15a0e232b0/initial] (1) pass through /favicon.ico 

所以它看起来像我应该工作?

这个问题在serverfault上得到了答案。 事实certificate,有一些可怕的默认行为,如果您在虚拟主机中编写规则,并且没有显式redirect到以{{DOCUMENT_ROOT}开头的path,则首先在文件系统的根目录中查找匹配的path。 我已经附加了下面的答案:

在我的本地机器上搞这个之后,看起来在检查document_root / lib目录之前,Apache将重写到/ lib文件系统上。

你应该改变你的重写:

 RewriteRule ^/uk(.*) %{DOCUMENT_ROOT}$1