%{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]
干杯, 标记
答案 0 :(得分:22)
感谢艾哈迈德the link 作为一个快速的参考点,任何懒得点击它的人都是我追求的......
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的某些主要组件将请求映射到文件。