我的 PHP 项目中有一个前端控制器。这是代码;
.htaccess
文件
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php [PT,L]
</IfModule>
index.php
文件
<?php
list($url) = explode('?', $_SERVER['REQUEST_URI']);
$url = trim(trim($url), '/');
if(!file_exists('pages/'.$url.'.php')
header('Location: 404.html');
require_once 'inc/head.php';
require_once 'pages/'.$url.'.php';
require_once 'inc/foot.php';
?>
我假设每个请求的 URL 都必须通过 index.php 文件。但如果 URL 服务器中有一个\
(如 %5C),则答案是“未找到”。
问题;
- 为什么字符有例外
\
?有没有这样的角色? \
使 Apache 搜索文件的常用字符是什么?为什么不直接忽略?- Apache 在哪里查找但未找到该文件?
注意:我的系统是带有 Apache 2.2.21 和 PHP 5.3.10 的 Windows。注意2:这只是一个示例代码,所以不提供更好的方法。