温馨提示×

centos apache怎么配伪静态

小樊
38
2026-09-02 22:31:21
栏目: 智能运维

CentOS + Apache 下配置“伪静态”(URL Rewrite),通常是通过 mod_rewrite 模块实现的。下面按最常见场景给你一个完整流程。


一、确认 Apache 已安装并启用 rewrite 模块

1. 查看 Apache 是否安装

httpd -v
# 或
apachectl -v

2. 检查 mod_rewrite 是否启用

httpd -M | grep rewrite

如果看到:

rewrite_module (shared)

说明已启用。

如果没有,编辑配置文件:

vi /etc/httpd/conf/httpd.conf

取消注释(删掉 #):

LoadModule rewrite_module modules/mod_rewrite.so

二、修改 Apache 配置(关键)

1. 修改虚拟主机或目录权限

找到你的站点配置(如 /etc/httpd/conf/httpd.conf/etc/httpd/conf.d/*.conf

示例(重要):

<Directory "/var/www/html">
    AllowOverride All
    Require all granted
</Directory>

⚠️ AllowOverride None 会导致 .htaccess 失效


三、使用 .htaccess 配置伪静态(最常用)

1. 在网站根目录创建 .htaccess

vi /var/www/html/.htaccess

2. 基础示例(把所有请求转发到 index.php)

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

✅ 效果:

/article/123
→
/index.php/article/123

四、常见伪静态规则示例

1. 新闻详情页

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

访问:

/news/123.html

实际:

/news.php?id=123

2. 分类页面

RewriteRule ^cat/([a-z]+)$ cat.php?name=$1 [L]

五、重启 Apache

systemctl restart httpd

service httpd restart

六、常见问题排查

1. 伪静态不生效

  • AllowOverride All
  • .htaccess 在网站根目录
  • ✅ 重启 Apache
  • ✅ 查看错误日志:
tail -f /var/log/httpd/error_log

2. 403 错误

通常是 SELinux 或权限问题:

setenforce 0   # 临时关闭(测试用)

或:

chmod -R 755 /var/www/html

七、如果你用的是框架(补充)

  • ThinkPHP:开启 URL_MODEL = 2
  • WordPress:后台固定链接直接选
  • Laravel:默认已支持,只需 AllowOverride All

如果你能告诉我:

  • CentOS 版本(6 / 7 / 8)
  • Apache 版本
  • 用的程序(WP / ThinkPHP / 自写 PHP)

我可以给你精准配置

0