Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.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 在mod_rewrite中是否有一个变量可以与%{DOCUMENT_ROOT}%{REQUEST_FILENAME}等效?_Apache_Mod Rewrite - Fatal编程技术网

Apache 在mod_rewrite中是否有一个变量可以与%{DOCUMENT_ROOT}%{REQUEST_FILENAME}等效?

Apache 在mod_rewrite中是否有一个变量可以与%{DOCUMENT_ROOT}%{REQUEST_FILENAME}等效?,apache,mod-rewrite,Apache,Mod Rewrite,我在httpd.conf文件中使用mod_rewrite(不是在.htaccess文件中),我想知道是否有一个变量可以代表整个请求;ieDOCUMENT\u ROOT表示“路径/to/htdocs”,而REQUEST\u FILENAME表示“/path/to/file.php”。是否有一个单独的Apache变量同时表示这两个变量,如“path/to/htdocs/path/to/file.php” 我问的原因是,在我的重写指令中,这不起作用: RewriteCond %{REQUEST_FIL

我在httpd.conf文件中使用mod_rewrite(不是在.htaccess文件中),我想知道是否有一个变量可以代表整个请求;ie
DOCUMENT\u ROOT
表示“路径/to/htdocs”,而
REQUEST\u FILENAME
表示“/path/to/file.php”。是否有一个单独的Apache变量同时表示这两个变量,如“path/to/htdocs/path/to/file.php”

我问的原因是,在我的重写指令中,这不起作用:

RewriteCond %{REQUEST_FILENAME} -f
但这确实:

RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} -f
奇怪的是,我看过的所有教程都使用第一种格式,但这对我来说不起作用,我自己想出了第二种格式——我从未见过第二种格式在任何教程中使用。这与我用httpd.conf而不是.htaccess文档编写的事实有关吗


当我输出%{REQUEST\u FILENAME}变量时,它不包括文档根。

%{document\u root}
不是website.com,它是文件系统上与站点指令关联的本地路径。例如:
/var/www/localhost/htdocs

如果想要website.com,则需要
%{SERVER\u NAME}
(由指令定义)或
%{HTTP\u HOST}
,后者由主机:请求头定义

另外,
%{REQUEST\u FILENAME}
包含文档根目录,它或多或少等同于:
%{document\u root}%{REQUEST\u URI}
。因此,给定上面的文档根示例,请求URI为
/images/title.png
,那么
%{request\u FILENAME}
将是
/var/www/localhost/htdocs/images/title.png

如果您要查找的是:website.com/path/to/file.php,那么,没有。没有一个变量可以为您组合这些内容。您想要:

%{HTTP_HOST}%{REQUEST_URI}

这与我用httpd.conf而不是.htaccess文档编写的事实有关吗

对。从:

请求\u文件名

与请求匹配的文件或脚本的完整本地文件系统路径,如果服务器在引用
request\u FILENAME
时已经确定了该路径。否则,如在虚拟主机上下文中使用时,与
请求URI
相同的值

REQUEST\u URI
是“请求的URI的路径组件,例如
/index.html

奇怪的是,我看过的所有教程都使用第一种格式

因为大多数教程都是针对.htaccess(或
)上下文编写的

如果在每服务器上下文中使用(即,在请求映射到文件系统之前)
SCRIPT\u FILENAME
request\u FILENAME
不能包含完整的本地文件系统路径,因为在此处理阶段路径未知。在这种情况下,两个变量最初都包含
REQUEST\u URI
的值为了在每个服务器上下文中获取请求的完整本地文件系统路径,请使用基于URL的前瞻
%{LA-U:request_FILENAME}
来确定
请求文件名的最终值


啊,很抱歉关于文档根的混淆。问题是,在我的mod_rewrite指令中,当我使用RewriteCond时,我必须检查文件是否存在,当我只使用%{REQUEST_file}时它不起作用,但当我使用%{DOCUMENT_ROOT}%{REQUEST_file}时它起作用。为什么会这样?当我输出%{REQUEST_FILENAME}变量时,它不包括文档根。
%{SERVERNAME}%{REQUEST_URI}