我们在Yii上建立网站(1.1.13);它是car pare parts shop & transaction management engine。 当它给SEO公司进行搜索引擎优化检查时,该公司得出结论:
数据库中的分类每天都会动态更新。
该公司建议解决动态网址生成器问题或不使用它有利于用户友好的URL / SEO友好的URL。
如何修复动态网址生成器失败以及是否可以使用smth。还是按照建议吗?
到目前为止,网址管理配置已关闭:
// uncomment the following to enable URLs in path-format
/*
'urlManager'=>array(
'urlFormat'=>'path',
'rules'=>array(
'<controller:\w+>/<id:\d+>'=>'<controller>/view',
'<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',
'<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
),
),
*/
当我取消注释它时,该网站运行良好但是一些子系统菜单不起作用的原因是绑定到一些GET参数......
答案 0 :(得分:0)
最近为一家商店做了类似的事。
通常你会这样做:
1)对于每个动态网址动态使其成为干净的网址
2)从旧网址重定向到干净网址。
3)利润!
现在详情如下:
最棘手的部分是了解是否可以形成新网址,如果是,则重定向到它。我想你可以在customUrlRule(有点脏)或控制器(我更喜欢)中这样做。
让我们假设你选择了一个控制器: 在控制器的操作中,确定是否有来自的新网址用户。如果有AND REQUEST URL!== NEW URL,您只是继续使用控制器逻辑。如果没有,您将重定向到新网址。如果
,我觉得它应该很舒服1)两个url类型都使用或不同的控制器和操作进行处理,并包含上述逻辑。
2)您正在使用某种方法来提供新旧类型的URL,并将相同的参数传递给它们。例如,您可以将Yii :: app() - &gt; createUrl($ params)用于新类型的Url,以及一些自定义方法,即$ myModelInstance-&gt; createUrl($ params)
3)正在使用custom URL rule
构建和处理新网址4)在您的网址管理器中,您拥有新网址的自定义规则以及此优先级中旧网址的普通规则。
总结:
如果用户来自旧URL,则执行控制器操作,进行一些额外的检查。我们正在检查是否可以构建新的URL,我们还可以检查一些其他的东西,即与一些额外的seo url数据库同步,以了解是否需要重定向此URL。 如果可以构建新的URL - 我们将重定向到它。 浏览器请求一个请求,该请求使用您的自定义URL规则进行解析,并执行相应的控制器和操作。