简介:我正在尝试使用数据库和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]
有人可以就问题的原因提出建议吗?很抱歉对正则表达式部分缺乏了解。我正在努力提高它。我只是希望得到修复,所以我可以继续我的项目,因为它只是它的一小部分。
非常感谢。
答案 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]