.htaccess 规则将图像文件的直接视图重定向到页面,图像作为查询字符串传递

Posted

技术标签:

【中文标题】.htaccess 规则将图像文件的直接视图重定向到页面,图像作为查询字符串传递【英文标题】:.htaccess rule to redirect direct view of image file to a page, with image passed as a query string 【发布时间】:2021-04-08 02:32:50 【问题描述】:

如果有人尝试直接访问此文件夹中的任何图像,我想: https://www.example.com/map-images/example-image-123.jpg

它们被重定向到一个页面,将图像名称作为查询字符串传递,并在此处结束: https://www.example.com/map-image-viewer?imagename=example-image-123.jpg

澄清:在 map-image-viewer 页面上,我需要能够将 example-image-123 用作 iframe 中的 src(即使我不允许直接访问地图图像文件夹中的图像)。请注意,我不想使用禁止标志阻止图像访问,因为我希望图像能够被搜索引擎索引。不确定这是否可能?

更新:我尝试了以下操作,它确实将特定图像的查看重定向到地图图像查看器页面,并将图像名称作为查询参数传递。 但是,该图像不能再用作 map-image-viewer 页面上 iframe 中的 src

RewriteCond %REQUEST_URI ^/map-images/(.*)$
RewriteRule ^(.*) /map-image-viewer?imagename=%1 [R=301,L]

我可能遗漏了一些明显的东西,但希望得到帮助 :)

【问题讨论】:

【参考方案1】:

您几乎已准备就绪,只需在规则中再添加一个条件即可。如果查询字符串为空,我添加了条件来检查条件,然后仅通过此重定向我们不会陷入无限重定向循环,修复 OP 的尝试。

请确保在测试任何 URL 之前清除浏览器缓存。

RewriteEngine ON
RewriteCond %REQUEST_URI ^/map-images/(.*)/?$ [NC]
RewriteCond %QUERY_STRING ^$
RewriteRule ^(.*)$ map-image-viewer?imagename=%1 [R=301,L]

【讨论】:

评论不用于扩展讨论;这个对话是moved to chat。

以上是关于.htaccess 规则将图像文件的直接视图重定向到页面,图像作为查询字符串传递的主要内容,如果未能解决你的问题,请参考以下文章

Htaccess 规则将域重定向到 index.html

配置 htaccess 以直接访问 CSS 和 JS 文件,但将所有其他请求重定向到索引文件 [重复]

.htaccess 图片重定向

.htaccess中带?参数的重定向伪静态写法

PHP .htaccess重定向

Htaccess 301将规则/ HTTP重定向到HTTPS /非www到www