在 CentOS + Apache 环境下设置伪静态(URL Rewrite),通常是通过 mod_rewrite 模块来实现。下面按步骤说明。
httpd -v
# 或
apachectl -v
httpd -M | grep rewrite
如果有 rewrite_module,说明已启用。
如果没有,编辑 Apache 配置:
vi /etc/httpd/conf/httpd.conf
找到:
#LoadModule rewrite_module modules/mod_rewrite.so
去掉前面的 #
编辑你的站点配置(如):
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/
systemctl restart httpd
进入网站根目录:
cd /var/www/html
vi .htaccess
RewriteEngine On
RewriteRule ^article/([0-9]+)\.html$ article.php?id=$1 [L]
访问:
/article/123.html
实际指向:
/article.php?id=123
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
AllowOverride 是否为 All.htaccess 是否在网站根目录检查:
Require all granted
tail -f /var/log/httpd/error_log
✅ CentOS Apache 伪静态核心三步:
mod_rewriteAllowOverride All.htaccess如果你用的是 具体程序(WordPress / ThinkPHP / Discuz / 自写PHP),可以告诉我,我可以直接给你现成规则。