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

同名work.html与work目录时example.com/work访问404的.htaccess问题咨询

问题分析与解决方案

问题出在服务器优先级和现有规则的条件限制:

  • 访问example.com/work时,服务器会优先查找名为work的目录,而你现有规则的第一条RewriteCond %{REQUEST_FILENAME} !-d(意为“请求路径不是目录”)会跳过这条请求的重写逻辑。
  • 由于work目录内没有默认索引页(比如index.html),服务器返回404;而直接访问work.html时,规则会正常匹配(请求路径不是目录,且存在对应的.html文件)。

解决方案

你需要添加额外规则处理这种“目录名与同名.html文件冲突”的情况,以下两种方案任选其一:

方案一:通用规则(适配所有类似场景)

调整规则顺序,先处理请求为目录但存在同名.html文件的情况,再执行原有规则:

RewriteEngine on

# 若请求的是目录,且存在同名的.html文件,则重写到该html
RewriteCond %{REQUEST_FILENAME} -d
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^(.*)/$ $1.html [NC,L]

# 原有规则:请求不是目录且存在对应.html文件时重写
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^(.*)$ $1.html [NC,L]

方案二:针对性规则(仅处理/work)

直接为/work添加单独的重写规则,放在原有规则之前:

RewriteEngine on

# 匹配/work或/work/,重写到work.html
RewriteRule ^work/?$ work.html [NC,L]

# 原有规则
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^(.*)$ $1.html [NC,L]

两种方案都能解决example.com/work的404问题,且不影响example.com/work/piece1等子页面的正常访问。

内容的提问来源于stack exchange,提问作者Owen Vera Lara

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 04:45:02