首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Linux服务器中使URL不区分大小写

如何在Linux服务器中使URL不区分大小写
EN

Stack Overflow用户
提问于 2013-02-11 22:44:47
回答 3查看 63K关注 0票数 19

我正在工作的网站是部署在Linux服务器上。在这方面我有一些小的改变要做。我有文件夹read。要求是,如果我输入URL localhost:80/tom/Read../READ/read,它需要导航到read文件夹中的read.php

我在根目录下创建了一个文件.htaccess。通过查看页面mentioned here,将下面提到的代码放在文件中

代码语言:javascript
复制
RewriteEngine On
RewriteBase /tom/

RewriteMap  lc int:tolower
RewriteCond %{REQUEST_URI} [A-Z]
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 ![A-Z] - [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服务器中的什么位置?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-02-11 22:53:12

通过使用mod_speling模块,您可以轻松地让apache can服务器忽略这种情况,该模块是标准apache发行版的一部分:

代码语言:javascript
复制
CheckSpelling On
CheckCaseOnly On

在重新启动httpd之后,您可以以ReadREADread的身份访问read

票数 33
EN

Stack Overflow用户

发布于 2013-02-12 15:27:13

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

代码语言:javascript
复制
LoadModule speling_module modules/mod_speling.so

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

然后重新启动httpd:

代码语言:javascript
复制
sudo service httpd restart

最后验证它是否已启用:

代码语言:javascript
复制
sudo httpd -M | grep speling

这应该会产生speling_module (shared)

谢谢大家的帮助..

票数 31
EN

Stack Overflow用户

发布于 2013-07-17 23:08:06

嗨,不确定这是否有帮助,但这是我使用过的简单的工作,它使用一个非常基本的php页面,但它的网站,我需要它的工作。

将此代码放入htaccess文件中

代码语言:javascript
复制
 AddType application/x-httpd-php .html .htm
 ErrorDocument 404 /404.php

然后,我创建了一个php文件,其中包含以下内容。

代码语言:javascript
复制
 <?php
 $aurl = $_SERVER['REQUEST_URI'];
 $lurl = strtolower($aurl);

 if($aurl != $lurl){
header('location:'.$lurl);
 } else {
header('location:/404.html');
 }
 ?>

基本上,它以$aurl的形式获得->存储的引用url

然后将其设置为小写的->存储为$lurl

如果它们不匹配,则尝试显示小写的url ($lurl)

如果失败,则页面不存在,引用的url现在是相同的( $lurl == $aurl ),因此它将重定向到正确的404页面或显示一些额外的代码。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14814419

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档