apache中设置URL不区分大小写 [ 网站地图 ]

发表于:2012-9-14 浏览:432 作者: 来源:互联网

关键字:apache

描述:现在网络上有各种各样的网站,基于linux操作系统的稳定性,所以很多网站服务器都喜欢安装linux的操作系统,但linux系统 本身的大小写敏感会对网站的访问造成了一定影响。例如:访问网站www.me.com/dow

现在网络上有各种各样的网站,基于linux操作系统的稳定性,所以很多网站服务器都喜欢安装linux的操作系统,但linux系统 本身的大小写敏感会对网站的访问造成了一定影响。例如:访问网站www.me.com/downloads/如果写成www.me.com /DOWNLOADS/就不能访问了到相关页面了。
这种情况当然可以通过增加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 on
Options Indexes FollowSymLinks
AllowOverride None
order allow,deny
Allow from all
</Directory>

...

</VirtualHost>
或者在httpd.conf全局文件中配置,这样所有的虚拟主机都不区分大小写

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

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

站长资讯网 做中国最丰富的资讯网站 沪ICP备05004089号