我想知道您如何处理国际网站上的永久链接。永久链接是指一些独特且人类可读的链接。
例如,对于英语短语,它没有问题,例如/product/some-title/
但是如果产品标题是中文的,你会怎么做?你如何处理这个问题?
我正在实施一个国际站点,其中一项要求是具有人类可读的 URL。感谢您的每一条评论
我想知道您如何处理国际网站上的永久链接。永久链接是指一些独特且人类可读的链接。
例如,对于英语短语,它没有问题,例如/product/some-title/
但是如果产品标题是中文的,你会怎么做?你如何处理这个问题?
我正在实施一个国际站点,其中一项要求是具有人类可读的 URL。感谢您的每一条评论
根据此规范,在 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=cat
lang
en
使用外部翻译 API 将是一个好主意,但要获得一个在您的业务领域中正常工作的可靠 API 会很棘手。谷歌已经开放了翻译 API,但目前只支持有限数量的语言。
- 英语 <=> 阿拉伯语
- 英文<=>中文
- 英语 <=> 俄语
我通常音译非ASCII字符。例如“täst”会变成“taest”。GNU iconv 可以为您做到这一点(我确定还有其他库):
$ echo täst | iconv -t 'ascii//translit'
taest
唉,这些音译取决于语言环境:例如,在德语以外的语言中,“ä”可以简单地音译为“a”。但另一方面,每个(常用)字符集都应该有一个音译为 ASCII。
像 /productid/{product-id-number}/some-title/ 这样的方案怎么样,网站查看 {number} 并完全忽略“some-title”部分。您可以将其放入您喜欢的任何语言或编码中,因为它没有被使用。
如果没记错的话,您只能在 URL 中使用英文字母。有一个讨论要改变它,但我相当肯定它尚未实施。
也就是说,您需要有一个查找表,您可以在其中将产品/标题的翻译分配为其他语言中的任何单词。例如:
foo.com/cat 需要翻译查找“cat”“gato”“neko”等。
然后,将那些人类阅读对象解析为精确 url 的 HTTP 模块将根据翻译知道要提供哪个页面。
为这样的事情创建一个查找对我来说似乎是一种溢出。我无法为所有语言中的所有不同单词创建查找。也许访问翻译 API 是个好主意。
据我所知,由于 URL 的规范不允许,因此无法在永久链接中使用外来字符。
您如何看待对特殊字符进行编码?那么这些 URL 会被 Google 识别吗?