【发布时间】:2010-10-02 17:35:57
【问题描述】:
我重写 URL 以包含用户生成的旅游博客的标题。
我这样做是为了 URL 的可读性和 SEO 目的。
http://www.example.com/gallery/280-Gorges_du_Todra/第一个整数是id,其余的都是给我们人类的(但与请求资源无关)。
现在人们可以编写包含任何 UTF-8 字符的标题,但大多数都不允许在 URL 中。 我的听众一般说英语,但由于他们旅行,他们喜欢包括像
这样的名字 阿伊特·本·哈杜在 linux 上使用 PHP 在 URL 中显示的正确翻译方法是什么。
到目前为止,我已经看到了几种解决方案:
只去掉所有不允许的字符,替换空格 这有奇怪的结果:
'Aït Ben Haddou' → /gallery/280-At_Ben_Haddou/
不是很有帮助。只是去掉所有不允许的字符,替换空格,留下字符代码 (stackoverflow.com) 很可能是因为使用了“正则表达式锤子”
这会产生奇怪的结果:'tést tést' → /questions/0000/t233st-t233st翻译成“最接近的等价物”
'Aït Ben Haddou' → /gallery/280-Ait_Ben_Haddou/
但这对德语来说是错误的。例如'ü'应该音译'ue'。
对我来说,作为一个荷兰人,第三个结果“看起来”最好。
但是我很确定(1)很多人会有不同的意见,(2)在德国的例子中这是完全错误的。
第 3 个选项的另一个问题是:如何找到所有可以转换为 7 位等效字符的可能字符?
所以问题是:
在您看来,最理想的结果是什么。 (在技术范围内)
如何从技术上解决它。 (达到预期的结果)用 PHP。
【问题讨论】:
-
“ü”实际上会写成“ue”。 “oe”是“ö”。 :)
-
我知道国际化域名,但它们并没有解决该资源路径的问题,它们的可读性也不是很好
标签: php url-rewriting diacritics