php - 重定向直接图像 url 请求并在重定向中传递原始 url 值

标签 php .htaccess url redirect post

假设有人(或 Google 图片)试图访问

http://null.com/uploads/someimage.jpg(实际上是/uploads 文件夹中的任何图像)

我希望 htaccess 将用户重定向到

http://null.com/page/

但是,我需要将原始 url (http://null.com/uploads/someimage.jpg) 作为 POST 字符串值传递给重定向目标页面,目标 php 页面可以用来做一些事情

是否可以使用 htaccess 实现?

更新 - 而且,只有当用户代理是人工操作的浏览器而不是像谷歌机器人这样的机器人时,让它工作才会很有趣,这样谷歌和其他搜索引擎就可以在没有重定向的情况下适本地抓取图像

最佳答案

你可以试试这个:

Options +FollowSymlinks
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !page\.php           [NC]
RewriteCond %{REQUEST_URI} ^/uploads/([^/]+)/?  [NC]
RewriteRule .  page.php?url=uploads/%1 [L]

默默地映射

http://null.com/uploads/someimage.jpg 带或不带斜杠

收件人:

http://null.com/page.php?url=uploads/someimage.jpg

假定字符串uploads 是固定的,而someimage.jpg 可以是任何名称。

脚本名称 page.php 是一个示例,也可以是任何名称。替换规则集中的所有实例。

对于永久和可见的重定向,将 [L] 替换为 [R=301,L]

这个答案是根据 OP 评论中的这个描述:

"...redirect the user to this page and pass the former original url as a post value..."

其中 page 是一个脚本。

注意:替换 URL 中传递的参数可以使用 $_GET$_REQUEST 而不是 $_POST 用 PHP 捕获。

更新

这是另一个版本:

Options +FollowSymlinks
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !page\.php        [NC]
RewriteRule ^(.*)\.jpg   page.php?url=$1.jpg [L]

默默地映射

http://null.com/any/number/of/folders/someimage.jpg

收件人:

http://null.com/page.php?url=any/number/of/folders/someimage.jpg

仅当传入 URL 在路径末尾包含扩展名为 jpg 的文件时,才应用重写规则。

关于php - 重定向直接图像 url 请求并在重定向中传递原始 url 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14817030/

相关文章:

php - 从选项中选择多个选项

php - $array2 += $array1 做什么?

security - 使用 htaccess 重定向子域并保留 URL

javascript - 如何构建一个可用于多个 URL 的 Backbone 模型?

javascript - 为什么跟踪脚本在加载外部 JavaScript 时会检查协议(protocol)?

php - 这也违反得墨​​忒尔定律?或者扭曲它会是一种矫枉过正吗?

php - php checkdnsrr 有相当于 mysql 的吗?

php - 如何删除index.php?file=使用.htaccess获取最后一个url

php - .htaccess错误: The requested URL was not found on this server

javascript - 如何获取用作背景的图像的完整 URL?