使用PHP提取URL slug。构建URL缩短器

时间:2017-01-25 17:13:35

标签: php apache http url nginx

我正在使用PHP构建一个URL缩短Web应用程序。我能够成功生成更短的URL。但是当我们访问缩短的网址时,我无法重定向用户。

如果用户输入https://example.com/aBc1X,我想抓住aBc1X。然后,我将查询数据库以查找原始URL,然后重定向。

我的问题是,如何从上述网址中提取aBc1X

P.S。我将使用Apache或Nginx。

3 个答案:

答案 0 :(得分:1)

为您做两件事。 首先,您必须将所有流量重定向到一个文件,该文件将是您的路由器文件。您可以通过在.htaccess文件中放置一些规则来完成此操作。我将在那里提出一些通用规则(这一个来自Wordpress):

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^redirect\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /redirect.php [L]
</IfModule>

他们告诉每个url指向哪个文件或目录不会运行文件redirect.php。您可能希望根据需要调整该设置。

然后在redirect.php中,您可以通过查看$_SERVER['REQUEST_URI']内部来捕获网址。 对于您将拥有的网址http://example.com/any-url-i-want $_SERVER['REQUEST_URI'] == '/any-url-i-want

现在你唯一需要的是在数据库中找到url并进行重定向。 我想你可以通过使用parse_url,正则表达式或简单的字符串切割来处理字符串操作。

答案 1 :(得分:0)

您想要使用;

$_SERVER['REQUEST_URI'];

这将返回您正在寻找的东西。

您可以看到documentation here

答案 2 :(得分:0)

解析网址

$url = "https://example.com/aBc1X";
$path = ltrim(parse_url($url, PHP_URL_PATH), '/');

然后$path将根据需要aBc1X。请注意,此解决方案中将省略?之后的任何查询。有关详细信息,请查看documentation of the parse_url function