温馨提示×

CentOS Apache怎么设置伪静态

小樊
45
2026-07-20 08:55:08
栏目: 智能运维

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


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

1. 查看 Apache 是否安装

httpd -v
# 或
apachectl -v

2. 查看 rewrite 模块是否启用

httpd -M | grep rewrite

如果看到:

rewrite_module (shared)

说明已启用 ✅

如果没有,启用它:

vim /etc/httpd/conf/httpd.conf

找到并取消注释(去掉前面的 #):

LoadModule rewrite_module modules/mod_rewrite.so

然后重启 Apache:

systemctl restart httpd

二、修改 Apache 配置允许伪静态

方法一:修改虚拟主机配置(推荐 ✅)

编辑你的站点配置(以默认站点为例):

vim /etc/httpd/conf/httpd.conf

或(如果你用的是虚拟主机):

vim /etc/httpd/conf.d/你的站点.conf

<Directory><VirtualHost> 中加入:

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

⚠️ AllowOverride None 会导致伪静态失效


三、创建或编辑 .htaccess 文件

进入网站根目录:

cd /var/www/html

创建 .htaccess

vim .htaccess

示例 1:基础伪静态

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

访问:

http://域名/article/123.html

实际执行:

article.php?id=123

示例 2:ThinkPHP / Laravel 风格(入口隐藏 index.php)

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

示例 3:WordPress 伪静态

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

四、重启 Apache

systemctl restart httpd

五、常见问题排查

1. 伪静态不生效

  • .htaccess 是否放在网站根目录
  • AllowOverride All 是否设置
  • 是否重启 Apache
  • 是否开启 rewrite 模块

2. 403 Forbidden

Require all granted

3. 500 错误

检查 .htaccess 语法是否正确


六、CentOS 7/8 通用命令速查

# 重启
systemctl restart httpd

# 开机自启
systemctl enable httpd

# 查看状态
systemctl status httpd

如果你用的是 宝塔 / LNMP / 某个具体程序(如 WordPress、ThinkPHP),可以告诉我,我可以给你针对你环境的精确配置

0