apache中mod_rewrite模块开启.htaccess重写

发布时间:2020-12-11编辑:脚本学堂
本文介绍下,在apache中使用mod_rewrite模块,开启.htaccess重写功能的方法,有需要的朋友参考下。

apache的Mode Rewrite模块提供了一个基于正则表达式分析器的重写引擎来实时重写URL请求。
在大多数情况下,它和.htaccess文件配合使用。就是说,.htaccess文件的一个主要功能是用来重写URL请求。

1,mod_rewrite模块
请确保服务器安装并启用了该模块:
 

复制代码 代码示例:
sudo a2enmod rewrite

一般会把所有涉及URL重写或者重定向的代码这样放置:
 

复制代码 代码示例:
<IfModule mod_rewrite.c>
 # Turn on rewrite engine
 Options +FollowSymlinks
 RewriteEngine on
 # More rules below
 ...
</IfModule>

2,开启 httpd.conf 的 rewrite
在[Apache安装目录]/conf/httpd.conf中找到#LoadModule rewrite_module modules/mod_rewrite.so,去掉前面的注释符号#。
如果没有这行,请添加。
并确认apache安装目录下的modules文件夹中是否有mod_rewrite.so这个文件。这样就启用了Mod Rewrite功能。
在[Apache安装目录]/conf/httpd.conf中找到:
 

复制代码 代码示例:
<Directory />
    Options FollowSymLinks
    AllowOverride None
    Order deny,allow
    Deny from all
</Directory>
 

把“AllowOverride None”改成“AllowOverride All”,这样所有文件夹都支持.htaccess了,或针对指定的文件夹启用.htaccess,可以在[Apache安装目录]/conf/httpd.conf中加入:
 

复制代码 代码示例:
<Directory "D:/sites/nowamagic/">
    Options Indexes FollowSymLinks
    AllowOverride All
    Order allow,deny
   Allow from all
</Directory>
 

这种做法一般是和虚拟主机配置在一起的,所以大多数会把上述配置代码写入[Apache安装目录]/conf/extra/httpd-vhost.conf中,这样比较清晰易于管理。
 
开启了 Apache 的 rewrite 功能后,就可以使用 .htaccess 来进行重写了。关于 mod_rewrite 大概就谈到这里,下面是一些我们需要注意的地方:
FollowSymlinks必须启用,这是rewrite引擎的安全需求。

通常FollowSymlinks在Apache的主配置文件中就已经启用了,所以通常可以省略。

RewriteEngine 命令
该命令用于启用rewrite引擎。
IfModule命令用于判断Apache是否安装了mod_rewrite模块。
mod_rewrite会处理所有提交给Apache的URL请求,并与之后的规则进行匹配。