创建URL Shortener服务

时间:2014-05-13 07:05:06

标签: php url tinyurl

这是我的第一个问题:

我在PHP中创建了一个URL Shortner Service。它完全没有任何问题,但是出现了问题:

想要访问其网址的人应输入: MyDomain.com/go.php?u=key 在这里,我尝试通过配置apache和working来删除 .php 扩展。现在它是这样的: 的 MyDomain.com/go?u=key

但是像TinyUrl.com这样的服务就是这样的: TinyURL.com/key !!!!

我怎样才能在php中获得这个?

非常感谢。

2 个答案:

答案 0 :(得分:1)

您基本上使用 mod_rewrite

使用mod_rewrite,您可以说所有请求都是

www.example.com/[A-Za-z1-9]

被重定向到:

www.example.com/shorturl.php?key=$1

$ 1是从请求的URL中提取的变量。

使用纯PHP没有正确的方法。

重写规则可能如下所示:

RewriteRule ^([A-Za-z1-9]*)$ shorturl.php?key=$1 [L]

我会排除重写时真正存在的文件,用于此目的 的RewriteCond。

这可以像这样完成:

# If the request is not for a valid directory
RewriteCond %{REQUEST_FILENAME} !-d
# If the request is not for a valid file
RewriteCond %{REQUEST_FILENAME} !-f
# If the request is not for a valid link
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^([A-Za-z1-9]*)$ shorturl.php?key=$1 [L]

(资料来源:anubhava at RewriteCond to skip rule if file or directory exists

答案 1 :(得分:0)

创建.htaccess文件以将任何请求重定向到您的域名为go.php

所以在.htacess中这样做:

<IfModule mod_rewrite.c>
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)$ go.php?key=$1 [PT,L]

</IfModule>

将mydomain.com/userkey等任何请求重定向到mydomain.com/go.php?key=userkey

现在在index.php中,您可以进行重定向登录。

<?php 

$key = $_GET['key'];

// your logic here. 

?>