我正在使用PHP构建一个URL缩短Web应用程序。我能够成功生成更短的URL。但是当我们访问缩短的网址时,我无法重定向用户。
如果用户输入https://example.com/aBc1X
,我想抓住aBc1X
。然后,我将查询数据库以查找原始URL,然后重定向。
我的问题是,如何从上述网址中提取aBc1X
?
P.S。我将使用Apache或Nginx。
答案 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)
答案 2 :(得分:0)
解析网址
$url = "https://example.com/aBc1X";
$path = ltrim(parse_url($url, PHP_URL_PATH), '/');
然后$path
将根据需要aBc1X
。请注意,此解决方案中将省略?
之后的任何查询。有关详细信息,请查看documentation of the parse_url
function。