Apache2 开启Rewrite重写模式

本文详细介绍了如何在Apache服务器上启用并配置Rewrite模块,包括使用指令启动模块、修改配置文件允许.htaccess文件生效、创建重写规则以及重启服务的步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

开启Apache的Rewrite

1、在终端中执行指令后,即启用了 Mod_rewrite 模块:

sudo a2enmod rewrite

或者,也可以通过软连接启用 Mod_rewrite 模块(apache默认是加载了的,进入目录执行 ll 可查看)。两者二选一。用指令操作就是:

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

2、打开apache配置文件

sudo vim /etc/apache2/apache2.conf  
<Directory /var/www/>
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>

 2.1 修改配置文件

<Directory /var/www/>   改为   <Directory /var/www/html/>     //实际目录根据网站根目录而定,我的默认是/var/www/html为Web的根目录,所以我改成<Directory /var/www/html/>

AllowOverride None    改为    AllowOverride All

AllowwOverride None 则会完全忽略 .htaccess 文件,自然项目中所定义的 rewrite 规则也就不能生效了

3、在网站的根目录下建立.htaccess文件,比如下面两个例子:

<IfModule mod_rewrite.c> 
  Options +FollowSymlinks 
  RewriteEngine On 
  RewriteCond %{REQUEST_FILENAME} !-d 
  RewriteCond %{REQUEST_FILENAME} !-f 
  RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L] 
</IfModule>
<IfModule mod_rewrite.c>
Options -MultiViews
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>

4、重启apache服务

sudo service apache2 restart