You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

核心PHP博客.htaccess伪静态URL配置求助

解决方案:配置伪静态URL

以下是整合所有需求的完整.htaccess配置,同时修复了原有规则的冗余问题(比如重复开启RewriteEngine):

## 开启重写引擎(仅需一次)
RewriteEngine On

## 强制HTTPS并移除www
RewriteCond %{HTTP_HOST} ^www\.example\.com [OR]
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://example.com/$1 [R=301,L]

## 伪静态规则:将路径作为slug转发到index.php
# 排除真实存在的文件和目录,避免影响静态资源(如css、js、图片)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# 根目录直接访问仍走index.php(列表页),非根路径则传递slug参数
RewriteRule ^([^/]+)?$ index.php?slug=$1 [QSA,L]

## 移除.php后缀(仅对真实存在的PHP文件生效)
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^([^\.]+)$ $1.php [NC,L]

## 错误文档配置
ErrorDocument 404 https://example.com/err?code=404
ErrorDocument 500 https://example.com/err?code=500

关键规则说明:

  • 合并HTTPS与www移除规则:通过OR条件把两个重定向需求合并成一组,减少规则冗余,同时使用R=301(永久重定向)利于SEO。
  • 伪静态核心规则:
    • !-f和!-d确保只对不存在的文件/目录生效,不会干扰静态资源或其他真实文件的访问。
    • ^([^/]+)?$匹配根路径(空,对应博客列表页)或单个路径段(即文章slug),QSA参数可保留可能存在的其他查询参数。
    • 用户访问https://example.com/my-blogpost-url-slug时,服务器内部会转发到index.php?slug=my-blogpost-url-slug,完全适配你现有PHP代码的判断逻辑。
  • 调整移除.php规则顺序:放在伪静态规则之后,且添加%{REQUEST_FILENAME}\.php -f条件,确保仅当对应PHP文件真实存在时才移除后缀,避免和伪静态路径冲突。

注意事项:

  1. 确保服务器已启用mod_rewrite模块。
  2. 测试阶段可先用R=302临时重定向,确认规则生效后再改为R=301永久重定向。
  3. 若后续有多级路径需求(如分类页),可再调整伪静态规则,当前配置已满足单篇文章slug的需求。

内容的提问来源于stack exchange,提问作者zaacwiliam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 10:25:35