我想映射位於我的web-app目錄中的靜態文件sitemap.xml和robots.txt。網址應該如下:UrlMapping到Grails中的靜態文件
http://www.mydomain.com/sitemap.xml
http://www.mydomain.com/robots.txt
我該如何設置url映射使這些路由起作用?
我想映射位於我的web-app目錄中的靜態文件sitemap.xml和robots.txt。網址應該如下:UrlMapping到Grails中的靜態文件
http://www.mydomain.com/sitemap.xml
http://www.mydomain.com/robots.txt
我該如何設置url映射使這些路由起作用?
我用這個映射robots.txt
:
"/robots.txt" (view: "/robots")
,然後有一個grails-app/views/robots.gsp
,其中包含robots.txt
內容。這樣我可以使用<g:if env="...">
輕鬆地爲不同的環境提供不同的內容。
爲了使其適用於「.xml」擴展名,您需要更改Content Negotiation配置。
grails.mime.file.extensions = false // disables the parsing of file extensions from URLs into the request format
最簡單的方法就是告訴Grails的忽略它們在UrlMappings.groovy
:
class UrlMappings {
static excludes = ['/robots.txt', '/sitemap.xml']
static mappings = {
// normal mappings here ...
}
}
該答案更準確地表示OP請求的內容,雖然所選答案提供了一種工作替代方法。 – mnd
它也可能會有所幫助的nofollow的設置爲你的暫存環境,如果您正在使用一個。不知道這些是否是一個使用登錄站點索引的用例....所以如果您同意,您可以使用這些步驟來幫助阻止該問題。
如果正在使用Tomcat,設置一個環境變量如NOFOLLOW =真 - >在這裏看到例如:TOMCAT_OPTS, environment variable and System.getEnv()
接着通過@doelleri提到設置的urlMappings
UrlMappings
//Robots.txt
"/robots.txt"(controller: 'robots', action:'robots')
然後使用你的robotsController來檢測envir在您的暫存tomcat上設置的啓動變量。
RobotsController
def robots() {
if (System.getenv('NOFOLLOW') == 'true') {
render(view: 'robots')
} else {
render(status: 404, text: 'Failed to load robots.txt')
}
}
robots.gsp
<%@ page contentType="text/plain;charset=UTF-8" %>User-agent: *
Disallow:/
感謝。它適用於機器人,但不適用於sitemap.xml,你會怎麼做? – confile
它爲什麼不起作用? – doelleri
「/sitemap.xml」(view:「/ sitemap」)不起作用。 – confile