繁体   English   中英

Mod_Rewrite:htaccess 规则重写图像 URL

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM