.htaccess中mod_rewrite路径错误,PHP网站伪静态链接配置问题
解决干净URL的路径错误问题
你的Rewrite规则已经实现了URL重写的核心映射,但出现路径错误大概率是相对资源加载路径混乱和RewriteBase配置缺失导致的,下面一步步帮你修复:
1. 补全RewriteBase基准配置
在.htaccess开头加上RewriteBase /,这能让Apache明确重写的基准路径是网站根目录,避免子目录场景下的路径解析错误:
RewriteEngine On RewriteBase / RewriteRule ^exampleCategory/([A-Za-z0-9-]+)/?$ index.php?go=$1 [NC,L]
2. 修复页面内的相对资源路径问题
当用户访问example.com/exampleCategory/item7时,浏览器会默认认为当前所在目录是/exampleCategory/item7/,页面里的相对路径(比如<link href="style.css">)会被解析成/exampleCategory/item7/style.css,但实际资源可能在根目录。解决方法二选一:
- 改用绝对路径:把所有CSS、JS、图片的引用改成根目录开头的绝对路径,比如
<link href="/style.css">、<script src="/js/main.js"> - 添加base标签统一基准:在页面的
<head>标签内加入一行代码,强制所有相对路径以根目录为基准:
<base href="/">
3. 检查链接生成的正确性
如果页面里的链接是手动编写或PHP动态生成的,要确保输出的是/exampleCategory/item7这类干净URL,而不是原来的index.php?go=item7格式,这样才能让重写规则正常生效。
测试验证
修改完成后,访问目标干净URL,打开浏览器开发者工具(F12)的「网络」面板,确认所有资源的请求路径正确,同时检查页面是否正常加载对应go=item7的内容。
内容的提问来源于stack exchange,提问作者JohnnyRRR
相关产品推荐
相关产品推荐

