温馨提示×

centos apache如何开启伪静态

小樊
42
2026-10-23 12:31:16
栏目: 智能运维

在 CentOS 上让 Apache 开启伪静态(URL Rewrite),通常步骤如下,适用于 CentOS 7/8 + Apache(httpd)。


一、确认 Apache 已安装

httpd -v
# 或
apachectl -v

如果没有安装:

yum install httpd -y
systemctl start httpd
systemctl enable httpd

二、开启 mod_rewrite 模块(关键)

1. 查看模块是否加载

httpd -M | grep rewrite

看到 rewrite_module 说明已开启。

2. 如果没有开启

编辑 Apache 配置文件:

vi /etc/httpd/conf/httpd.conf

确保以下行没有被注释(去掉前面的 #):

LoadModule rewrite_module modules/mod_rewrite.so

三、允许目录使用 .htaccess(非常重要)

Apache 默认可能不允许使用 .htaccess。

找到你的网站目录配置,例如:

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

改成:

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

如果是虚拟主机,在 <VirtualHost> 里改对应 Directory


四、重启 Apache

systemctl restart httpd

五、编写伪静态规则(.htaccess 示例)

在网站根目录创建 .htaccess:

vi /var/www/html/.htaccess

常见示例(ThinkPHP / 通用伪静态)

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

普通伪静态示例

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

六、SELinux 问题(CentOS 常见坑)

如果伪静态不生效,可能是 SELinux 限制:

查看状态

getenforce

临时关闭(测试用)

setenforce 0

永久允许(推荐)

setsebool -P httpd_can_network_connect 1

七、测试

访问:

http://你的IP/article/1.html

应能正常重写到 article.php?id=1


八、常见错误排查

  • 404 → AllowOverride 没改
  • 500 → .htaccess 语法错误
  • 不生效 → 没开 mod_rewrite

如果你用的是 CentOS + Nginx 或 某个框架(WordPress / ThinkPHP / Laravel),可以告诉我,我给你对应完整配置。

0 踩