Keep on going, never give up.

如何开启Apache Rewrite功能

Windows上开启Apache非常简单,因为apache的用户配置都是放在http.conf文件中,要开启Rewrite功能,只需要把该文件中“LoadModule rewrite_module modules/mod_rewrite.so”前面的注视去掉,然后重启apache即可。

但Linux上有所不同,默认Apache包配置是分散的,比如/etc/apache2目录可能包含conf.d、mods-available、mods-enabled、sites-available、sites-enabled文件夹,apache2.conf、envvars、httpd.conf(用户配置文件)、magic、ports.conf(APACHE端口配置)配置文件。系统不同、版本不同可能还会有细微差异。

基础阅读:

Ubuntu VPS安装Apache+PHP+MySQL指南

VPS服务器选择和维护入门

htaccess rewrites重写规则实例

网站基础:URL伪静态化概念与常见方法

完美解决IIS和APACHE的301重定向

一、Ubuntu默认未开启Rewrite支持

apche模块加载工作已分散到不同的配置文件,这样看起来似乎更为合理,管理起来也非常方便。下面看一下如何开启Rewrite模块,当用户需使用301重定向、伪静态等Rewrite功能时,一般都习惯于使用.htaccess文件配置,比如下面的301重定向:

Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^abc.com [NC]
RewriteRule ^(.*)$ http://www.abc.com/$1 [L,R=301]

配置完成后,使用/etc/init.d/apache2 reload命令加载生效,这时,如果未开启Rewrite功能,则会出现500错误(浏览器显示),查看LOG错误如下:

[Sun Jan 30 02:41:29 2011] [alert] [client 12.34.56.78] /srv/www/abc.com/public_html/.htaccess: Invalid command 'RewriteEngine', perhaps misspelled or defined by a module not included in the server configuration

说明需要开启Rewrite模块加载,加载开启过程如下。

二、手动开启加载Rewrite

1、使用终端工具连接服务器,输入管理员帐号和密码

2、执行加载Rewrite模块:

a2enmod rewrite

执行后,会提示OK和重启Apache命令(/etc/init.d/apache2 restart)。

3、参照上文的目录配置,做个启动链接(下次启动自动加载):

ln -s /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled/rewrite.load

执行后会在mods-available目录下创建一个快捷方式,连接到mods-enabled下rewrite模块。

4、重启apache:

/etc/init.d/apache2 restart

注意:如果使用的是apache默认网站目录(一般是类似于/var/www文件夹),没有创建单独的自己配置文件,可能还需要修改/etc/apache2/sites-available/default这个文件,把其中的AllowOverride None修改为AllowOverride All,因为default配置里还默认关闭.htaccess重载,打开后.htaccess才会生效。

三、如何判断Rewrite已经开启

1、检查确认Rewrite模块加载

本文测试是在CentOS 6系统上,路径为:/etc/httpd/conf/httpd.conf

LoadModule rewrite_module modules/mod_rewrite.so

如果前面有注释就去掉即可,重启APACHE。

2、检查确认目录Rewrite打开

Rewrite库加载不代表我们的.htaccess文件就能生效,还需要专门打开指定目录的AllowOveride开关,脚本如下:

  • <Directory /var/www/>
  • Options Indexes FollowSymLinks
  • AllowOverride All
  • Order allow,deny
  • Allow from all
  • </Directory>

其中AllowOverride只能定义在Directory这个Section里,具体用法可参考apache官方说明(下文链接),以上脚本一般放在httpd.conf或/etc/httpd/conf.d/vhost.conf下面,尽量更网站配置的:

<VirtualHost ...> ....</VirtualHost>

定义在一起,方便维护。

3、测试Rewrite功能

以下为.htaccess测试实例:

# BEGIN
<IfModule mod_rewrite.c>
RewriteEngine  on
RewriteBase /
RewriteRule .*$ http://www.metsky.com
</IfModule>
#END

测试方法,拷贝保存为.htaccess,上传到网站根目录下,访问网站任何路径页面,均会跳转到本博客,说明Rewrite已生效。

提醒:正常修改.htaccess一般都是即时生效,如果修改的是apache conf配置文件,一般需要重启apache一次。

参考资料:

http://httpd.apache.org/docs/2.4/howto/htaccess.html

http://httpd.apache.org/docs/2.4/mod/core.html#allowoverride

更多参考文章:

WordPress永久链接格式对比及设置参考

Apache服务器httpd.conf配置文件说明

Linux挂载点介绍及桌面服务器分区方案

Ubuntu CD/DVD桌面版服务器版下载

相关评论(0):  

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

订阅博客

最新文章

本站采用创作共用版权协议, 要求署名、非商业用途和保持一致. 转载也必须遵循“署名-非商业用途-保持一致”的创作共用协议. 返回顶部
Copyright@2005-2016 Metsky.com, All rights Reserved.