Apache Mod_rewrite重定向到特定文件

Apache Mod_rewrite重定向到特定文件,apache,.htaccess,mod-rewrite,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发送的几个请求的处理器文件。

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

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发送的几个请求的处理器文件。当我发出请求时,它将类似于“”,我希望它通过.htaccess文件直接发送到“”。我测试了它,它可以运行到那一行(我想不这样做会很奇怪)。但是,如果请求不是“”,我想测试该请求是否既不是现有文件,也不是文件夹,如果不是这些文件,我想:

  • 如果请求为“”,则重定向到“”
  • 如果请求为“”,则重定向到“”
如果我删除最后一条重写规则,一切正常。但是,如果我让它这样做,(即使我访问“”),它会不断将我重定向到“”。我不知道发生了什么事。就像他在第一条规则中没有注意到我的[L]标志一样

任何帮助都将不胜感激。提前感谢。

请这样做:

RewriteEngine On

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

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

RewriteCond
仅适用于下一个
RewriteRule

是的,它是这样工作的。非常感谢。无论如何,为什么(在我的例子中)第一条重写规则的[L]命中没有被应用?不管之后发生了什么。。。它不应该被忽略吗?实际上
L
并没有停止其他规则的执行,它只是结束当前规则。