mod-rewrite开始使用mod-rewrite


备注

mod_rewrite是Apache的一个模块。此模块用于内部重写(应该加载不同资源的外部请求)和外部重定向(应该使客户端请求不同URL的外部请求)。

mod_rewrite提供了比mod_alias更好的内部重写控制,因为后者只能将请求映射到文件名。 mod_rewrite提供了一些访问控制方法 ,但通常使用mod_authz_coremod_authz_host更好。 mod_rewrite提供了与mod_proxy的一些集成,但出于性能原因,不应使用此集成,而应使用后一个模块的ProxyPassProxyPassMatch

mod_rewrite可以以允许将指令放在动态(.htaccess)配置文件中的方式进行设置。出于性能原因,应尽可能始终使用静态(httpd.conf)配置文件。

版本

发布日期
2.2 2015年7月17日
2.4 2016年7月5日

安装

必须在Apache服务器上使用之前启用mod_rewrite。

于Debian / Ubuntu

运行a2enmod rewrite

然后使用service apache2 restart 启动Apache

一般情况

在静态配置文件(例如httpd.conf )中添加或取消注释以下行:

LoadModule rewrite_module modules/mod_rewrite.so
 

然后重启Apache。

使用动态配置文件中的mod_rewrite

重要提示:使用动态配置文件(.htaccess)是一个很大的性能影响。当您可以访问静态配置文件(httpd.conf或类似的东西)时,您应该使用它。

在静态配置文件中,允许动态配置文件使用AllowOverride 覆盖“Fileinfo”。该指令必须放在目录上下文中:

AllowOverride FileInfo
 

用于动态配置文件的文件名由AccessFileName 指令控制。默认情况下,动态配置文件是名为.htaccess 隐藏文件。

在包含mod_rewrite指令的每个动态配置文件的顶部,添加以下指令:

RewriteEngine on
 

在静态配置文件中使用mod_rewrite

使用任何其他mod_rewrite指令(RewriteRule,RewriteCond,RewriteBase或RewriteMap) 之前添加以下指令。

RewriteEngine on
 

默认情况下,引擎已关闭。忽略引擎关闭时发现的mod_rewrite指令。在使用虚拟主机时从虚拟主机上下文中启用它,或在适用时从特定目录上下文启用它。