php - PHP 假 url 解析成 GET 或类似的
问题描述
我今年早些时候使用过 laravel,我喜欢使用 url 访问 REST 客户端的想法。我想知道我如何能够从不存在的 URL 重定向到现有的 url 并保留该 GET 数据。
当前的php实现甚至可能吗?
提前致谢!
编辑:
例如,假设我想允许登录用户下载文件。所述文件将从以下网址下载:http://example.ex/image.png
但如果我只是将 image.png 放入我的网络服务器的根目录,任何人都可以下载它,因为它是直接链接。我将如何使用相同的 URL,但要为 index.php 提供$_GET['url'] = image.png
,所以如果用户已登录,我可以为用户提供一个临时下载链接。
解决方案
你可以这样做(在 PHP 中)我不编码 Laravel
$arr_url = parse_url('http://example.com/old_location?foo=bar');
$query = !empty($arr_url['query']) ? '?'.$arr_url['query'] : '';
header("Location: http://example.com/new_location{$query}");
exit;
或者你可以使用$_SERVER
(我忘了它是否包含?
)
$query = !empty($_SERVER['QUERY_STRING']) ? '?'.$_SERVER['QUERY_STRING'] : '';
header("Location: http://example.com/new_location{$query}");
两件重要的事情。
- 在调用之前没有输出,
header
甚至没有一个空格 - 使用标头后调用退出。
来自不存在的 URL
正如我所说我不使用Laraval,所以我不能谈论它如何处理404,所以你需要在处理它的控制器中进行重定向,这需要一些逻辑来决定是否重定向。
更新
我想在 PHP 中执行此操作,但如果我的以 image.png 结尾的 URL 不是有效的 php 文件,这并没有真正的帮助。
说access REST
这意味着它将是一个PHP文件。如果您只是想查找文件是否存在并重定向,请使用 HTACCESS
#if not is a real file
RewriteCond %{REQUEST_FILENAME} !-f
//redirect
你如何决定重定向到哪里是一个悬而未决的问题,因为这对于我来说是一个广泛的给出具体答案。
最后一件事是你的.png
例子。可以使用.php
文件返回具有正确标题的图像数据。我曾经建立了一个网站,将用户图像存储在 Zip 文件中,然后仅在用户登录时才显示图像,方法是从 ZIP 流式传输文件的内容(无临时文件)。
服务器返回的所有内容都是文本,它被视为图像的唯一原因是因为 Apache 知道内容标题.png
应该有Content-type: image/jpng
或类似的东西。在 PHP 中可以“伪造”的东西。
推荐阅读
- android - WebView:如何使用默认浏览器加载特定链接
- python - Python 在三元条件运算符中使用 print() 函数?
- angular - 使用 Angular 2 和 Flask 进行用户身份验证
- java - 有没有办法验证 spring-data-rest 存储库方法上的方法参数?
- reactjs - 我如何更改反应表按钮样式
- python - 谷歌合作没有找到 Python 包
- python - 使用字典创建邻接矩阵,其中字母值在python中转换为数字
- ios - 在 Swift 中设置动画 UITableViewCell 突出显示颜色
- c# - 在 .NET 中使用 DatePicker
- intellij-idea - 从终端运行 IntelliJ 想法打印一切都变了