在Apache2中启用重写规则
想让Apache2支持灵活的URL重写吗?核心在于启用mod_rewrite模块。下面这个分步指南,能帮你快速搞定配置。

-
首先,得确认
mod_rewrite模块已经就位。打开终端,运行下面这条命令来启用它:sudo a2enmod rewrite如果模块之前已经启用了,系统会提示你
Module rewrite already enabled,这表示可以跳过这一步。 -
启用模块后,别忘了重启Apache2服务,让改动生效:
sudo systemctl restart apache2 -
接下来是关键一步:在网站配置中允许重写规则生效。配置文件通常放在
/etc/apache2/sites-a vailable目录里。用编辑器打开你网站的配置文件,比如默认的000-default.conf:sudo nano /etc/apache2/sites-a vailable/000-default.conf -
在配置文件里,找到对应你网站目录的
部分。把里面的AllowOverride选项设为All。这个设置允许.htaccess文件里的规则发挥作用。配置看起来通常是这样的:Options Indexes FollowSymLinks AllowOverride All Require all granted 如果配置文件里没有现成的
部分,那就需要你手动添加一个,指向你的网站根目录。 -
配置好服务器后,就该创建重写规则本身了。进入你的网站根目录(例如
/var/www/html),创建或编辑.htaccess文件:sudo nano /var/www/html/.htaccess -
现在,你可以把具体的重写规则写进
.htaccess文件了。举个例子,一个非常常用的规则是把所有请求都导向index.php,实现前端控制器模式:RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php [L] -
保存并关闭编辑器。
-
最后,再次重启Apache2服务,确保所有配置都加载生效:
sudo systemctl restart apache2
完成以上步骤,你的Apache2服务器就已经配置好重写功能了。不过要提醒一下,重写规则语法比较严格,写的时候务必仔细检查,避免因为一个小错误导致服务器出问题。
