url - Play 中 SEO 友好的路由

标签 url seo playframework directory

简短版本:是否有一种有吸引力的、简单的方法来实现特定于语言的 url 结构,ala. Play 1.2.5 中的 host.com/en/或 host.com/pt/?

我正在寻找一种不需要更改所有 Controller 的解决方案,并且最好只更改路由文件,因为我不想要两组冗余 View - 每种语言一组。

我已经有了 message.pt 和 message.en,并且我有一种在两者之间切换的方法,但在路由方面我是一个新手。

我意识到路由文件可以包含类似以下的路由:“/(en|pt)/”,但我有点卡在这里。

如果问题有点模糊,我深表歉意。 如果有需要,我很乐意进行澄清。

最佳答案

我认为没有办法解决这个问题,你必须对你的 Controller 做一些事情。

我还没有测试过这个,但类似的东西应该可以工作:

public static class LanguageParams extends Controller
{
    @Before
    static void addLanguageParam(String language)
    {
         renderArgs.put("lang", language);
    }
}

您需要将 @With 添加到每个 Controller ,如下所示:

@With(LanguageParams.class)
public class Foo extends Controller
{
....
}

...在你的 route 你会看到这样的东西:

GET  foo/{<en|pt>language>}/whatever       Foo.index()

在写这篇文章时,我想到你也许可以使用插件来做到这一点,请参阅:http://www.playframework.org/documentation/api/1.2/play/PlayPlugin.html#beforeActionInvocation(java.lang.reflect.Method )

关于url - Play 中 SEO 友好的路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10078940/

相关文章:

postgresql - 如何使用 Postgresql 设置 Play Slick

c# - 如何从 Chrome 和 Firefox 获取打开页面的 URL?

javascript - 使用 jquery 动态生成的 URL 部分重复

Grails 生成 seo 友好的 URLS

java - 我们可以完全避免使用 Scala 并简单地使用 Play!框架

scala - 丢弃已在 Play Framework 2.x 上设置的 header

swift - 将 Internet url 加载到 Webview

javascript - 如果语言后缀不存在,则将其添加到 url (javascript)

.htaccess RewriteCond REQUEST_URI 动态 SEO 生成的 URI

css - 出于 SEO 目的,是否真的有必要拥有经过完全验证的标记和 CSS