使用 .htaccess 自动更正文件扩展名

Auto correct file extensions with .htaccess

如果有人转到 example.com/video.mov 并且这是错误的扩展名,我可以将什么代码添加到 .htaccess 以使其自动更正为正确的文件 example.com/video.mp4

原理与my answer to your previous question中概述的“无扩展文件”非常相似,只是您需要先检查请求的文件是否存在。您可能还需要为新资源强制使用适当的 mime-type。

例如,如果 <anything>.mov 的请求不存在,那么如果该文件存在,则在内部将请求重写为 <anything>.mp4,否则默认为 404。

RewriteEngine On

# Rewrite request from .mov to .mp4 on failure
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{DOCUMENT_ROOT}/.mp4 -f
RewriteRule (.+)\.mov$ .mp4 [T=video/mp4,L]

以上按顺序进行:

  1. (.+)\.mov$ - RewriteRule 模式 检查请求是否以 .mov
  2. 结束
  3. 第一个 条件RewriteCond 指令)检查请求是否映射到文件。
  4. 第二个条件检查对应的.mp4文件是否存在。
  5. 如果上述检查全部满足,请求将重写到相应的 .mp4 文件。
    T 标志在响应中设置适当的 Content-Type header。