16

%{REQUEST_FILENAME} 和 %{THE_REQUEST} 返回什么?

我刚刚检查了我们的 .htaccess 文件,我突然意识到,我对此知之甚少。下面的代码同时使用两者。它有效,我只是想了解它。

#remove / at the end of URL
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+)/$ /$1 [L,R=301]

#remove /index.php at the end of URL
RewriteCond %{THE_REQUEST} ^.*/index.php
RewriteRule ^(.*)index.php$ /$1 [R=301,L] 

干杯,马克

4

1 回答 1

28

感谢 Ahmed的链接
作为任何懒得点击它的人的快速参考点,这是我所追求的......

THE_REQUEST 浏览器向服务器发送的完整 HTTP 请求行(例如,“GET /index.html HTTP/1.1”)。这不包括浏览器发送的任何附加标头。与下面的大多数其他变量不同,该值尚未被转义(解码)。

REQUEST_URI 请求的 URI 的路径组件,例如“/index.html”。这特别排除了作为其自己的变量 QUERY_STRING 可用的查询字符串。

REQUEST_FILENAME 与请求匹配的文件或脚本的完整本地文件系统路径,如果在引用 REQUEST_FILENAME 时服务器已经确定了这一点。否则,例如在虚拟主机上下文中使用时,与 REQUEST_URI 的值相同。根据 AcceptPathInfo 的值,服务器可能只使用了 REQUEST_URI 的一些前导组件来将请求映射到文件。

于 2013-06-20T11:21:29.520 回答