Apache2 配置rewrite模块

Debian将Apache2的配置井井有序的组织为了几个分开的文件夹,并提供了几个方便的工具。分别是apache2ctl,a2enmod,a2dismod,a2ensite,a2dissite,a2enconf,a2disconf。

apache2ctl用来控制apache2的服务,后面几个分别对应/etc/apache2目录下的mods-enabled/available,sites-enabled/available,conf-enabled/available。

首先,启用rewrite我们只需要

$ a2enmod rewrite

即可,接下来我们可以选择使用.htaccess方式(不推荐)配置或者直接在虚拟主机配置里写(推荐)

使用.htaccess需要先将/etc/apache2.conf中对应目录的AllowOverride设置为All,默认是None,然后将.htaccess写入网站根目录即可。
如:

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteBase /
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule ^(.*)$ /index.php/$1 [L]
</IfModule>

直接写在虚拟主机配置里更简单,在里面再套一层Directory指定下就行了

<IfModule mod_rewrite.c>
<Directory /srv/default>
  RewriteEngine On
  RewriteBase /
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule ^(.*)$ /index.php/$1 [L]
</Directory>
</IfModule>

此处评论已关闭