如何将子目录中不存在的文件请求重定向至指定页面?
解决方案
你可以通过以下.htaccess规则实现需求,根据文件放置位置选择对应代码:
放在网站根目录的.htaccess
RewriteEngine On # 仅对/files/目录下不存在的文件/目录执行重定向 RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^files/.+$ /files/toppage [R=302,L]
放在files目录下的.htaccess(更简洁)
RewriteEngine On # 仅对当前目录下不存在的文件/目录执行重定向 RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^.+$ toppage [R=302,L]
规则说明
RewriteCond %{REQUEST_FILENAME} !-f:判断请求路径不是已存在的文件RewriteCond %{REQUEST_FILENAME} !-d:判断请求路径不是已存在的目录- 两条条件同时满足时触发重定向:
- 根目录规则匹配
/files/后带任意内容的路径,跳转至/files/toppage files目录下的规则直接匹配当前目录非空路径,跳转至toppage
- 根目录规则匹配
R=302为临时重定向,需永久重定向可改为R=301;L表示匹配后不再执行后续规则
原代码问题说明
你之前的代码核心是将根目录请求转发至subdir目录,和当前/files/目录下的不存在请求重定向需求完全不匹配,因此无法实现预期效果。
内容的提问来源于stack exchange,提问作者Klein
相关产品推荐
相关产品推荐

