php有转产品的吗,php-如何将现有的类别和产品转换为SEO友好的URL

我最近进行了一个项目,将旧的购物车网站(定制开发)转换为现代的SEO友好网站

这是我的问题,当前站点使用如下URL

http://www.domain.com/page.php?id=XX

我想将现有的页面数据库(产品和类别)转换为类似于以下内容的URL

http://www.domain.com/confectionery-&-snacks/lollies/cola-zombie-chews

如果用户要删除cola-zombie-chews,则网址应如下所示,并加载页面棒棒糖,依此类推,如果删除了棒棒糖,则将加载页面糖果和糖果.零食

http://www.domain.com/confectionery-&-snacks/lollies/

当前的数据库设置类似于以下内容

ID | TYPE | NAME

--------+-----------+------------

1 | category | confectionery & snacks

2 | category | lollies

3 | product | cola zombie chews

另一个问题是URL可能有4个类别,例如下面所示

http://www.domain.com/frozen-foods/seasonal/christmas/meat/smoked-salmon-1kg

我需要哪种类型的重写规则,以及我需要哪种类型的代码检查数据库中的url

我曾考虑过要在数据库中为子弹添加另一个列,然后复制名称并删除空格并替换为-

解决方法:

我认为@Vrac的回答很好1 :). @AntoineB也有一点.因此,我想在url创建部分添加一种稍有不同的方法,并进行更详细的介绍.

您想使用搜索引擎友好的URL,那么您需要做两件事:

>用所需的网址替换所有网址的page.php?id = XX.因此,此时单击新URL将返回404.

>所有新的URL应该对您的php有意义-这就是.htaccess php路由器的工作.

对于步骤1,

我想在每个产品页面上您都可以访问哪个产品属于哪个类别.如果数据库模式如您所提供的那样,则架构不足以确定哪个类别.因此,您需要第4列父级,该列将存储每个类别或产品的父级类别的ID.

而且,无论是类别还是对象,它们都具有一个类别作为父类别,或者根类别为nu​​ll.

在页面中为类别或产品生成URL的php中,您需要从数据库中获取与当前项目关联的所有类别,并从最后一个嵌套节点(当前项目)到根爬上树.

因此,您将有一个循环,就像下面的简化代码所示.

小费:

>如果项目较少,则一次从db获取所有内容以保存数据库查询,然后循环搜索结果(在数组中)-情况称为a;

>否则,从仅从其ID查询当前项开始并获取其父项,然后在循环中执行另一个查询以再次获取新的父项-将其称为b;

因此,您将获得父级的父级,依此类推,直到parent为null.

$itemTree = [];

$allDBItems = mysql_query('SELECT * FROM items');

while($parent)

{

// getParent() is a function that loops on $allDBItems - in case a - and break loop on found $currItemInLoop['id'] === $myItem['parent']

// or - in case b - query the db like mysql_query("SELECT * FROM items WHERE id = $myItem[parent]");

$parent = getParent();

if ($parent) $itemTree[] = $parent;

}

$itemUrl = implode('/', array_reverse($itemTree));

是的,您已经生成了网址!

对于步骤2

在.htaccess中,将所有URL都无一例外地重定向到page.php,如下所示(我希望您可以拥有比page.php更好的名称,或者至少有一个root脚本有意义的index.php).

RewriteRule ^(.*)$index.php?path=$1 [NC,L,QSA]

就像@Vrac写道.

然后在index.php中像@Vrac那样写:

$path = $_GET('path');

$patharray = explode('/',$path);

//do processing based on contents of patharray

$category = $patharray[0];

$product = $patharray[1];

//etcetera, etcetera...

//serve up content based on the path that was requested

您已经完成!

标签:mod-rewrite,mysql,php,htaccess

来源: https://codeday.me/bug/20191118/2028357.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值