2

我认为标题说明了一切。问题是我的应用程序是基于 Zend 框架的,并且包含许多控制器。主要控制器有:

Companies/
People/
Countries/

最初,可以通过以下网址访问国家资料网址:

example.com/countries/view/id/Korea

我通过添加路由器来缩短它

example.com/countries/Korea

但是,客户需要进一步缩短为:

example.com/Korea

将国家/地区的名称(在这种情况下为 url 参数)带入控制器的位置。另外,客户要求所有网址都以类似的方式缩短,所以一个公司的网址曾经读过类似的内容:

example.com/companies/acme-corporation-1234

其中 1234 是公司的 ID,用于读取以下内容:

example.com/acme-corporation-company

我可以理解国家名称的独特性,因为没有任何两个国家名称相似,但是我怀疑我可以为公司完成相同的事情,因为您可以拥有许多名称相似的公司。我查看了 Gogobot.com 并注意到该网站上的所有网址都非常易于阅读,甚至在任何地方都没有包含单个 ID 号。

有没有关于如何做到这一点的任何想法,即进一步缩短 - 所以 example.com/korea 并不意味着韩国作为控制器,而是作为 example.com/countries/korea 的链接,同样是 url example.com/countries仍应被解释为对国家控制器的呼叫。

4

2 回答 2

1

请看一下海报中的类似问题之一。您可以使用 ApacheRewriteMap将 URL 映射到外部脚本并根据代码处理请求。

这样,您不必担心每个国家/地区都有一个控制器,而是将其传递给脚本以查找 ID 或您希望他们处理的任何内容。

Mod_ReWrite / ReWriteMap 使用数据库查找脚本的 URL

于 2011-06-27T04:11:26.970 回答
0

如果您对 ZF 相当满意,您可以为此使用自定义路由类,请参阅以下说明:http ://tfountain.co.uk/blog/2010/9/9/vanity-urls-zend-framework (略有不同那里的问题,但解决方案是相同的)。对于您的情况,您需要一个用于公司,一个用于国家/地区。

于 2011-06-27T08:20:29.590 回答