我构建了一个脚本来缩短长网址。一切正常,除了当我访问缩短的链接时,我得到了
错误 “未找到请求的 URL/ESrdhPNLMV 在此服务器上未找到。”
缩短的网址具有 http://example.com/ESrdhPNLMV
格式。 “ESrdhPNLMV”部分作为标题存储在数据库中,作为长url的标题。
当前的 .htaccess 规则
RewriteEngine on
RewriteRule ^([^\/]+)\/?\/example.com\/?title=$1 [L,QSA]
我从某人那里得到了代码并用 regex101.com 进行了修改并以上面的代码结束。请问当我访问短链接时,重定向到数据库中存储的url的正确方法是什么。
下面是从db获取url的代码:
if(isset($_GET['title'])){
//select link from database
$result = $db->prepare("SELECT * FROM links WHERE title =?");
$result->bind_param("s",$_GET['title']);
$result->execute();
$goto = $result->get_result()->fetch_array();
$g = $goto[1];
header("Location: $g"); }
错误登录:
$goto = $result->get_result()->fetch_array();
即:
PHP Fatal error: Call to undefined method mysqli_stmt::get_result() in
读到上面的错误有一个 lin to mysqlnd 驱动程序,我检查了 phpinfo() 并发现驱动程序已启用。那我在这里做错了什么?
更新:现在我已经能够解决错误消息了。然后去
http://example.com/?title=ESrdhPNLMV
现在打开相同的 http://example.com/?title=ESrdhPNLMV
您需要将规则更改为:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([\w-]+)/?$ /?title=$1 [L,QSA]
我是一名优秀的程序员,十分优秀!