我有一个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
我错过了什么?
—编辑—
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