温馨提示×

centos lamp怎么配置伪静态

小樊
38
2026-07-20 22:46:24
栏目: 智能运维

CentOS 下配置 LAMP(Linux + Apache + MySQL + PHP)伪静态,核心就是 Apache 的 mod_rewrite 模块。下面按常见场景一步一步来。


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

1. 查看是否加载 rewrite 模块

httpd -M | grep rewrite

如果看到:

rewrite_module (shared)

说明已启用。

2. 若未启用,手动开启

vim /etc/httpd/conf/httpd.conf

找到并取消注释:

LoadModule rewrite_module modules/mod_rewrite.so

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

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

通常有两种方式:

✅ 方式一:修改虚拟主机(推荐)

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

示例:

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

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

⚠️ 关键点是:

AllowOverride All

✅ 方式二:修改主配置(不推荐)

vim /etc/httpd/conf/httpd.conf

找到:

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

改为:

AllowOverride All

三、重启 Apache

systemctl restart httpd

四、创建 .htaccess 伪静态规则

在网站根目录创建或编辑:

vim /var/www/html/.htaccess

1. 基础 rewrite 开启

RewriteEngine On

2. 常见伪静态示例

✅ 普通重写(如 index.php?id=1 → /article/1)

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

✅ 去除 index.php(ThinkPHP / Laravel 常用)

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

✅ 强制 HTTPS

RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [L,R=301]

五、常见问题排查

1. .htaccess 不生效

确认:

  • AllowOverride All
  • 已重启 Apache
  • .htaccess 在网站根目录

2. 403 Forbidden

Require all granted

3. 查看错误日志

tail -f /var/log/httpd/error_log

六、不同程序伪静态示例

✅ WordPress

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

✅ ThinkPHP 5/6

<IfModule mod_rewrite.c>
  Options +FollowSymlinks -Multiviews
  RewriteEngine On

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

七、总结(最简流程)

1. 开启 mod_rewrite
2. 设置 AllowOverride All
3. 重启 httpd
4. 写 .htaccess

如果你用的是 CentOS 7 / 8宝塔LNMP,或者某个具体程序(WordPress / ThinkPHP / Laravel),可以告诉我,我给你精确配置方案

0