使用 .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]
以上按顺序进行:
(.+)\.mov$
- RewriteRule
模式 检查请求是否以 .mov
结束
- 第一个 条件(
RewriteCond
指令)检查请求是否映射到文件。
- 第二个条件检查对应的
.mp4
文件是否存在。
- 如果上述检查全部满足,请求将重写到相应的
.mp4
文件。
T
标志在响应中设置适当的 Content-Type
header。
如果有人转到 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]
以上按顺序进行:
(.+)\.mov$
-RewriteRule
模式 检查请求是否以.mov
结束
- 第一个 条件(
RewriteCond
指令)检查请求是否映射到文件。 - 第二个条件检查对应的
.mp4
文件是否存在。 - 如果上述检查全部满足,请求将重写到相应的
.mp4
文件。
T
标志在响应中设置适当的Content-Type
header。