根目录.htaccess重写规则为何影响其他文件?
解决根目录HTML文件无法加载的问题
嘿,我一眼就看出问题所在了——你当前的Rewrite规则会把所有以.html结尾的请求都抓去转发到viewphoto.php,包括你根目录下真实存在的HTML文件!服务器根本分不清哪些是你要重写的照片ID链接,哪些是真实的HTML文件,自然就没法正常加载后者的内容了。
给你个简单的修复方案,只需要在原规则前加两个条件,让重写只对「不存在的文件/目录」生效:
RewriteEngine On # 跳过真实存在的文件(比如你的根目录HTML) RewriteCond %{REQUEST_FILENAME} !-f # 跳过真实存在的目录 RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^([^/]+)\.html?$ /photography/albums/viewphoto.php?id=$1 [QSA,NC,L]
顺便提一句,你原规则里的[^/d]+应该是笔误吧?这个正则会排除所有带字母d的ID,改成[^/]+才能匹配任意不含斜杠的ID字符串,更符合你的需求。
验证步骤:
- 把修改后的
.htaccess保存到根目录 - 访问根目录的真实HTML文件(比如
http://www.example.com/index.html),应该能正常加载内容了 - 再测试照片重写URL(比如
http://www.example.com/C01-A01-P01.html),确认还是能正确跳转到对应的照片页面
内容的提问来源于stack exchange,提问作者Barton
相关产品推荐
相关产品推荐

