ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

CakePHP友好的seo网址

2019-05-29 03:18:19  阅读:237  来源: 互联网

标签:php url-routing cakephp friendly-url


我想让我的网址友好. www.example.com/posts/view/1更改为www.example.pl/:slug-:id.一切正常,但可能我在路由方面做错了,因为在点击paginator中的url后,url是正确的,它看起来像www.example.pl/:slug-:id,但是它出现了错误

“在此服务器上找不到请求的地址’www.example.pl/:slug-:id’.”

我不知道出了什么问题.这是我的代码:

Router::connect(
    '/:slug-:id',
    array(
        'controller' => 'posts', 
        'action' => 'view'
    ),
    array(
        'pass' => array('slug' , 'id'),
        'id' => '[0-9]+'
    )
);

在paginator视图中:

echo $this->Html->link($ad['Post']['title'], array(
    'controller' => 'posts',
    'action' => 'view',
    'slug' => Inflector::slug($post['Post']['title'],'-'),
    'id'=>$post['Post']['id'])
);

我解决了这个问题.

解决方法:

它太简单了我会给你一个我项目的例子..
在您的routes.php中

Router::connect(
    '/:slug-:id',
    array('controller'=>'posts','action'=>'view'),
    array('pass'=>array('slug','id'),'slug'=>'[a-zA-Z0-9 -]+','id'=>'[0-9]+')
);

您在视图中的链接应该是这样的.

$this->Html->link(__('link desu'),array('controller'=>'posts','action'=>'view','id'=>$post['Post']['id'],'slug'=>$post['Post']['slug']));

和你的PostsController.php

public function view($slug,$id){
    $this->Post->id = $id;
    // ....
}

快速提示:尝试在PostModel中创建一个数组,以避免每次在视图中创建它.
例如:

post.php中

class Post extends AppModel{
    // ....
        public function afterFind($results,$primary = false){
        foreach ($results as $key => $value) {
            if(isset($value[$this->alias]['id'])){
                $results[$key][$this->alias]['url'] = array(
                                 'controller'=>'posts',
                                 'action'=>'view',
                                 'id'=>$results[$key][$this->alias]['id'],
                                 'slug'=>$results[$key][$this->alias]['slug']
                            );  
            }
            // ....
        }
        return $results;
    }
}

}

所以你可以像你那样在你的视图中调用它

$this->Html->link(__('link desu'),$post['Post']['url']);

标签:php,url-routing,cakephp,friendly-url
来源: https://codeday.me/bug/20190529/1175571.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有