【问题标题】:Creating URL Shortner service创建 URL Shortner 服务
【发布时间】:2014-06-30 17:47:24
【问题描述】:

这是我的第一个问题:

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

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

但 TinyUrl.com 等一些服务的工作方式是这样的:TinyURL.com/key !!!!

我如何在 php 中得到这个?

非常感谢。

【问题讨论】:

  • 搜索“url重写”或“htaccess url重写”
  • 这个肯定没有意义:它完全没有任何问题但是有问题
  • 您通过设置 apache 将任何文件读取为 PHP 来删除 .php 扩展名?非常糟糕的方法。
  • 我刚刚为 go.php 文件删除了 .php。
  • @user3631262 Here you got answer

标签: php url tinyurl


【解决方案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]

我会从重写中排除真正存在的文件,用于此 重写条件。

这可以在这里完成:

# 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]

(来源:RewriteCond to skip rule if file or directory exists@anubhava)

【讨论】:

  • 不就是这样吗? [A-Z-a-z-1-9](您确定破折号的正确位置吗?)
  • 我确信破折号,我什至在htaccess.madewithlove.be尝试过
  • 只需确保在 RewriteCond 之前放置“RewriteEngine on”即可。
  • 不需要检查mod_rewrite.c是否存在吗?
  • 当然你可以而且应该这样做,这不是一个完整的解决方案,我更专注于解释如何去做以及它做了什么。您可以期望在大多数服务器上运行 mod_rewrite.c,但仍应检查它是否处于活动状态。
【解决方案2】:

创建 .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. 

?>

【讨论】:

  • 为了正确转义/绑定您的字符串,我不会让所有字符避免在以后遇到麻烦,如果您只允许字母+数字,则有足够的字符可用。
  • 如何限制字符数?
猜你喜欢
  • 1970-01-01
  • 2011-09-19
  • 2014-12-11
  • 2011-08-20
  • 2011-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多