尝试使用 .htaccess 缩短 URL,但遇到配置错误

Trying to shorten URLs using .htaccess, but hitting configuration errors

简介:我正在尝试使用数据库和 php 建立一个简短的 URL 系统。然而,我遇到了很多 shorter/quicker 使用 .htaccess 文件、正则表达式和本地配置文件的方法。然而,本教程并没有提供太多支持或解释,这是我见过的 URL 重写的第一个实例。

下面是获取传递到页面的参数的 php 脚本的代码:

<?php

$links = parse_ini_file('links.ini');

if(isset($_GET['l']) && array_key_exists($_GET['l'], $links))
{
    header('Location: ' . $links[$_GET['l']]);
}
else
{
    header('HTTP/1.0 404 Not Found');
    echo 'Unknown link.';
}

?>

所以换句话说,它会检查传递的参数是否在静态配置文件中(这里的示例是 google: http://example.com/index.php?l=google),如果是,那么当然会重新将他们引导至该站点。配置文件内容:

google  = https://www.google.com/
fb      = https://www.facebook.com/

相当合乎逻辑。可以理解它是如何工作的。然而,如上所述,我的问题来自 .htaccess 文件。我只涉足正则表达式,并计划学习更多。但是目前我还不够熟练,无法真正理解编写需要实现的内容所需的语法。需要做的是让用户基本上输入 www.example.com/url/google 并将他们重定向到 www.example.com/url/index.php? l=google - 这是我无法开始工作的地方,我刚刚收到网络服务器配置错误。 .htaccess 的配置文件:

RewriteEngine On

RewriteCond  !^(index\.php)
RewriteRule ^(.*)$ index.php?l= [L]

任何人都可以就问题的原因提出建议吗?很抱歉对正则表达式部分缺乏理解。我正在努力提高它的技能。我只想修复到位,这样我就可以继续我的项目,因为这只是其中的一小部分。

非常感谢。

这将重定向它:

RewriteEngine On

RewriteCond %{REQUEST_URI} ^/url/([a-z]+)$ [NC]
RewriteRule ^ /url/index.php?l=%1 [R=301,L]

RewriteCond  !^(index\.php)
RewriteRule ^(.*)$ index.php?l= [L]