温馨提示×

ubuntu apache怎么设置伪静态

小樊
42
2026-09-23 11:40:26
栏目: 智能运维

在 Ubuntu 下使用 Apache 设置伪静态(URL Rewrite),通常是通过 mod_rewrite 模块实现的。下面以最常见的情况(如 ThinkPHP、WordPress、自定义规则)为例说明。


一、开启 Apache 重写模块

sudo a2enmod rewrite
sudo systemctl restart apache2

二、修改 Apache 站点配置(关键)

1. 编辑站点配置文件

一般位于:

/etc/apache2/sites-available/000-default.conf
# 或你自己配置的站点文件

示例:

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

2. 设置 AllowOverride

必须把 AllowOverride None 改成 AllowOverride All

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

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

保存后重启 Apache:

sudo systemctl restart apache2

三、编写伪静态规则(.htaccess)

在项目根目录创建或编辑 .htaccess 文件:

cd /var/www/html
nano .htaccess

示例 1:基础重写(所有请求转发到 index.php)

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

示例 2:WordPress 伪静态

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

示例 3:ThinkPHP

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

四、常见问题排查

1. .htaccess 不生效

  • 确认 AllowOverride All
  • 确认 mod_rewrite 已开启
  • 确认文件名为 .htaccess(前面有点)

2. 404 错误

  • 检查 DocumentRoot 路径是否正确
  • 检查伪静态规则是否匹配

3. 查看 Apache 错误日志

tail -f /var/log/apache2/error.log

五、如果你用的是 Nginx(补充)

注意:Nginx 不支持 .htaccess,如果你其实是 Nginx,请告诉我,我给你 Nginx 的配置方式。


如果你能告诉我:

  • 用的是 什么程序(WordPress / ThinkPHP / Laravel / 自定义)
  • Apache 版本
  • Ubuntu 版本

我可以给你更精确的伪静态配置。

0 踩