[英]Mod_Rewrite: htaccess rule to rewrite image URL
我们如何在 .htaccess 文件中使用 Apache Mod_Rewrite 仅重写.png 文件的真实路径?
可见URL:
.com/italy/region/internal/map1234.png
.com/italy/country/map1234.png
.com/italy/map1234.png
文件的真实位置:
.com/images/map1234.png
注意我指的是 Mod_Rewrite 而不是常见的 301 重定向。
RewriteCond %{REQUEST_URI}./images/.* RewriteRule ^(.*\,(gif|jpg|png))$ images/$1 [QSA,L]
它有效,但不适用于子文件夹。
这仍然会重定向子文件夹中的图像,但/italy/region/internal/map1234.png
将被重定向到/images/italy/region/internal/map1234.png
。
要使其适用于任何子文件夹,请将其更改为:
RewriteCond %{REQUEST_URI} !/images/
RewriteRule /(\w+\.(gif|jpg|png))$ images/$1 [L]
\w+
(以前是.*
) - 通过在捕获的模式中排除斜线,我们确保我们只捕获文件名而不是整个 URL 路径。
不需要QSA
标志。
更新:不幸的是,如果我使用带有破折号的图像,此代码将失败(404)。 例如 my-name.png 有什么想法吗?
将上述正则表达式中的\w
(任何单词字符)更改为[\w-]
以包含连字符。 例如:
RewriteRule /([\w-]+\.(gif|jpg|png))$ images/$1 [L]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.