天天看点

Apache mod_rewrite模块配置

配置apache的重写模块,保证以下几点

1. 启用mod_rewrite模块

    在conf目录的httpd.conf文件中找到

    LoadModule rewrite_module modules/mod_rewrite.so

   将这一行前面的#去掉。

2. 在要支持url rewirte的目录启用 Options FollowSymLinks和AllowOverride All

   <Directory "/home/ghicd/htdocs">

        Options Indexes FollowSymLinks

        AllowOverride All

       Order allow,deny

       Allow from all

  </Directory>

这样通过http://localhost:8080/访问时,/htdocs/和其下面的子目录都将支持url rewrite。

网上的很多文章并没有提到要使用 Options FollowSymLinks,因为在httpd.conf中有

<Directory />

    Options FollowSymLinks

    AllowOverride None

    Order deny,allow

    Deny from all

    Satisfy all

</Directory>

这样如果你的网站配置成通过http://localhost:8080/来访问,就不会注意到Options FollowSymLinks的影响,只需要将AllowOverride None改为AllowOverride All即可。

而我习惯于在本机配置成http://localhost:8080/php/,忘了加Options Indexes FollowSymLinks就成功不了,会显示

Forbidden  You don't have permission to access /php/f2blog/ on this server.

这样的错误。后来还是在apache文档中找到了原因

Note: To enable the rewriting engine for per-directory configuration files you need to set ``RewriteEngine On'' in these files and ``Options FollowSymLinks'' must be enabled. If your administrator has disabled override of FollowSymLinks for a user's directory, then you cannot use the rewriting engine. This restriction is needed for security reasons.

实际上mod_rewrite是针对目录的,因此并不需要将httpd.conf中的所有AllowOverride None改为AllowOverride All,Options也一样。