温馨提示×

Apache如何开启CentOS伪静态

小樊
33
2026-08-18 21:24:57
栏目: 智能运维

CentOS 上让 Apache 支持 伪静态(URL Rewrite),通常是通过 mod_rewrite 模块实现的。下面按常见场景一步步说明。


一、确认 Apache 已安装

httpd -v

apachectl -v

如果未安装:

yum install -y httpd
systemctl start httpd
systemctl enable httpd

二、确认 mod_rewrite 模块已加载

1️⃣ 查看模块是否加载

httpd -M | grep rewrite

如果看到:

rewrite_module (shared)

说明已启用 ✅

2️⃣ 若未加载,手动启用

编辑 Apache 配置文件:

vi /etc/httpd/conf/httpd.conf

确认或添加:

LoadModule rewrite_module modules/mod_rewrite.so

三、允许 .htaccess 伪静态(关键)

Apache 默认可能禁止 .htaccess 生效,需要修改 AllowOverride

1️⃣ 编辑虚拟主机或目录配置

vi /etc/httpd/conf/httpd.conf

找到类似:

<Directory "/var/www/html">
    AllowOverride None
</Directory>

改为:

<Directory "/var/www/html">
    AllowOverride All
</Directory>

AllowOverride All 是伪静态生效的关键


四、重启 Apache

systemctl restart httpd

五、创建 .htaccess 伪静态规则

进入网站根目录(如 /var/www/html):

cd /var/www/html
vi .htaccess

示例 1:基础伪静态

RewriteEngine On
RewriteRule ^article/([0-9]+)\.html$ article.php?id=$1 [L]

访问:

http://yourdomain/article/123.html

实际执行:

article.php?id=123

示例 2:WordPress 伪静态

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

六、常见错误排查

❌ 1. 页面 404

✅ 检查:

  • AllowOverride All 是否设置
  • Apache 是否重启
  • 文件是否在正确目录

❌ 2. .htaccess 不生效

cat /etc/httpd/conf/httpd.conf | grep AllowOverride

确认不是:

AllowOverride None

❌ 3. 没有执行权限

chmod 755 .htaccess

七、SELinux(重要)

如果仍不生效,可能是 SELinux 限制:

临时关闭(不推荐生产环境)

setenforce 0

正确做法:允许 HTTPD 访问

setsebool -P httpd_can_network_connect 1

八、完整流程总结 ✅

  1. 安装 Apache
  2. 启用 mod_rewrite
  3. 设置 AllowOverride All
  4. 重启 Apache
  5. 配置 .htaccess

如果你用的是 CentOS 7 / 8 / Stream宝塔面板WordPress / Laravel / ThinkPHP,可以告诉我,我可以给你更精确的配置示例。

0