0

已解决:请参阅我的评论

我已将我的 id 和 slug 放在同一个 url 参数(文件夹)中以缩短我的 url。

示例:www.domain/gsm/1_samsung-galaxy-s-ii​​i-16-gb 其中“1”是 id,“samsung-galaxy-s-ii​​i-16-gb”是 slug。

这很好用,但是现在我正在尝试构建一个 301 重定向脚本,该脚本将 url 中的 slug 检查到 db 中的 slug,如果它们不匹配,则用户将 301 重定向到正确的 url。

但是由于某种原因,我最终进入了重定向循环,因为脚本不会刷新整个 url,而只是在错误的 slug 之后添加正确的 slug,当然会一直这样做,直到浏览器持有..

所以 www.domain/gsm/1_bladiebla 重定向到 www.domain/gsm/1_bladiebla_samsung-galaxy-s-ii​​i-16-gb_samsung-galaxy-s-ii​​i-16-gb_samsung-galaxy-s-ii​​i-16-gb_samsung-galaxy- s-iii-16-gb.......

这是控制器的视图功能:

public function view($id = null) {
    $this->Smartphone->id = $id;
    if (!$this->Smartphone->exists()) {
        throw new NotFoundException(__('Invalid smartphone'));
    }
    $this->set('smartphone', $this->Smartphone->read(null, $id));

    $pieces = explode('_', $this->params['pass'][0]);

    if ($pieces[1] != $this->Smartphone->field('slug')) {
        $this->redirect(array('action' => 'view', $id.'_'.$this->Smartphone->field('slug')), 301);
    }
}

提前致谢!

4

0 回答 0