Grails动态网址映射

时间:2015-06-09 04:01:17

标签: grails

我有一个产品列表我试图为其创建SEO友好的URL。

示例

  

domain.com/product/cell-phone-razor

"手机-剃刀"是动态的db

我已使用以下代码成功实现此行为

"/product/$url"(controller: "product", action:"show") 

但是,在尝试映射与页面URL无关的其他操作时会出现问题。示例我有一个Ajax URL domain.com/product/setPrice,它被映射到show动作。

除了上一个映射之外,我还可以通过在urlmapping中添加以下内容来解决这个问题。

"/product/setPrice" {
    controller = "product"
    action = "setPrice"
}

是否有更好的方法来配置我的网址映射,以便我不需要为每个操作映射添加规则?

2 个答案:

答案 0 :(得分:0)

在我们的应用程序中,我们使用以下方法 - 不是说完美的方法。基本上我们将URL片段(被搜索引擎高兴地忽略)附加到URL的SEO部分。

    name product: "/$productName-p$productId" {
        controller = 'product'
        action = 'show'

        constraints {
            productName matches: '.+'
            productId matches: '^[0-9]+$'
        }
    }

在您的情况下,网址应该是domain.com/product/cell-phone-razor-p123455,其中123456是产品ID。

答案 1 :(得分:0)

虽然不像我想的那样动态,但这似乎是最好的解决方案。

"/product/$url"(controller: "product", action:"show") { 
    constraints { 
        url(validator: { 
            return !(it in 
                ['setPriceAction', 'setAnotherAction']
            ) 
        }) 
    }
}