已解决:请参阅我的评论
我已将我的 id 和 slug 放在同一个 url 参数(文件夹)中以缩短我的 url。
示例:www.domain/gsm/1_samsung-galaxy-s-iii-16-gb 其中“1”是 id,“samsung-galaxy-s-iii-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-iii-16-gb_samsung-galaxy-s-iii-16-gb_samsung-galaxy-s-iii-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);
}
}
提前致谢!