想将example.com/country/name/Korea转到example.com/korea

时间:2011-06-26 08:10:26

标签: zend-framework .htaccess url-routing zend-route

我认为标题解释了这一切。问题是我的应用程序是基于Zend Framework并包含许多控制器。主要控制器是:

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示例。 com / countries仍应被解释为对国家控制者的呼吁。

2 个答案:

答案 0 :(得分:2)

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

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

Mod_ReWrite / ReWriteMap a URL using a database lookup script

答案 1 :(得分:0)

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