首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Zend routes & SEO

Zend routes & SEO
EN

Stack Overflow用户
提问于 2012-04-30 00:24:32
回答 1查看 257关注 0票数 1

我想知道如何使用zend框架来实现我的站点的URL,比如http://mysite.com/ArticleTitleHere

在我看来,它是实现一个正则表达式路由,但是这样zf将无法区分文章URL和常规的module/controller/actioncontroller/action路由。我该如何去实现这样的东西呢?

谢谢

EN

回答 1

Stack Overflow用户

发布于 2012-04-30 00:48:30

您可以在路由中使用占位符:

代码语言:javascript
复制
routes.test.route = "/:article"
routes.test.defaults.module = default
routes.test.defaults.controller = test
routes.test.defaults.action = test
routes.test.defaults.article = ""

您可以使用$this->_getParam("article")检索控制器中的article参数。其余部分(通过文章的名称匹配数据库条目)是您的部分。

但是你应该添加像url前缀和/或文章id这样的东西,否则可能找不到其他路由。所以使用这样的东西要好得多:

代码语言:javascript
复制
routes.test.route = "/article/:id/:title"

routes.test.defaults.module = default
routes.test.defaults.controller = test
routes.test.defaults.action = test
routes.test.defaults.article = ""
routes.test.defaults.id = ""

你可以这样使用url-Viewhelper来创建一个链接:

代码语言:javascript
复制
<a href="<?php echo $this->url(array("id" => $article->id, "title" => $article->title), "test"); ?>"><?php echo $this->escape($article->title); ?></a>

并在您的控制器中执行重定向:

代码语言:javascript
复制
$this->_helper->redirector->gotoRoute(array("id" => $article->id, "title" => $article->title), "test");

请记住,转义或过滤$article->title中的无效字符(或非ascii字符)。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10373762

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档