温馨提示×

Ubuntu Apache伪静态怎么设

小樊
38
2026-08-16 19:32:20
栏目: 智能运维

在 Ubuntu 下给 Apache 设置伪静态(URL Rewrite),一般是用 mod_rewrite 模块。下面按常见场景一步一步来。


一、开启 Apache 重写模块

sudo a2enmod rewrite
sudo systemctl restart apache2

确认是否已开启:

apache2ctl -M | grep rewrite

看到 rewrite_module 说明已开启。


二、修改 Apache 配置(关键)

1️⃣ 站点配置文件(推荐方式)

编辑你的站点配置,例如:

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

<VirtualHost *:80> 里加上或修改:

<Directory /var/www/html>
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>

⚠️ AllowOverride All 必须设置,否则 .htaccess 不生效。

保存后重启 Apache:

sudo systemctl restart apache2

三、使用 .htaccess 实现伪静态(最常用)

在网站根目录(如 /var/www/html)创建或编辑:

nano /var/www/html/.htaccess

示例 1:把 index.php?id=1 变成 /1

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([0-9]+)$ index.php?id=$1 [L]

访问:

http://yourdomain.com/1

实际执行:

index.php?id=1

示例 2:所有请求转发到 index.php(类似 MVC)

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

示例 3:隐藏 index.php

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?$1 [QSA,L]

四、测试是否生效

  1. 访问伪静态地址
  2. 如果 404:
    • 检查 AllowOverride All
    • 检查拼写
    • 查看 Apache 错误日志:
sudo tail -f /var/log/apache2/error.log

五、常见问题

❌ .htaccess 不生效

✅ 原因:

  • 没开 mod_rewrite
  • AllowOverride 不是 All
  • 改的是错误配置文件

❌ 500 错误

✅ 原因:

  • RewriteRule 写错
  • 循环重写

六、如果是 Laravel / ThinkPHP / WordPress

程序 是否需要 .htaccess
WordPress ✅ 默认支持
ThinkPHP
Laravel
原生 PHP

如果你用的是某个框架,可以直接告诉我,我可以给你对应完整配置


如果你愿意,可以告诉我:

  • Ubuntu 版本
  • Apache 版本
  • 网站目录
  • 是哪种程序(原生 / TP / Laravel / WP)

我可以给你精准配置

0