Mod_rewrite重定向到特定文件

时间:2015-03-26 19:03:06

标签: apache .htaccess mod-rewrite

我将首先向您展示我的代码,然后我将解释我想要实现的目标。

RewriteEngine On

RewriteRule ^core$ library/core.php [L]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^$ public/ [L]

RewriteRule ^(.*)$ public/$1 [L]

我使用core.php作为ajax发送的多个请求的处理器文件。当我提出请求时,它会像" http://mysite/core"我希望它通过.htaccess文件直接发送到" http://mysite/library/core.php"。我测试了它,它运行得很好直到那条线(我想这不奇怪)。但是,如果请求不是" http://mysite/core",我想测试该请求既不是现有文件,也不是文件夹,如果它不是任何一个,我想:

如果我删除最后一个RewriteRule,一切正常。但是,如果我允许,(即使我访问" http://mysite/core")它仍会将我重定向到" http://mysite/public/library/core.php"。我无法弄清楚发生了什么。这就像他在第一个RewriteRule中没有意识到我的[L]标志。

非常感谢任何帮助。提前谢谢。

1 个答案:

答案 0 :(得分:1)

这样做:

RewriteEngine On

RewriteRule ^core$ library/core.php [L,NC]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ public/$1 [L]

RewriteCond仅适用于下一个RewriteRule