关于去除Apache-url大小写字母敏感的配置(CheckSpelling .)


     现在网络上有各种各样的网站,基于linux操作系统的稳定性,所以很多网站服务器都喜欢安装linux的操作系统,但linux系统本身的大小写敏感会对网站的访问造成了一定影响。例如:访问网站[url]www.me.com/downloads/[/url]如果写成[url]www.me.com/DOWNLOADS/[/url]就不能访问了到相关页面了。
    这种情况当然可以通过增加apache的虚拟主机来达到大小写字母都可访问的目的,但是增加无数个毫无价值的虚拟主机不但影响配置文件的阅读,更对apache服务的维护造成沉重的负担。所以在这里介绍一种简单直接的方法,就是利用apache自带的speling模块解决url大小写敏感问题。
    以下以RedHat-AS4操作系统为例介绍speling模块的配置方法。

一、确认speling模块存在并已加载
1.确认系统是否有speling模块
#cd /usr/lib/httpd/modules
查看有无mod_speling.so文件
(如无此文件则无法进行配置,可以到网上下载该模块的源代码把so文件编译出来,具体方法google一下,这里就不作介绍了~~)

2.查看apache配置文件,确认apache已经加载了speling模块
#vi /etc/httpd/conf/httpd.conf
(其他linux系统的apache配置文件位置可能不太一样,如ubuntu是/etc/apache2/apache2.conf,但设置都大同小异,效果是一样的)

找到配置文件加载模块的部分,查看是否有LoadModule speling_module modules/mod_speling.so,如果没有可以手动添加进去,如下文最后一行。
# Dynamic Shared Object (DSO) Support
#
# To be able to use the functionality of a module which was built as a DSO you
# have to place corresponding `LoadModule' lines at this location so the
# directives contained in it are actually available _before_ they are used.
# Statically compiled modules (those listed by `httpd -l') do not need
# to be loaded here.
#
# Example:
# LoadModule foo_module modules/mod_foo.so
#
LoadModule access_module modules/mod_access.so
LoadModule auth_module modules/mod_auth.so
LoadModule auth_anon_module modules/mod_auth_anon.so
LoadModule auth_dbm_module modules/mod_auth_dbm.so
LoadModule auth_digest_module modules/mod_auth_digest.so
LoadModule ldap_module modules/mod_ldap.so
LoadModule auth_ldap_module modules/mod_auth_ldap.so
LoadModule include_module modules/mod_include.so
LoadModule log_config_module modules/mod_log_config.so
LoadModule env_module modules/mod_env.so
LoadModule mime_magic_module modules/mod_mime_magic.so
LoadModule cern_meta_module modules/mod_cern_meta.so
LoadModule expires_module modules/mod_expires.so
LoadModule deflate_module modules/mod_deflate.so
LoadModule headers_module modules/mod_headers.so
LoadModule usertracwww.me.com/download/k_module modules/mod_usertrack.so
LoadModule speling_module modules/mod_speling.so
...

(一般新装linux系统都会默认安装apache并配置了speling模块,所以一般上面的步骤都可以省略,直接对speling进行配置,如不放心也可以先查询一下。)


二、启动speling
1.在某个虚拟主机的某个链接转发的Directory里添加参数CheckSpelling .,启动speling(如果其他转发项也有去除大小写敏感的需求,则需要在所有转发项的Directory下添加参数)如下:

<VirtualHost *:80>
ServerName 127.0.0.1

Alias /downloads "/usr/local/downloads"
<Directory "/usr/local/downloads">
    CheckSpelling .
    Options Indexes FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

...

</VirtualHost>

2.重启apache
#service httpd restart(或/etc/init.d/apache2 restart)

以上便完成了关于apache的speling配置,现在可以测试一下,现在网站url的访问已经不存在大小写字母敏感的问题了。如访问[url]www.me.com/downloads/[/url],同样可以写成[url]www.me.com/DoWnlOads/[/url]。