首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >UrlMapping到Grails中的静态文件

UrlMapping到Grails中的静态文件
EN

Stack Overflow用户
提问于 2013-07-31 14:37:08
回答 3查看 4.1K关注 0票数 6

我想映射静态文件sitemap.xml和robots.txt,它们位于我的web应用程序目录中。网址应如下:

代码语言:javascript
复制
http://www.mydomain.com/sitemap.xml 
http://www.mydomain.com/robots.txt

如何设置url映射才能使这些路由正常工作?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-07-31 14:47:18

我将此映射用于robots.txt

代码语言:javascript
复制
"/robots.txt" (view: "/robots")

然后有一个grails-app/views/robots.gsp,其中包含robots.txt的内容。通过这种方式,我可以使用<g:if env="...">轻松地为不同的环境提供不同的内容。

为了使它对".xml“扩展有效,您需要更改Content Negotiation配置。

代码语言:javascript
复制
grails.mime.file.extensions = false // disables the parsing of file extensions from URLs into the request format
票数 8
EN

Stack Overflow用户

发布于 2013-07-31 21:49:38

最简单的方法是在UrlMappings.groovy中告诉grails忽略它们

代码语言:javascript
复制
class UrlMappings {
    static excludes = ['/robots.txt', '/sitemap.xml']

    static mappings = {
        // normal mappings here ...
    }
}
票数 11
EN

Stack Overflow用户

发布于 2015-12-07 19:17:51

如果您正在使用暂存环境,则对暂存环境设置nofollow也可能会有所帮助。不确定是否有一个用例有一个中转站点索引.因此,如果您同意,您可能能够使用这些步骤来帮助阻止这一点。

如果您正在使用Tomcat,请设置一个环境变量,例如NOFOLLOW=true ->参见这里的示例:OPTS, environment variable and System.getEnv()

接下来,正如@doelleri所提到的,设置urlMappings

UrlMappings

代码语言:javascript
复制
//Robots.txt
"/robots.txt"(controller: 'robots', action:'robots')

然后使用您的robotsController来检测您在暂存tomcat上设置的环境变量。

RobotsController

代码语言:javascript
复制
def robots() {
    if (System.getenv('NOFOLLOW') == 'true') {
        def text = "User-agent: *\n" +
            "Disallow: /cgi-bin/ \n" +
            "Disallow: /tmp/ \n" +
            "Disallow: /junk/ \n" +
            "Disallow: /admin/ \n" +
            "Crawl-delay: 5 \n" +
            "Sitemap: https://www.example.com/sitemap.xml"

        render(text: text, contentType: "text/plain", encoding: "UTF-8")
    } else {
        render(status: 404, text: 'Failed to load robots.txt')
    }
}

robots.gsp

代码语言:javascript
复制
<%-- Content rendered from controller -> so leave blank :) --%> 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17973383

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档