Apache 用插入符号重写COND无效

Apache 用插入符号重写COND无效,apache,.htaccess,Apache,.htaccess,下面是我正在编写的.htaccess文件: RewriteEngine On RewriteCond %{REQUEST_FILENAME} ^api RewriteRule (.+) test/$1.php [L] 现在,如果我进入我的浏览器并输入/api/asdf,我不会得到/test/api/asdf。如果我删除插入符号,它将按预期工作。同样有趣的是,如果我在浏览器中键入/bapi/asdf,它将不起作用,因为没有插入符号,这似乎是向后的 我做错什么了吗?如果插入符号不起作用,如何匹配R

下面是我正在编写的.htaccess文件:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} ^api
RewriteRule (.+) test/$1.php [L]
现在,如果我进入我的浏览器并输入
/api/asdf
,我不会得到
/test/api/asdf
。如果我删除插入符号,它将按预期工作。同样有趣的是,如果我在浏览器中键入
/bapi/asdf
,它将不起作用,因为没有插入符号,这似乎是向后的


我做错什么了吗?如果插入符号不起作用,如何匹配
REQUEST\u FILENAME
的开头?

变量
%{REQUEST\u FILENAME}
不会以
api
开头。因此,
^api
表达式将永远不匹配。请求文件名是请求应映射到的本地文件系统路径

您可以尝试以下方法:

RewriteEngine On
RewriteRule ^(api.+) test/$1.php [L]

它匹配以
/api

开头的请求。遗憾的是,api只是一个虚构的名称。本地文件系统路径与该路径匹配,因此假设根目录中有一个api目录。@tau然后在
^
之后需要一个
/
。假设您在linux或Mac上,文件系统路径可能以
/
开头,我刚刚尝试过,但不管是否使用正斜杠,它都不起作用。我尝试了^/api和^/api/两种方法,但都不起作用。