温馨提示×

centos apache如何设置伪静态

小樊
49
2026-10-03 00:39:19
栏目: 智能运维

在 CentOS + Apache 环境下设置伪静态(URL Rewrite),通常是通过 mod_rewrite 模块来实现。下面按步骤说明。


一、确认 Apache 已安装并启用 mod_rewrite

1. 检查 Apache 是否安装

httpd -v
# 或
apachectl -v

2. 查看 mod_rewrite 是否启用

httpd -M | grep rewrite

如果有 rewrite_module,说明已启用。

如果没有,编辑 Apache 配置:

vi /etc/httpd/conf/httpd.conf

找到:

#LoadModule rewrite_module modules/mod_rewrite.so

去掉前面的 #


二、开启 .htaccess 支持(推荐方式)

1. 修改虚拟主机或目录配置

编辑你的站点配置(如):

vi /etc/httpd/conf/httpd.conf
# 或
vi /etc/httpd/conf.d/你的站点.conf

确保有如下配置(AllowOverride 很关键):

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

⚠️ 如果是 CentOS 7+,站点配置通常在 /etc/httpd/conf.d/

2. 重启 Apache

systemctl restart httpd

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

进入网站根目录:

cd /var/www/html
vi .htaccess

示例 1:普通伪静态

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

访问:

/article/123.html

实际指向:

/article.php?id=123

示例 2:ThinkPHP 伪静态

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

示例 3:WordPress 伪静态

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

四、常见问题排查

1. 伪静态不生效

  • AllowOverride 是否为 All
  • .htaccess 是否在网站根目录
  • 是否重启了 Apache

2. 403 Forbidden

检查:

Require all granted

3. 查看错误日志

tail -f /var/log/httpd/error_log

五、总结

✅ CentOS Apache 伪静态核心三步:

  1. 启用 mod_rewrite
  2. 设置 AllowOverride All
  3. 编写 .htaccess

如果你用的是 具体程序(WordPress / ThinkPHP / Discuz / 自写PHP),可以告诉我,我可以直接给你现成规则。

0 踩