ECshop目录型url需要解决的问题(通用解决方法)

2016-07-07 14:55 来源:www.chinab4c.com 作者:ecshop专家



论坛里有兄弟说搞过目录型url,刚好,我昨天也开始在帮一哥们搞目录型url,为备忘,现在我把ecshop目录型url的实现方法和必须要解决的地方记录下来,和大家一起来分享交流下。

此目录型url需要实现:

产品分类:域名/产品分类名 或 域名/产品分类名/
产品:域名/产品分类名/产品名.html
文章分类:域名/文章分类名 或 域名/文章分类名/
文章:域名/文章分类名/文章名.html

其他页面和有参数的产品分类页面保留原来ecshop的伪静态方式。

经过分析,本问题需要解决以下几个方面的问题:
1,页面里的所有图片、链接、js、css的相对地址全部需要改为绝对地址,例如:
<a href="index.php"><img src="themes/default/logo.jpg"></a>需要改为<a href="http://xxx.xx.com/index.php"><img
src="http://xxx.xx.com/themes/default/logo.jpg"></a>
<link href="themes/default/style.css" rel="stylesheet" type="text/css" />需要改为<link href="http://xxx.xx.com/themes/default/style.css" rel="stylesheet"
type="text/css" />
<script type="text/javascript" src="js/common.js"></script>需要改为<script type="text/javascript" src="http://xxx.xx.com/js/common.js"></script>

2,解决了图片、链接、js、css的相对地址转换为绝对地址之后,还需要解决ajax调用地址的问题,例如 域名/产品分类名/产品名.html这个页面,如果不调整ajax调用地址,那么必然会有找不到地址的错误

3,js里的所有类似location.href=url跳转的,所有相对地址也都要调整为绝对地址

4,‘域名/产品分类名’ 向 产品分类ID映射的问题

5,由于“域名/产品分类名”和“域名/文章分类名”以及“域名/产品分类名/产品名.html”和“域名/文章分类名/文章名.html”url规则的一致性,采用apache的重写规则来实现伪静态是不可能的,因此采用从$_SERVER['PATH_INFO']着手实现伪静态,即:把所有找不到的地址都重定向到一个“调度器”dispatcher,在调度器里分析$_SERVER['PATH_INFO'],从而加载不同的页面。这个类似于MVC模式里面的“单一入口”文件。

5,build_uri函数的修改

以上列的几点,是实现ecshop目录型url必须要解决的问题,和具体的url规则、目录级数无关,只要解决了这几点问题,那么什么样的目录型url都可以轻松搞定。

回答:
不需要那么复杂。只要写好了规则.直接 /themes/default/logo.jpg 引用就客气.使用绝对地址。移植性太差.特别是生成真静态

不需要那么复杂。只要写好了规则.直接 /themes/default/logo.jpg 引用就客气.使用绝对地址。移植性太差.特别 ...
netaxcess 发表于 2011-4-11 09:17


图片、css、js的地址是可以通过重写规则来实现的,不过js程序里的ajax动态地址和js跳转地址通过重写规则就实现不了了。
我的方法是个通用方法,不会影响移植性。等搞完了我会分享下我的实现方法。

这样会有很多好处?

目录型多seo比较友好,同意3楼,如果换个域名路径都要换N多

个人觉得过于复杂的url 会加重服务器负担!
而且作为中文站 完全没有必要过分强调URL 特别是针对百度

当然外贸站应该考虑!

有没有必要就没有考虑太多了,这个是用户的需求,照着需求来做就行了。如果是英文站目录型的url还是比较优雅的,中文的感觉就多余了。

目录型URL演示地址:
http://app.megiga.com/nature/index.php

的确不错,好东西 等待分享 呵呵



目录型URL的绝佳的演示地址>>>>http://ecshop.topit.cn,可以自定义分类目录,可以自定义商品url,拼音或英语拼写都可以,其实想实现这个,很简单,后台分类管理那,可加几个设置:
一,分类处加下一个分类路径的设置:



二、分类处还可以加一个分类模板的设置可以实现不同的分类不同的模板





三、商品管理处,增加一个ajax自定义商品url的东西:





四、最后增加前台的路径前加加上$url前缀,$url=$ecs->url();


ecshop的强大就在这里,灵活多变,就OK了

目录型多seo比较友好,同意3楼,如果换个域名路径都要换N多
elei101 发表于 2011-4-12 16:25


我这个绝对路径是自动生成的,只需要在config.php里面定义域名就行了。

支持一个