温馨提示×

centos apache2怎样配置伪静态

小樊
38
2026-10-05 22:18:41
栏目: 智能运维

在 CentOS 上,如果你说的是 Apache(httpd),通常并不是 apache2(那是 Debian/Ubuntu 的叫法),而是 httpd。下面以 CentOS 7/8 + Apache(httpd) 为例,说明如何配置伪静态(URL Rewrite)。


一、开启 mod_rewrite 模块

1. 检查模块是否启用

httpd -M | grep rewrite

如果有 rewrite_module,说明已启用。

2. 如果没有启用

编辑配置文件:

vi /etc/httpd/conf/httpd.conf

确保这一行未被注释:

LoadModule rewrite_module modules/mod_rewrite.so

二、允许目录使用 .htaccess(关键)

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

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

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

AllowOverride None → 改成 All

修改后重启 Apache:

systemctl restart httpd

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

在网站根目录创建 .htaccess:

RewriteEngine On

# 示例:将 /article/123 重写为 /article.php?id=123
RewriteRule ^article/([0-9]+)$ article.php?id=$1 [L]

四、在 Apache 配置文件中直接写(推荐生产环境)

比 .htaccess 性能更好。

<VirtualHost *:80>
    ServerName www.example.com
    DocumentRoot /var/www/html

    <Directory "/var/www/html">
        RewriteEngine On
        RewriteRule ^article/([0-9]+)$ article.php?id=$1 [L]
    </Directory>
</VirtualHost>

然后:

systemctl restart httpd

五、常见伪静态示例

1. 全站 index.php 入口(如 MVC)

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

2. 隐藏 .php 后缀

RewriteEngine On
RewriteRule ^([a-z]+)$ $1.php [L]

六、排错建议

  1. 500 错误

    • 检查 AllowOverride All
    • 检查 .htaccess 语法
  2. 规则不生效

    httpd -t
    

    查看配置是否有误

  3. SELinux 干扰

    setsebool -P httpd_can_network_connect 1
    

如果你用的是 CentOS + Nginx、或 宝塔 / LNMP / 面板,可以告诉我,我可以给你对应配置。

0 踩