apache - Mod_Rewrite:重写图像 URL 的 htaccess 规则
问题描述
我们如何在 .htaccess 文件中使用 Apache Mod_Rewrite 仅重写 .png 文件的真实路径?
可见网址:
.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]
推荐阅读
- java - 在 JSch 中使用 SSH“exec”通道执行 sudo
- android - 如何处理 YouTube 片段 OnSaveInstanceState
- python-3.x - Scrapy 选择器属性
- batch-file - 使用评分关键字的分拣机正在发挥作用,并且无法在没有失败的情况下回显
- swift - iOS - 如何在我的相机会话中处理音频记录?
- spring-boot - spring boot - 在调用方法运行之前加载应用程序配置
- python - 如何检测是否在 ModelForm.clean 中添加或编辑了 obj?
- ros - 如何在 PointCloud 的 sensor_msgs/Image 中保存强度值?
- python-3.x - 带有滚动条的 Tkinter Python 框架
- drupal - 我在 Twig 中有这个,变量吐出所有调试代码,而只是一个链接,我该怎么办?