如何开启apache开启modrewrite Rewrite功能

Apache(8)
一、Ubuntu默认未开启Rewrite支持
apche模块加载工作已分散到不同的配置文件,这样看起来似乎更为合理,管理起来也非常方便。下面看一下如何开启Rewrite模块,当用户需使用301重定向、伪静态等Rewrite功能时,一般都习惯于使用.htaccess文件配置,比如下面的301重定向:
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^ [NC]
RewriteRule ^(.*)$
配置完成后,使用/etc/init.d/ reload命令加载生效,这时,如果未开启Rewrite功能,则会出现(浏览器显示),查看LOG错误如下:
[Sun Jan 30 02:41:29 2011] [alert] [client 12.34.56.78] /srv//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/ restart)。
3、参照上文的目录配置,做个启动链接(下次启动自动加载):
ln -s /etc//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测试实例:
&IfModule mod_rewrite.c&
RewriteEngine
RewriteBase /
RewriteRule .*$
&/IfModule&
测试方法,拷贝保存为.htaccess,上传到网站根目录下,访问网站任何路径页面,均会跳转到本博客,说明Rewrite已生效。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:54887次
积分:1454
积分:1454
排名:千里之外
原创:20篇
转载:430篇
(18)(182)(128)(20)(33)(84)linux(45)
其中几个文件及目录的作用是:
apache2.conf:Apache的主要配置文件,包含全局配置。
conf.d:Apache全局配置文件,其他需要使用Apache的包可以在这个目录下创建文件或者链接。
envvars:Apache2环境变量设置。
httpd.conf:遗留的Apache2主要配置文件。这个文件是空的,其中的配置选项都转移到其他配置文件里了。
这个文件可以进行Apache全局配置。
mods-available:这个目录包含模块和模块配置文件,不是所有的模块都有配置文件。
mods-enabled:持有/etc/apache2/mods-available目录下文件的链接,当该目录下有一个模块文件和其配置文件,那么Apache重启后该模块将生效。
ports.conf:配置Apache监听的端口。
sites-available:这个目录包含Apache虚拟主机的配置文件。虚拟主机允许Apache配置多个站点并为每个站点配置不同的参数。
sites-enabled:持有/etc/apache2/sites-available目录下文件的链接。当Apache重启后,该目录中包含的站点将会被激活。
结合以上配置说明可以发现Apache的配置文件非常的模块化,启用模块、虚拟主机都非常的简单。
下面是启用mod_rewrite模块的方法。
第一种方式:
sudo a2enmod rewrite
第二种方式:
sudo ln -s /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled/rewrite.load
不管使用哪种方法,都是在 /etc/apache2/mods-enabled 这个目录下面建立了一个链接,只要重启服务器之后就可以生效。 当然要使rewrite生效,还需要修改额外的配置:
sudo vim /etc/apache2/sites-enabled/000-default
将其中的 AllowOverride None 修改为 AllowOverride All,然后重启服务器即可。
sudo /etc/init.d/apache2 restart
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:36693次
排名:千里之外
原创:39篇
转载:20篇
(1)(11)(6)(40)(1)如何在Ubuntu下启动Apache的Rewrite功能_百度知道
如何在Ubuntu下启动Apache的Rewrite功能
apache2 restart.load 打 Mod_rewrite 模块用指令操作:sudo ln -s &#47:AllowOverride All面 /apache2/etc&#47.load 连接 &#47:AllowOverride None修改:sudo /apache2/apache2/sites-available/mods-enabled/apache2/etc/apache2/mods-enabled/apache2/mods-available&#47:sudo vim /sites-enabled&#47.htaccess 文件自其所定义 rewrite 规则能效别忘使用列指令重启 Aetc/rewrite.load /mods-available/000-default 实则 /etc/default 连接 AllowwOverride None 则完全忽略 ;etc/apache2/000-default其.load事实我 Ubuntu 采用述做并重启 Apache 服务仍 rewrite 网址点需要注意;etc/sites-enabled/etc/etc/rewrite终端执行sudo a2enmod rewrite指令即启用 Mod_rewrite 模块另外通 &#47.d&#47
为您推荐:
其他类似问题
ubuntu的相关知识
等待您来回答

我要回帖

更多关于 apache mod rewrite 的文章

 

随机推荐