我将首先向您展示我的代码,然后我将解释我想要实现的目标。
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]标志。
非常感谢任何帮助。提前谢谢。
答案 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
。