温馨提示×

ubuntu apache2如何开启伪静态

小樊
37
2026-08-27 21:39:32
栏目: 智能运维

在 Ubuntu 系统下使用 Apache2 开启“伪静态”(即 URL Rewrite 重写),主要通过启用 mod_rewrite 模块并配置 .htaccess 文件来实现。以下是详细步骤:

1. 启用 mod_rewrite 模块

Ubuntu 下 Apache 默认可能没有开启重写模块,打开终端并执行:

sudo a2enmod rewrite

如果提示已经启用,则无需重复。

2. 修改 Apache 配置(关键步骤)

仅仅启用模块还不够,还需要让 Apache 允许通过 .htaccess 文件来覆盖配置(很多新手容易漏掉这一步导致伪静态不生效)。

方法一:修改虚拟主机配置文件(推荐) 编辑你的站点配置文件(例如默认的 /etc/apache2/sites-enabled/000-default.conf 或你的自定义配置文件):

sudo nano /etc/apache2/sites-enabled/000-default.conf

<VirtualHost *:80> 标签内,添加或修改 <Directory> 配置:

<VirtualHost *:80>
    ServerName yourdomain.com
    DocumentRoot /var/www/html

    <Directory /var/www/html>
        Options Indexes FollowSymLinks
        AllowOverride All       # 这里必须改为 All,默认可能是 None
        Require all granted
    </Directory>
</VirtualHost>

方法二:修改 apache2.conf 如果你是修改全局配置 /etc/apache2/apache2.conf,找到类似下面的代码块:

<Directory /var/www/>
    Options Indexes FollowSymLinks
    AllowOverride None   # 将 None 改为 All
    Require all granted
</Directory>

AllowOverride None 改成 AllowOverride All

3. 重启 Apache 服务

使配置生效:

sudo systemctl restart apache2
# 或者使用
sudo service apache2 restart

4. 创建或编辑 .htaccess 文件

在你的网站根目录(如 /var/www/html)下创建 .htaccess 文件,并写入重写规则。

通用示例(将 index.php?page=123 伪静态为 page/123):

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteRule ^page/([0-9]+)$ index.php?page=$1 [L]
</IfModule>

常见框架/程序的伪静态规则:

  • WordPress:
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
    </IfModule>
    
  • ThinkPHP 5 / 6:
    <IfModule mod_rewrite.c>
    Options +FollowSymlinks -Multiviews
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
    </IfModule>
    

5. 常见问题排查(如果伪静态不生效)

  1. 页面 404 错误:检查 AllowOverride 是否为 All,以及是否正确重启了 Apache。
  2. 500 内部服务器错误:通常是 .htaccess 语法错误,或者服务器没有开启 mod_rewrite(检查 phpinfo()apache2ctl -M | grep rewrite 确认模块已加载)。
  3. 文件权限问题:确保 .htaccess 文件对于 Apache 运行用户(通常是 www-data)有可读权限。
  4. URL 中去掉 index.php 仍然 404:检查 Apache 是否支持并且开启了 AllowOverride 里的 FileInfo 权限(设置 All 即可包含)。

按照上述步骤操作,一般就可以顺利在 Ubuntu 的 Apache2 上开启伪静态了。

0