htaccess 404时重定向
htaccess Redirect when 404
我有一个名为 /marker
的子目录,里面有一些 png 文件。现在我希望在尝试调用不存在的 png 时返回文件 /marker/standard.png
。换句话说:例如,如果调用 /marker/doesntexist.png
(不存在),则应传递 /marker/standard.png
。
听起来很简单,但是 RewriteRule
或 ErrorDocument
的几次尝试都失败了。
有什么想法吗?
蒂亚
如果请求 /marker
目录中不存在的另一个 .png
文件,您可以执行以下操作来为 /marker/standard.png
提供服务。
这使用 mod_rewrite 并且应该靠近文档根目录中 .htaccess
文件的顶部。
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^marker/(?!standard\.png$).+\.png$ marker/standard.png [L]
我采取了额外的步骤来排除对 standard.png
本身的请求(使用否定前瞻),以防由于某种原因不存在。
请注意,这是一个 case-sensitive 字符串比较。例如。仅匹配 .png
个文件,不匹配 .PNG
.
当 standard.png
被提供时,这自然会导致 200 OK 响应。如果您仍然需要 404 Not Found 状态,请改用 ErrorDocument
(请参阅下一节)。
使用ErrorDocument
您还提到了 ErrorDocument
指令的使用。这是另一种解决方案,尽管它会导致 404 HTTP 响应状态,这可能是理想的也可能不是。
例如,为了将此 ErrorDocument
限制在 /marker
子目录中,然后在该子目录中创建一个额外的 .htaccess
文件,内容如下:
ErrorDocument 404 /marker/standard.png
对于 /marker
子目录的任何 non-existent 请求,这自然会为 standard.png
服务。要将此限制为 .png
请求,请仅将 ErrorDocument
包装在 <If>
表达式中。例如:
<If "%{REQUEST_URI} =~ /\.png$/">
ErrorDocument 404 /marker/standard.png
</If>
我有一个名为 /marker
的子目录,里面有一些 png 文件。现在我希望在尝试调用不存在的 png 时返回文件 /marker/standard.png
。换句话说:例如,如果调用 /marker/doesntexist.png
(不存在),则应传递 /marker/standard.png
。
听起来很简单,但是 RewriteRule
或 ErrorDocument
的几次尝试都失败了。
有什么想法吗? 蒂亚
如果请求 /marker
目录中不存在的另一个 .png
文件,您可以执行以下操作来为 /marker/standard.png
提供服务。
这使用 mod_rewrite 并且应该靠近文档根目录中 .htaccess
文件的顶部。
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^marker/(?!standard\.png$).+\.png$ marker/standard.png [L]
我采取了额外的步骤来排除对 standard.png
本身的请求(使用否定前瞻),以防由于某种原因不存在。
请注意,这是一个 case-sensitive 字符串比较。例如。仅匹配 .png
个文件,不匹配 .PNG
.
当 standard.png
被提供时,这自然会导致 200 OK 响应。如果您仍然需要 404 Not Found 状态,请改用 ErrorDocument
(请参阅下一节)。
使用ErrorDocument
您还提到了 ErrorDocument
指令的使用。这是另一种解决方案,尽管它会导致 404 HTTP 响应状态,这可能是理想的也可能不是。
例如,为了将此 ErrorDocument
限制在 /marker
子目录中,然后在该子目录中创建一个额外的 .htaccess
文件,内容如下:
ErrorDocument 404 /marker/standard.png
对于 /marker
子目录的任何 non-existent 请求,这自然会为 standard.png
服务。要将此限制为 .png
请求,请仅将 ErrorDocument
包装在 <If>
表达式中。例如:
<If "%{REQUEST_URI} =~ /\.png$/">
ErrorDocument 404 /marker/standard.png
</If>