【发布时间】:2014-07-22 17:48:25
【问题描述】:
我在我的 CakePHP 网站上设置了以下路由
Router::connect('/:language/blog', array('controller' => 'posts', 'action' => 'index'), array('language' => 'en', 'persist'=>array('language')));
Router::connect('/:language/blogue', array('controller' => 'posts', 'action' => 'index'), array('language' => 'fr', 'persist'=>array('language')));
Router::connect('/:language/blog/:post_id', array('controller' => 'posts', 'action' => 'view'), array('language' => 'en', 'persist'=>array('language', 'post_id')));
Router::connect('/:language/blog/:post_id/:slug', array('controller' => 'posts', 'action' => 'view'), array('language' => 'en', 'persist'=>array('language', 'post_id', 'slug')));
Router::connect('/:language/blogue/:post_id', array('controller' => 'posts', 'action' => 'view'), array('language' => 'fr', 'persist'=>array('language', 'post_id')));
Router::connect('/:language/blogue/:post_id/:slug', array('controller' => 'posts', 'action' => 'view'), array('language' => 'fr', 'persist'=>array('language', 'post_id', 'slug')));
这给了我像 /en/blog 或 /fr/blogue 这样的 URL 有没有办法从 URL 中删除语言并让它只显示 /blog 或 /blogue(但仍然保留语言参数)?
如果这不可能,我可能会接受将语言保留在 url 中,但是下一点非常重要。我的<head> 中有这样的东西
echo '<link rel="canonical" href="'. Router::url($this->request->here true) .'">';
我想在其中包含 SEO 的规范 URL。我希望规范 URL 只是 /blog/123 但它始终显示为当前 url 是什么。 /en/blog/123/article-slug 或 /fr/blogue/123/article-slug。有谁知道我怎样才能得到想要的行为? (附带问题:从规范 url 中删除 slug 部分是否会破坏使用友好 URL 进行 SEO 的目的?)
【问题讨论】:
标签: php cakephp routes seo canonical-link