如何让Linux服务器中的URL不区分大小写

我正在一个部署在Linux服务器上的网站工作。 我做了一些小改动。 我有文件夹read 。 要求是,如果我inputURL localhost:80/tom/Read../READ/read它需要导航到read文件夹内的read.php

我在根目录下创build了一个.htaccess文件。 通过查看此处提到的页面,放置在文件的下面代码中

 RewriteEngine On RewriteBase /tom/ RewriteMap lc int:tolower RewriteCond %{REQUEST_URI} [AZ] RewriteRule (.*) ${lc:$1} [R=301,L] RewriteCond %{REQUEST_URI} ^system.* RewriteRule ^(.*)$ /index.php/$1 [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [L] RewriteRule ![AZ] - [S=26] RewriteRule ^(.*)(A)(.*)$ $1a$3 [N,R=301] RewriteRule ^(.*)(B)(.*)$ $1b$3 [N,R=301] RewriteRule ^(.*)(C)(.*)$ $1c$3 [N,R=301] RewriteRule ^(.*)(D)(.*)$ $1d$3 [N,R=301] RewriteRule ^(.*)(E)(.*)$ $1e$3 [N,R=301] RewriteRule ^(.*)(F)(.*)$ $1f$3 [N,R=301] RewriteRule ^(.*)(G)(.*)$ $1g$3 [N,R=301] RewriteRule ^(.*)(H)(.*)$ $1h$3 [N,R=301] RewriteRule ^(.*)(I)(.*)$ $1i$3 [N,R=301] RewriteRule ^(.*)(J)(.*)$ $1j$3 [N,R=301] RewriteRule ^(.*)(K)(.*)$ $1k$3 [N,R=301] RewriteRule ^(.*)(L)(.*)$ $1l$3 [N,R=301] RewriteRule ^(.*)(M)(.*)$ $1m$3 [N,R=301] RewriteRule ^(.*)(N)(.*)$ $1n$3 [N,R=301] RewriteRule ^(.*)(O)(.*)$ $1o$3 [N,R=301] RewriteRule ^(.*)(P)(.*)$ $1p$3 [N,R=301] RewriteRule ^(.*)(Q)(.*)$ $1q$3 [N,R=301] RewriteRule ^(.*)(R)(.*)$ $1r$3 [N,R=301] RewriteRule ^(.*)(S)(.*)$ $1s$3 [N,R=301] RewriteRule ^(.*)(T)(.*)$ $1t$3 [N,R=301] RewriteRule ^(.*)(U)(.*)$ $1u$3 [N,R=301] RewriteRule ^(.*)(V)(.*)$ $1v$3 [N,R=301] RewriteRule ^(.*)(W)(.*)$ $1w$3 [N,R=301] RewriteRule ^(.*)(X)(.*)$ $1x$3 [N,R=301] RewriteRule ^(.*)(Y)(.*)$ $1y$3 [N,R=301] RewriteRule ^(.*)(Z)(.*)$ $1z$3 [N,R=301] 

但它不工作。

我是Linux环境的新手。 我不知道mod_speling。 这是一个文件吗? 它将在哪里位于Linux服务器?

通过使用mod_speling模块(这是标准的apache发行版的一部分),您可以轻松地使apache web服务器忽略大小写:

 CheckSpelling On CheckCaseOnly On 

重新启动httpd后,您可以将read权限设置为ReadREADread

嗨,我终于得到了解决方案。 将下面的代码放在/etc/httpd/conf/httpd.conf

 Loadmodulee speling_module modules/mod_speling.so <Ifmodulee mod_speling.c> CheckSpelling On CheckCaseOnly On </Ifmodulee> 

然后重新启动httpd:

 sudo service httpd restart 

最后验证启用:

 sudo httpd -M | grep speling 

这应该产生speling_module (shared)

感谢所有的帮助..

首先安装speling_module。 然后在httpd.conf文件中包含Loadmodulee speling_module modules/mod_speling.so ,然后包含

 <Ifmodulee mod_speling.c> CheckSpelling On CheckCaseOnly On </Ifmodulee> 

在httpd.conf中,然后使用service httpd restart命令重新启动httpd服务。

您不知道这是否有帮助,但这是我用过的简单工作,它使用了一个非常基本的PHP页面,但它适用于我需要它的网站。

将这段代码放在htaccess文件中

  AddType application/x-httpd-php .html .htm ErrorDocument 404 /404.php 

然后,我创建了一个PHP文件的机智以下..

  <?php $aurl = $_SERVER['REQUEST_URI']; $lurl = strtolower($aurl); if($aurl != $lurl){ header('location:'.$lurl); } else { header('location:/404.html'); } ?> 

基本上它得到的引用url – >商店为$ aurl

然后使它小写 – >存储为$ lurl

如果他们不匹配,然后trys显示小写url($ lurl)

如果失败的页面不存在,引用url现在是相同的($ lurl == $ aurl),所以它然后重定向到一个正确的404页面或可以显示一些额外的代码..