3

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

例如,对于英语短语,它没有问题,例如/product/some-title/

但是如果产品标题是中文的,你会怎么做?你如何处理这个问题?

我正在实施一个国际站点,其中一项要求是具有人类可读的 URL。感谢您的每一条评论

4

6 回答 6

2

根据此规范,在 URL 中不允许使用 ISO Latin-1 集之外的字符,因此中文字符串将立即被淘汰。

在产品名称可以本地化的地方,您可以使用 url <DOMAIN>/<LANGUAGE>/DIR/<PRODUCT_TRANSLATED>,例如:

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

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

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

  • 英语 <=> 阿拉伯语
  • 英文<=>中文
  • 英语 <=> 俄语
于 2008-09-24T13:57:26.313 回答
2

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

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

唉,这些音译取决于语言环境:例如,在德语以外的语言中,“ä”可以简单地音译为“a”。但另一方面,每个(常用)字符集都应该有一个音译为 ASCII。

于 2008-09-24T16:01:04.753 回答
2

看看维基百科。他们在 URL 中使用国家字符。

例如,俄语主页 URL 是:http ://ru.wikipedia.org/wiki/Заглавная_страница 。浏览器对所有非 ASCII 字符进行透明编码,并在向服务器发送 URL 时将其替换为它们的代码。但在网页上,所有 URL 都是人类可读的。

所以你不需要做任何特别的事情——只需将你的产品名称原样放入 URL 中。网络服务器应该能够为您的应用程序自动解码它们。

于 2008-09-24T18:54:49.233 回答
1

像 /productid/{product-id-number}/some-title/ 这样的方案怎么样,网站查看 {number} 并完全忽略“some-title”部分。您可以将其放入您喜欢的任何语言或编码中,因为它没有被使用。

于 2008-09-24T13:58:47.557 回答
0

如果没记错的话,您只能在 URL 中使用英文字母。有一个讨论要改变它,但我相当肯定它尚未实施。

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

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

然后,将那些人类阅读对象解析为精确 url 的 HTTP 模块将根据翻译知道要提供哪个页面。

于 2008-09-24T13:38:57.463 回答
0

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

据我所知,由于 URL 的规范不允许,因此无法在永久链接中使用外来字符。

您如何看待对特殊字符进行编码?那么这些 URL 会被 Google 识别吗?

于 2008-09-24T13:48:30.407 回答