【问题标题】:Vanity URLs with Playframework带有 Playframework 的虚 URL
【发布时间】:2011-02-13 14:08:37
【问题描述】:

我想为基于Playframework 构建的Web 应用程序创建Vanity URLs。

我尝试在主页Application 中为index 方法添加一个参数,如果我调用http://localhost:9000/?vanity_url 而不是http://localhost:9000/vanity_url,这将起作用。

我将如何实现这一目标?我希望用户创建自己的 url,因为解决方案必须是动态的,就像 Facebook

【问题讨论】:

    标签: java playframework vanity-url


    【解决方案1】:

    在你要放置的路线中

    GET /{<[a-z]+>fanPage}/? Page.showFanPage

    有了这个你可以获得:

    http://localhost:9000/facebook

    我也推荐使用play框架提供的slugify方法,通常你会检查slug是否存在于数据库中,并查找slug来获取数据(粉丝页面的标题/谁是该页面的所有者粉丝页面/观看次数/等等)

    在表格中:

    名称:粉丝专页

    pageID 整数或 bigint
    标题 varchar
    slug varchar 唯一
    所有者整数
    内容文本

    在代码中:

    public static void showFanPage(String fanPage) {
        // use models to look for the slug
        // grab the data
        // do what you need to do
    }
    

    我将在这里举例说明如何创建网址,因为我不知道您正在构建什么应用程序:
    GET /post/slug/? Page.createPage
    POST /post/slug/? Page.processPage

    public static void createPage() {
             // remember to create the template
             render();
    }
    
    public static void processPage(String slugName) {
            // slugName refers to the input field
            // check if the slug exists and throw error if it does
            // process
    }
    

    (注意这只是一个例子,我不知道你在构建什么样的应用程序) 希望对您有所帮助,如果您是这个意思,请告诉我

    【讨论】:

    • 我希望用户创建自定义网址来指向他们的个人资料,例如http://www.example.com/allenskdallenskd 对每个用户都是唯一的,并用于检索他们的用户配置文件。从文档中,sluggify 不起作用,因为它 purely for SEO 正则表达式解决方案有效,但现在需要检查诸如 /admin/ 之类的控制器 url 之类的 url /跨度>
    • 这是自Play以来框架中的常见问题!将在不考虑其他竞争者的情况下进行即时匹配并加载路线,通常我通过按优先级组织路线(管理路线优先等)来避免这个问题,这是我在使用 Play 时看到的缺点!,我不知道他们是否会永远不要修复它关于路由器如何管理路由的问题,是的,所有清晰的 url(漂亮的 url,无论你如何命名)都是纯粹用于 SEO,如果用户想要获得创意,它就可以工作(但这取决于你的应用程序)
    • routes文件This file defines all application routes (Higher priority routes first)中,将路线放在底部解决了上述评论中的挑战。
    猜你喜欢
    • 1970-01-01
    • 2012-05-31
    • 1970-01-01
    • 1970-01-01
    • 2012-06-01
    • 2018-06-28
    • 1970-01-01
    • 1970-01-01
    • 2014-09-11
    相关资源
    最近更新 更多