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


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

简介:我正试图使用数据库和php建立一个简短的URL系统。然而,我发现了一种使用.htaccess文件、regex和本地配置文件的更短/更快的方法。然而,本教程并没有提供太多的支持或解释,这是我看到的第一个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.';
}
?>

换句话说,它会检查传递的参数是否在静态配置文件中(例如谷歌:http://example.com/index.php?l=google),如果是的话,那么当然会将他们重新引导到现场。配置文件内容:

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

合乎逻辑。能够理解它是如何工作的。然而,我的问题是上面提到的.htaccess文件。我只接触过regex,并计划学习更多。然而,目前我还不够熟练,无法真正理解编写需要实现的内容所需的语法。需要做的是,用户基本上输入www.example.com/url/google,然后将其重定向到www.example.com/url/index.php?l=谷歌-这是我一直无法开始工作的事情,我只是收到了web服务器配置错误。.htaccess:的配置文件

RewriteEngine On
RewriteCond $1 !^(index'.php)
RewriteRule ^(.*)$ index.php?l=$1 [L]

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

非常感谢。

这将重定向它:

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