我必须使url非case sentitive.Now它显示错误404 not found
所以我包含.htaccess文件并在其中包含以下代码
ErrorDocument 404 /404.php
并且还包括404.php并包含以下代码
$lower = strtolower($_SERVER['REQUEST_URI']);
$new = 'http://' . $_SERVER['HTTP_HOST'] . $lower;
if (file_exists(ltrim($lower, '/')) && $_SERVER['PHP_SELF'] != $lower)
{
header("Location: $new");
exit;
}
else
{
echo 'Page not found';
}
现在它没有显示404找不到错误。但是如果我们在网址中放入小写,它会重定向到主页。想法?
答案 0 :(得分:1)
要使Apache的行为不区分大小写,您应该使用以下设置:
// on httpd.conf
LoadModule speling_module modules/mod_speling.so
CheckCaseOnly on
我不推荐它,而是会向用户推荐一个带有建议类似页面的404。
答案 1 :(得分:0)
另一个替代方案是RewriteMap
规则,可以为您小写传入路径。请参阅http://httpd.apache.org/docs/2.3/rewrite/rewritemap.html#int(也应该适用于2.2)。
您基本上只需要检查URL是否存在,否则将其小写:
RewriteEngine On
RewriteMap lowercase int:tolower
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule (.+) ${lowercase:$1} [R]
或类似的东西。