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