2013-03-03 64 views
2

我刚刚看到这个地方,我对它感兴趣,似乎无法在任何地方找到它,或者我只是用错误的词搜索。生成URL别名在PHP

嗯,我看到了这个链接,

http://splur.gy/r/QqVYf/r/2tgNklHgmVK 

,当我点击它,我得到了重定向到被称为

https://www.facebook.com/xxx.xxx?sk=app_xxxx 

任何人都知道这件事是怎么做的其他页面?或者只是一点点启动?

帮助会很好。 :)

回答

1

这些都与RewriteRule,一个简单的谷歌搜索willgive你MROE细节完成。

简而言之,网址将会按如下方式分解:(第1行,URL部分,第2行,PHP相对。

http://splur.gy
http://splur.gy/index.php

ř
$ _GET [ 'VAR_1']

QqVYf
$ _GET [ 'VAR_2']

ř
$ _GET ['VAR_3 ']

2tgNklHgmVK
$ _GET [ 'VAR_4']

RewriteMod将采取URL如上述格式的设置,并通过向varialbes一个脚本。这是在URL中发布变量的另一种方式。

正如你在上面看到的:stackoverflow.com/posts/15182831,实际上并没有一个名为posts/15182831的文件,它被简单地用作变量,传递给查询数据库的脚本,并且基于结果关于剧本说什么。

0

它被称为重定向。您可以使用此代码做在PHP:

<?php 
header('http://example.com'); 

可能发生的另一件事是,你看到的链接是不是当您单击您按照实际的链接。这是因为这样做简单:

<a href="http://aha-gotcha.com">example.com</a>

+0

只是为了澄清,这将被放置在页面顶部的'http:// splur.gy/r/QqVYf/r/2tgNklHgmVK'。 – 2013-03-03 03:52:49

+0

是的,那生成的链接将被放置在页面顶部 http://splur.gy/r/QqVYf/r/2tgNklHgmVK 当我们去那,它转移到一个新的页面。你可以尝试。它真的是PHP中的header()函数吗? – 2013-03-03 03:57:12

2

您将需要一台服务器,允许您重写请求,以便您可以将所有请求重定向到单个脚本。如果你正在运行的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}'); 

?>