Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache 为什么';当URL包含真实文件名时,my.htaccess是否工作?_Apache_.htaccess - Fatal编程技术网

Apache 为什么';当URL包含真实文件名时,my.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

我试图将某个子目录中的所有请求传递给一个名为“handler.php”的文件。如果URL不是一个实际的文件名,但如果我输入了一个真实的文件名,我现有的.htaccess就不起作用;相反,它直接加载该文件,从不点击handler.php

有人能解释一下我做错了什么吗?.htaccess文件如下所示:

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]