我必须使网址不区分大小写。这意味着我必须工作http://www.test.com/About.php和http://www.test.com/about.php .. 我尝试了以下代码。但它不起作用。它显示了索引page.ie,它显示了索引页面的内容
#Options +FollowSymlinks
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA,NC]
答案 0 :(得分:4)
我已找到this question,其中有一个已接受的答案(复制如下以供参考):
CheckSpelling on
它似乎与你的情况相同(或类似)。
我不确定我是否可以将此问题视为重复,但如果引用的答案首先解决您的问题,那么值得一看:)
答案 1 :(得分:0)
* nix平台上的apache webserver与URL区分大小写,* nix文件系统也已区分大小写。
因此,不支持在apache配置中尝试执行的操作。
如果您只有一些文件,您也可以将规则硬编码到.htaccess中,或者开始创建重写地图:
RewriteRule ^about.php$ About.php [L,QSA]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA,NC]
您可能对使用模块(例如mod_spelling
)扩展您的网络服务器感兴趣,这些模块可以处理URL和磁盘之间的文件名差异。
另一种选择是您在index.php
内检查所请求文件的小写版本$_GET['q']
,如果存在,则include
以及return
之后:
$basename = strtolower(basename(realpath($_GET['q'])));
if (is_file($path = __DIR__ . '/' . $basename)) {
include($path);
return;
}
与实际文件系统进行比较的方式取决于您的具体需求和解决策略。