Apache 为什么';当URL包含真实文件名时,my.htaccess是否工作?
我试图将某个子目录中的所有请求传递给一个名为“handler.php”的文件。如果URL不是一个实际的文件名,但如果我输入了一个真实的文件名,我现有的.htaccess就不起作用;相反,它直接加载该文件,从不点击handler.php 有人能解释一下我做错了什么吗?.htaccess文件如下所示:Apache 为什么';当URL包含真实文件名时,my.htaccess是否工作?,apache,.htaccess,Apache,.htaccess,我试图将某个子目录中的所有请求传递给一个名为“handler.php”的文件。如果URL不是一个实际的文件名,但如果我输入了一个真实的文件名,我现有的.htaccess就不起作用;相反,它直接加载该文件,从不点击handler.php 有人能解释一下我做错了什么吗?.htaccess文件如下所示: RewriteEngine On RewriteRule ^$ handler.php?url=$1 RewriteCond %{REQUEST_FILENAME} !-f RewriteCond
RewriteEngine On
RewriteRule ^$ handler.php?url=$1
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /handler.php?url=$1 [L,QSA]
我有什么地方做错了吗?我希望所有请求都将url传递到handler.php中。规则与实际文件不匹配,因为条件是这样的
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
如果请求不(!
)匹配真实文件(-f
),并且不匹配真实目录(-d
),则这些条件匹配
如果您想处理所有请求,不管发生什么,请删除这些条件。您还可以删除第一条规则,因为它也由这个规则处理。这只剩下第二条规则,但您必须使用另一个条件防止重写循环
RewriteCond %{REQUEST_URI} !^/handler\.php
RewriteRule ^(.*)$ /handler.php?url=$1 [L,QSA]