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

时间:2015-02-16 22:43:52

标签: php regex apache .htaccess

简介:我正在尝试使用数据库和php建立一个简短的URL系统。然而,我使用.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 $1 !^(index\.php)
RewriteRule ^(.*)$ index.php?l=$1 [L]

有人可以就问题的原因提出建议吗?很抱歉对正则表达式部分缺乏了解。我正在努力提高它。我只是希望得到修复,所以我可以继续我的项目,因为它只是它的一小部分。

非常感谢。

1 个答案:

答案 0 :(得分:0)

这将重定向它:

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]