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

标签 .htaccess redirect mod-rewrite url-rewriting friendly-url

如果有人试图直接访问此文件夹中的任何图像,我希望: 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 图像文件夹中的图像)。请注意,我不想使用禁止标志来阻止图像访问,因为我确实希望图像能够被搜索引擎索引。不确定这是否可能?

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

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

我可能遗漏了一些明显的东西,但非常感谢您的帮助:)

最佳答案

您几乎设置好了,只需在您的规则中添加一个条件。我添加了条件来检查条件,如果查询字符串为 null 则仅通过此重定向我们不会陷入无限重定向循环,修复 OP 的尝试。

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

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

关于.htaccess 规则将图像文件的直接 View 重定向到页面,图像作为查询字符串传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65526424/

相关文章:

php - .htaccess 影响子域中的目录

Django 测试总是返回 301

PHP代码点火器;防止表单重新提交

apache - .htaccess 非 www 到 www 以及 http 到 https 重定向

.htaccess 将所有内容重写到父目录

php - "Public"文件夹的 Laravel(和通用)框架设置

php - centos 6权限问题

php - 如何在每个请求的根 URL 后添加一个单词?

html - 整合 Paypal

apache - 多域设置上的 htaccess : other domains don't work