【问题标题】:Dynamic url generator failure动态 url 生成器失败
【发布时间】:2014-10-30 10:37:29
【问题描述】:

我们在 Yii (1.1.13) 上构建站点;这是car pare parts shop & transaction management engine。 当给SEO公司进行SEO检查时,公司得出结论:

  1. 找到 15000 个动态网址('显然不是全部' - 我的评论)
  2. ~8 000 似乎很长,像这样:http://tarex.ru/index.php?r=assortment/index&id=1536&Subsystem=Warehouse+automation&Reference=Assortment&Assortment_page=9&Assortment_sort=title.desc
  3. 目前只有 300 个页面在搜索引擎中注册。
  4. 其中500个是错误的url或没有响应(响应代码500)。 Ulrs是这样的: http://tarex.ru/index.php?r=assortment/index&Assortment[groupCategory]=4&Assortment_page=46&Assortment_sort=agroup.desc('最可能导致分类重新加载/在 db 中更新'-我的评论)。 他们表示这些故障(针对第 4 点)是 动态 url 生成器故障的原因。

数据库中的分类每天动态更新。

公司建议解决动态 url 生成器问题或不使用它来支持用户友好的 URL/SEO 友好的 URL。

如何修复动态 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 参数...

【问题讨论】:

  • 请发布您的 urlManager 配置。
  • @Valentin Rodygin,我已经发布了 ulrManagement 配置
  • 我建议您在配置中添加 'showScriptName' => false,以使 URL 对 SEO 更友好。
  • @Valentin Rodygin,我添加了'showScriptName' =&gt; false,但没有发生任何变化。我应该将它与来自 post 的其他 htaccess 设置一起应用吗?
  • 好吧,我没有在您网站的 URL 中看到 index.php。那挺好的。可能你构建的 URL 不正确(我看到仍然丑陋的 ?r= 参数),你能发布一个 createUrl 调用的例子吗?

标签: php yii seo dynamic-url


【解决方案1】:

最近为一家商店做了这样的事情。

通常你会这样做:

1) 对于每个动态 url 动态地 使其成为干净的 url arternative

2) 从旧网址重定向到干净网址。

3) 利润!

现在详细说一下:

最棘手的部分是了解是否可以形成新的 url,如果可以,则重定向到它。我认为您可以在 customUrlRule(有点脏)或控制器(我更喜欢)中执行此操作。

让我们假设您选择了一个控制器: 在控制器的动作中,判断是否有新的url用户来自。如果有 AND REQUEST URL!==NEW URL,您只是在处理控制器逻辑。如果没有,您将重定向到新的 url。我认为如果

1) 两种 url 类型都由不同的控制器和操作处理,并包含上述逻辑。

2) 您正在使用某种方法来提供新旧类型的 url,将相同的参数传递给它们。例如,您可以使用 Yii::app()->createUrl($params) 来创建新类型的 Url,以及一些自定义方法,即 $myModelInstance->createUrl($params)

3) 正在使用custom URL rule 构建和处理新的网址

4) 在您的网址管理器中,您有新网址的自定义规则和旧网址的普通规则。

总结一下

如果用户从旧的 url 开始,控制器动作就会被执行,并会进行一些额外的检查。我们正在检查是否可以建立一个新的 url,我们还可以检查一些额外的东西,即与一些额外的 seo url 数据库同步,以了解该 url 是否需要重定向。 如果可以构建新的 url - 我们将重定向到它。 浏览器请求一个请求,用你自定义的url规则解析,并执行相应的控制器和动作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-16
    相关资源
    最近更新 更多