English 中文(简体)
有可能创建国际永久链接吗?
原标题:
  • 时间:2008-09-24 13:33:19
  •  标签:

我想知道你是如何处理国际网站上的永久链接的。我所说的永久链接是指一些独特的、人类可读的链接。

例如,对于英语短语来说,这是没有问题的,例如/product/some-title/

but what do you do if the product title is in e.g chinese language?? how do you deal with this problem?

i am implementing an international site and one requirement is to have human readable URLs. Thanks for every comment

最佳回答

How about some scheme like /productid/{product-id-number}/some-title/ where the site looks at the {number} and ignores the some-title part entirely. You can put that into whatever language or encoding you like, because it s not being used.

问题回答

根据这个规范,所以中文字符串会立即被删除。

在产品名称可以本地化的地方,您可以使用类似<;域>/&书信电报;语言>/DIR/<;产品_运输>,例如:

http://www.example.com/en/products/cat/
http://www.example.com/fr/products/chat/

并附有mod_rewrite规则,其效果为:

RewriteRule ^([a-z]+)/product/([a-z]+)? product_lookup.php?lang=$1&product=$2

对于上面的第一个例子,这个规则将调用<code>product_lookup.php?lang=en&;product=cat。在这个脚本中,您可以访问内部翻译引擎(在这种情况下,从lang参数,en),以进行与面向用户的翻译相同的翻译,例如,法语页面上的“Chat”,英语页面的“Cat”等。

使用外部翻译API是一个好主意,但要获得一个在您的业务领域正确工作的可靠API很难。谷歌已经打开了一个翻译API,但它目前只支持有限数量的语言。

  • English <=> Arabic
  • English <=> Chinese
  • English <=> Russian

Take a look at Wikipedia. They use national characters in URLs.

For example, Russian home page URL is: http://ru.wikipedia.org/wiki/Заглавная_страница. The browser transparently encodes all non-ASCII characters and replaces them by their codes when sending URL to the server. But on the web page all URLs are human-readable.

So you don t need to do anything special -- just put your product names into URLs as is. The webserver should be able to decode them for your application automatically.

我通常音译非ascii字符。例如,“täst”将变成“taest”。GNU iconv可以为您做到这一点(我相信还有其他库):

$ echo täst | iconv -t  ascii//translit 
taest

遗憾的是,这些音译依赖于语言环境:例如,在德语以外的语言中,ä可以被翻译为简单的a。但另一方面,每个(常用的)字符集都应该有一个ASCII的音译。

如果有记忆的话,你只能在URL中使用英文字母。有人讨论过要改变这一点,但我相当肯定的是,它还没有实施。

也就是说,你需要有一个查找表,在那里你可以将产品/标题的翻译成其他语言的任何单词。例如:

foo.com/cat将需要查找“cat”、“gato”、“neko”等的翻译。

然后,您的HTTP模块将这些人工阅读对象解析为一个精确的url,它将根据翻译知道要服务于哪个页面。

为这样的东西创建一个查找对我来说似乎是一种溢出。我无法为所有语言中的所有不同单词创建一个查询。也许访问翻译API是个好主意。

据我所知,在永久链接中使用外来字符是不可能的,因为URL的sepecs不允许这样做。

你觉得对特殊字符进行编码怎么样?那么这些网址被谷歌识别了吗?





相关问题
热门标签