2

使用英语时,应适用以下 URL:

http://example.org/services/myservice/

使用其他语言时,应使用以下 URL:

http://example.org/sirvici/misirvice/

我们应该用 Yii 处理这个问题的任何简单/标准的方法吗?

4

1 回答 1

1

是的,你可以在 Yii 中做到这一点,但你会牺牲:

  • 自动控制器/动作映射(取决于它是如何工作的)
  • 由于每个请求的额外工作量,速度有点慢。

如果您仍然可以,那么您可以继续进行。您需要创建一个自定义 URL 规则并让它处理每个 URL,这是有据可查的。然后,您需要手动将 URL 分离(通过也有据可查的方法)并从用户当前选择的语言翻译每个部分(除非您想经历地狱般的尝试猜测语言 Oo ,否则您将需要知道这一点)。您现在拥有 URL 各部分的翻译。恭喜。

这是可能工作或可能不工作的部分
您可以通过 Yii URL 解析器将其传递回,以通过控制器、动作和参数的自动映射。这意味着您只需对 URL 进行预解析,Yii 从那里继续。

如果这行不通,您将不得不构建自己的(使用 CUrlRule 等从 Yii 背负一点)并执行映射逻辑。

我的两种感觉
对于大多数 Web 应用程序,我不建议这样做。这意味着您可以通过多种方式从非常不同的 URL 访问相同的内容。这在 SEO 方面和可用性方面都是坏事。它也没有为您提供一种特别容易将它们相互映射的方法,让谷歌知道不要再次索引您的内容。另外,我看不出它会给你带来很多好处。大多数傻瓜用户不会关注 URL 栏,即使它是他们的母语,大多数人也不会从 URL 的措辞中推断出页面及其内容。

如果你继续这样做,请告诉我,我想知道它是如何进行的。

于 2012-07-03T09:37:08.213 回答