cakephp将url更改为新url

时间:2015-05-22 03:11:55

标签: php cakephp cakephp-2.1

我已经运行了CakePHP程序(版本2.1.3)(在Centos 6.x和Apache上)。

现在我要更改来自:http://domain.com/frontend/login

的网址

到新的网址: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'))); 
?>

成功,现在我可以使用新网址访问:http://domain.com/user-login.html

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

我只想访问新网址,并删除旧网址。

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

感谢。

2 个答案:

答案 0 :(得分:2)

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

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

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

只要你这样做,离开路线就不会有问题: -

  • 始终使用Cake的Router / HtmlHelper生成链接,以便使用正确的别名
  • 在页面上加canonical url,以便搜索引擎使用正确的网址

这样应用就不应该引用/frontend/login

答案 1 :(得分:1)

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行,您就应该全部设置