假设有人(或 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/