数据库
首页 > 数据库> > PHP-来自数据库的漂亮网址

PHP-来自数据库的漂亮网址

作者:互联网

我正在尝试在我的网站上获得漂亮的网址..现在,它们看起来像这样:

www.site.com/tag.php?id=1

我想将其更改为

www.site.com/tag/1/slug

我的数据库表具有ID,Title,Info,Slug

我在线阅读有关about的信息,但是对php陌生的人没有运气,任何人都可以帮我解决这个问题.

解决方法:

首先使用以下内容创建一个.htaccess文件:

# Turn on rewrite engine and redirect broken requests to index
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-l
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule .* router.php [L,QSA]
</IfModule>

然后,为router.php设置以下代码:

<?php

$segments=explode('/',trim($_SERVER['REQUEST_URI'],'/'),3);

switch($segments[0]){
    case 'tag': // tag/[id]/[slug]
        $_REQUEST['id']=(int)$segments[1];
        $_GET['id']=(int)$segments[1];
        $slug=$segments[2];
        require_once('tag.php');
        break;
}

?>

进一步澄清

高温通行

htaccess背后的概念非常简单.无需侦听URL模式(就像旧的htaccess软件所做的那样),我们只需将所有流量重新路由,否则将导致404路由到router.php,这反过来又可以完成所需的工作.有3个重写条目;用于(符号)链接,文件和目录(/ aaa被视为文件,而/ aaa / bbb被视为文件夹)

路由器

$_SERVER [‘REQUEST_URI’]看起来像“ / tag / 1 / slug”.我们首先用多余的斜杠修剪它,然后在3个项目中将其爆炸(这样我们就不会影响子弹,它可能包含其他斜杠),$_ segments的print_ring(对于标签/ 45 / Hello / World)如下所示:

Array
(
    [0] => tag
    [1] => 45
    [2] => Hello/World
)

最后,由于我看到您想重定向到tags.php?id = 1,因此您需要手动设置$_REQUEST [‘id’]和$_GET [‘id’]并加载tags.php.

标签:slug,php,database
来源: https://codeday.me/bug/20191102/1993350.html