cakephp 将 url 更改为新的 url

cakephp change url to new url

我有 CakePHP 程序(版本 2.1.3)什么是 运行(在 Centos 6.x 和 Apache 上)。

现在我想将 url 更改为:http://domain.com/frontend/login

新 url 喜欢:http://domain.com/user-login.html

我改变了 routes.php 如下:

Router::connect(
    '/:slug.html', 
    array('controller' => 'frontend', 'action' => 'login'),
    array(
        'pass' => array('slug')
    )
); 

并在我的 login.ctp 中添加了以下代码:

<?php 
 echo $html->link('user login', 
        array(  
            'controller' => 'frontend',    
            'action' => 'login',    
            'slug' => Inflector::slug('user login'))); 
?>

它成功了,现在我可以使用新的 URL 访问:http://domain.com/user-login.html

但我仍然可以使用旧 url 访问:http://domain.com/frontend/login

我只想访问新的 URL,并删除旧的 URL。

我该怎么办?请指导我详细信息。

谢谢。

在您的 routes.php 文件的底部有这样的声明: /** * Load the CakePHP default routes. Remove this if you do not want to use * the built-in default routes. */ require CAKE . 'Config' . DS . 'routes.php';

只需注释掉 require 行,您就应该准备就绪了

ptica 的回答很好,但是如果您想要的东西不会禁用 CakePHP 的所有默认路由,那么我会在 .htaccess 文件中添加重定向规则:-

Redirect 301 /frontend/login /user-login.html

.htaccess 是一个比在路由文件中放置重定向更好的地方,因为它会更有效率。不过,在路由文件中对此进行评论以供将来参考可能是个好主意;否则你或其他人有一天会看到这个项目并对重定向的内容感到困惑!

只要您:-

,按原样离开路线应该没有问题
  • 始终使用 Cake 的 Router/HtmlHelper 生成链接,以便使用正确的别名
  • 在页面上包含 canonical url 以便搜索引擎使用正确的 url

这样应用就永远不会引用 /frontend/login