3

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

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

我希望 htaccess 将用户重定向到

http://null.com/page/

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

有可能用htaccess实现吗?

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

4

1 回答 1

2

你可以试试这个:

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 评论中的描述:

“...将用户重定向到此页面并将以前的原始网址作为帖子值传递...”

page脚本在哪里。

注意:在替换 URL 中传递的参数可以使用 PHP 使用$_GETor $_REQUEST, not来捕获$_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路径末尾带有扩展名的文件时,才会应用重写规则。

于 2013-02-11T18:31:10.507 回答