Mod rewrite 重写逻辑中断?

Mod rewrite 重写逻辑中断?,mod-rewrite,apache2,kohana,rewrite,Mod Rewrite,Apache2,Kohana,Rewrite,我的vHost中有以下重写逻辑,在重定向子域方面似乎一切正常,但一旦我向URI添加路径,我的apache_error.log中就会出现错误 以下是重写逻辑: RewriteEngine On # Remove the www alias RewriteCond %{HTTP_HOST} ^www\.13labs\.net$ [NC] RewriteRule ^(.+)$ http://13labs.net$1 [R=301,L] RewriteCond

我的vHost中有以下重写逻辑,在重定向子域方面似乎一切正常,但一旦我向URI添加路径,我的apache_error.log中就会出现错误

以下是重写逻辑:

    RewriteEngine On

    # Remove the www alias
    RewriteCond %{HTTP_HOST} ^www\.13labs\.net$ [NC]
    RewriteRule ^(.+)$ http://13labs.net$1 [R=301,L]

    RewriteCond %{REQUEST_URI} ^.+$
    RewriteCond %{REQUEST_FILENAME} !\.(gif|jpe?g|png|js|css|swf|php|ico|txt|pdf)$ [OR]
    RewriteCond %{REQUEST_FILENAME} !-f [OR]
    RewriteCond %{REQUEST_FILENAME} !-d [OR]
    RewriteCond %{REQUEST_FILENAME} !-l
    RewriteRule ^ - [L]

    RewriteCond %{HTTP_HOST} !^www\.13labs\.net$ [NC]
    RewriteCond %{HTTP_HOST} ^(www\.)?([^\.]+)\.13labs\.net$ [NC]
    RewriteRule ^(.+)$ /index.php?subdomain=%2&kohana_uri=$1 [PT,L,QSA]

    RewriteRule ^(.+)$ /index.php?kohana_uri=$1 [PT,L,QSA]
我试图点击admin.13labs.net/login,它应该被重写为13labs.net/index.php?subdomain=admin&kohana_uri=/login。但是,在我的apache_error.log中,我收到以下消息:

[Mon Aug 30 23:56:06 2010] [error] [client 74.63.151.37] File does not exist: /var/www/13labs.net/html/login
有什么线索吗?我已经玩了大约一个小时了,我被难住了

问候,,
Andrew

您的第二条重写规则及其相应的条件看起来将停止对任何URL的重写。如果文件没有正确的扩展名,或者不是文件,或者不是目录,或者不是链接,则匹配。没有任何资源可以同时是文件、目录和链接,因此所有URL都将匹配——它们都将按原样传递,因为[L]标志阻止任何后续重写


如果您的目的是防止重写与现有文件、链接或目录对应的URL,请删除从您的条件中删除[OR],并从检查文件扩展名的条件中删除[OR]。

看起来[OR]需要保留,但是!我得走了。这是有效的:RewriteCond%{REQUEST_URI}^.+$RewriteCond%{REQUEST_FILENAME}.gif | jpe?g | png | js | css | swf | php | ico | txt | pdf$[或]RewriteCond%{REQUEST_FILENAME}-f[或]RewriteCond%{REQUEST_FILENAME}-d}-d}-d[或]RewriteCond%{REQUEST{u FILENAME}-l}-l]