如何在链接到内部页面时将用户重定向到外部站点?
我见过这样的例子:
- example.com/go/ksdjfksjdhfls
- example.com/?go=http://www.new-example.com
- ...还有更多...
这是如何在 php 中实现的?
这对 SEO 有什么好处/坏处吗?
最佳答案
我看不到这种方法有任何好处,但有几种方法可以实现。要使用 GET
查询执行此操作,您只需要以下代码:
HTML:
<a href="http://example.com/link.php?site=http://www.google.com">Google!</a>
PHP:
if (filter_var($_GET['site'], FILTER_VALIDATE_URL)) {
header('Location: ' . $_GET['site']);
}
对于上面的示例,它实际上会将用户带到该位置,而不是:
http://example.com/link.php?site=http://www.google.com
要在拉起远程站点时使 url 成为“本地”,您要么必须:
- 搞乱 URL 重写,这可能会变得困惑,我不确定是否会让您执行上述操作
- 通过 curl 检索远程页面并显示它,这可能会破坏“远程”页面上的链接
- 使用 iframe 并将 iframe 设置为页面大小。请注意,最后一种方法虽然攻击性最小,但被认为是一种潜在的安全漏洞,称为“点击劫持”,因为它用于诱骗用户点击一个页面的链接,而该页面隐藏了指向另一个站点的恶意链接。许多服务器和浏览器正在采取措施避免这种情况(例如,谷歌不允许对其主页进行 iframing),因此这也可能会陷入死胡同。
所以在我能想到的三种服务器端方法中,一个可能可行也可能不可行,而且很痛苦。一个人会瘫痪并给服务器带来沉重的负担。最后一个是已知的坏人,可能不适用于许多情况。
所以我只使用重定向,实际上,如果您不需要地址栏来显示本地 URL,那么我只需要一个直接链接。
所有这些都提出了一个问题:您希望完成什么?
关于php - 在链接到内部页面时将用户重定向到外部站点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10966632/