我只是在某个地方看到了这个,我对此很感兴趣,但似乎在任何地方都找不到它,或者我只是用了错误的词来搜索。
好吧,我看到了这个链接,
http://splur.gy/r/QqVYf/r/2tgNklHgmVK
当我点击它时,我被重定向到另一个页面
https://www.facebook.com/xxx.xxx?sk=app_xxxx
有谁知道这个东西是怎么做出来的?或者只是一点提示开始?
一个帮助会很好。:)
您将需要一个允许您重写请求的服务器,以便您可以将所有请求重定向到单个脚本。如果您正在运行 Apache,您将创建一个.htaccess文件,其中包含以下内容:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^r$ /redirect.php [L,QSA]
RewriteRule ^r/(.*) /redirect.php?__q=/$1 [L,QSA]
</IfModule>
然后,如果您访问http://yourdomain.com/r/234243/adsfsd,请求将被发送到脚本 /redirect.php 并且“234243/adsfsd”将作为 GET 参数“q”传递。
然后,您将创建一个名为redirect.php的文件,该文件将处理请求,然后重定向用户。它可能看起来像这样:
<?php
$redirection = process_to_determine_location_from_query( $_GET['q'] );
header( 'Location: {$redirection}' );
?>
这些都完成了RewriteRule
,一个简单的谷歌搜索将为您提供更多详细信息。
简而言之,URL 将像这样分解:(第 1 行,URL 部分,第 2 行,PHP 相对。
http://splur.gy
http://splur.gy/index.phpr
$_GET['var_1']QQVYf
$_GET['var_2']r
$_GET['var_3']2tgNklHgmVK
$_GET['var_4']
将RewriteMod
采用上述格式设置 URL,并将变量传递给脚本。这是在 URL 中发布变量的另一种方式。
正如您在上面看到的:stackoverflow.com/posts/15182831,实际上没有名为 posts/15182831 的文件,它很简单地用作变量,传递给查询该数据库的脚本,并根据脚本输出结果说。
这称为重定向。您可以使用以下代码在 PHP 中执行此操作:
<?php
header('http://example.com');
可能发生的另一件事是您看到的链接不是您单击时所遵循的实际链接。就像这样做一样简单:
<a href="http://aha-gotcha.com">example.com</a>