我正在尝试在我的网站上获取漂亮的网址..现在它们看起来像这样:
www.site.com/tag.php?id=1
我想把它改成
www.site.com/tag/1/slug
我的数据库表有 ID、标题、信息、Slug
我在网上读到有关 slugs 的内容,但作为 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
htaccess 背后的概念非常简单。我们不监听 URL 模式(像旧的 htaccess 软件那样),而是简单地将所有流量重新路由,否则会导致 404 错误router.php
,这反过来又负责执行所需的操作。有3个重写条目;对于(符号)链接、文件和目录(/aaa
被视为一个文件/aaa/bbb
被视为文件夹)
Router
$_SERVER['REQUEST_URI']
好像"/tag/1/slug"
。我们首先将其修剪为多余的斜杠,然后将其分解为 3 个项目(因此我们不会影响可能包含其他斜杠的 slug),print_r
ing the $segments
(对于标签/45/Hello/World)看起来像:
Array
(
[0] => tag
[1] => 45
[2] => Hello/World
)
最后,因为我看到你想重定向到tags.php?id=1
,你需要做的是设置$_REQUEST['id']
and $_GET['id']
手动并加载tags.php
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)