apache开启URL重写的方法

发布时间:2020-01-15编辑:脚本学堂
apache开启URL重写的方法

1、rewrite模块
apache 2.x中URL重写,是通过mod_rewrite.so来实现的,所以您要查看您的Apache是否已经被编译进去这个模块了,并且在Apache的配置文件httpd.conf中已经调用了这个模块。在大多数主流发行版中,Apache 2.x是把rewrite模块已经编入进去了。比如我用的是Slackware。Apache 2.x的配置文件,放在 /etc/httpd 目录下。

在httpd.conf中,我们会发现类似如下的一行,是有关rewrite模块的,模块名是mod_rewrite.so 。

LoadModule rewrite_module lib/httpd/modules/mod_rewrite.so

LoadModule rewrite_module lib/apache2/modules/mod_rewrite.so 如果前面有#号,您要去掉。对于大多数发行版来说,Apache 2的模块一般是位于如下的两个位置

/usr/lib/apache2/modules

/usr/lib/httpd/modules 如果在httpd中打开调用rewrite_module的设置,查看一下是不是能调用了,要通过 httpd -M的参数来查看;

#/usr/sbin/httpd -M

如果发现有如下一行,说明模块已经能被调用了

rewrite_module (shared)

2、设置DocumentRoot的Directory:
在Apache 2.x中,我们会看到DocumentRoot设置的一行。
这行就是存放网页程序的地方。比如linuxSir.Org 存放在/opt/www 目录中。
那么我们就要设置DocumentRoot为如下的。
DocumentRoot "/opt/www" 然后还要对DocumentRoot做针对性的行为设置。
在一般的情况下,httpd.conf 会给一个默认的。
如果你要改DocumentRoot的路径,同时也要改针对DocumentRoot的Directory的设置,也就是<Directory "DocumentRoot所设置的路径">

比如我们把DocumentRoot的路径改为了"/opt/www",那我们也要把Directory做针对性的行为设置也要改成这个路径。

<Directory "/opt/www">

Options FollowSymLinks
#AllowOverride None 注:把这行前面加#号,然后加下面的一行 ,也就是AllowOverride ALL
AllowOverride ALL
Order allow,deny
Allow from all
</Directory> 我们把AllowOverride 的参数设置为ALL,表示整台服务器上的,都支持URL规则重写。
Apache 服务器要读每个网站根目录下的 .htaccess 文件。
如果没有这个文件,或者这个文档没有定义任何关于URL重写的规则,则不会有任何效果。
在一般的情况下,成熟的Web 服务器应用套件,都支持URL重写的,比如drupal和joomla 。
当我们用这些程序时,会发现在安装包中有 .htaccess中有这个文件。
我们把apache配置好后,只是需要在这些程序的后台打开此功能就行了。

3、重启httpd服务器:
通常各个发行版中,都有httpd服务器启动脚本
# /etc/rc.d/rc.httpd restart  注:Slackware Linux
# /etc/init.d/apache2 restart 注:ubuntu、Debian 等;
# /etc/init.d/httpd start     注:Fedora 、redhatcentos