【问题标题】:Redirect direct image urls requests and pass the original url value in the redirection重定向直接图像 urls 请求并在重定向中传递原始 url 值
【发布时间】:2013-01-26 20:14:21
【问题描述】:

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

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

我希望 htaccess 将用户重定向到

http://null.com/page/

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

是否可以通过 htaccess 来实现?

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

【问题讨论】:

  • 为什么这一步:http://null.com/page/?image=someimage.jpg,为什么不直接传给脚本呢?
  • 哦,我不确定,有没有一种快速的方法可以将原始重定向的 URL 值传递给我想要重定向到的 php 页面?我需要将它存储到一个值中,然后让 php 页面对其进行处理
  • 任何参数都必须存在于传入的 URL 中,并且第二步不能添加更多参数,除非它被重定向到一个脚本,该脚本反过来生成第二个 URL,再次被重定向到另一个脚本。在这种情况下,pageuploadssomeimage.jpg 是图像,所以,是的,这两个参数都可以直接传递给页面脚本。例如:page_script.php?page=uploads&image=someimage.jpg
  • 不,我需要将这个 url 'null.com/uploads/someimage.jpg' 传递给一个页面,该页面将把该 url 作为一个字符串并对其进行处理;或者我可以使用'someimage.jpg',但同时我发现我最终真正需要的是整个原始URL......如何在htaccess中判断“如果url指向上传中的图像,重定向用户到这个页面并将以前的原始网址作为帖子值传递?(我已经编辑了我的问题)
  • 我认为这正是我在之前的评论中所建议的。不过,您可能需要相应地更新您的问题。

标签: php .htaccess url redirect post


【解决方案1】:

你可以试试这个:

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 cmets中的这个描述:

"...将用户重定向到此页面,并将以前的原始 url 作为帖子值传递..."

page 是一个脚本。

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

更新

这是另一个版本:

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 的文件时,才会应用重写规则。

【讨论】:

  • 这几乎可以工作,谢谢我只有 htaccess 的最后一行有问题;因为实际上 /uploads 中的内容可能在子文件夹中,而不是在上传根目录中,如何包含可能的子文件夹?
  • 所以它可以在任何文件夹中,例如http://null.com/folder/folder1/folder2/someimage.jpg?如果是这样,我会更新我的答案。请确认。
  • 是的,谢谢,我也在调查,完成后会链接我的具体案例
  • 无论如何,我更新了我的答案。希望这是你需要的。如果不是,请告诉我。
  • 谢谢,它非常有用,我需要为 wordpress 调整它,但我想我可以到达那里
猜你喜欢
  • 2017-06-01
  • 2011-08-29
  • 2012-04-15
  • 1970-01-01
  • 2011-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-18
相关资源
最近更新 更多