2013-07-31 53 views
6

Tôi muốn ánh xạ các tệp tĩnh sitemap.xml và robots.txt nằm trong thư mục web-app của tôi. Các url phải như sau:Url Ánh xạ tới các tệp tĩnh trong Grails

http://www.mydomain.com/sitemap.xml 
http://www.mydomain.com/robots.txt 

Làm cách nào để đặt ánh xạ url để làm cho các tuyến này hoạt động?

Trả lời

7

tôi sử dụng bản đồ này cho robots.txt:

"/robots.txt" (view: "/robots") 

Và sau đó có một grails-app/views/robots.gsp có chứa các nội dung cho robots.txt. Bằng cách này tôi có thể sử dụng <g:if env="..."> để dễ dàng có nội dung khác nhau cho các môi trường khác nhau.

Để tiện ích này hoạt động đối với tiện ích mở rộng ".xml", bạn cần thay đổi cấu hình Content Negotiation.

grails.mime.file.extensions = false // disables the parsing of file extensions from URLs into the request format 
+0

Cảm ơn. Nó hoạt động cho robot, nhưng không phải cho sitemap.xml bạn sẽ làm như thế nào? – confile

+0

Tại sao nó không hoạt động? – doelleri

+0

"/sitemap.xml" (xem: "/ sơ đồ trang web") không hoạt động. – confile

8

Cách đơn giản nhất là nói với grails để bỏ qua chúng trong UrlMappings.groovy:

class UrlMappings { 
    static excludes = ['/robots.txt', '/sitemap.xml'] 

    static mappings = { 
     // normal mappings here ... 
    } 
} 
+0

Câu trả lời này chính xác hơn đại diện cho những gì OP yêu cầu, mặc dù câu trả lời đã chọn cung cấp phương pháp thay thế hoạt động. – mnd

0

Nó cũng có thể hữu ích để thiết lập một nofollow với môi trường Staging của bạn nếu bạn đang sử dụng một. Không chắc chắn nếu theres là một trường hợp sử dụng để có một trang web lập chỉ mục .... vì vậy nếu bạn đồng ý bạn có thể sử dụng các bước sau để giúp chặn đó.

Nếu bạn đang sử dụng Tomcat, thiết lập một biến môi trường như NOFOLLOW = true -> thấy ở đây ví dụ: TOMCAT_OPTS, environment variable and System.getEnv()

Tiếp theo như đã đề cập bởi @doelleri thiết lập urlMappings

UrlMappings

//Robots.txt 
"/robots.txt"(controller: 'robots', action:'robots') 

Sau đó, sử dụng rô-bốt của bạnBộ điều khiển để phát hiện môi trường biến onment bạn đặt trên tomcat dàn dựng của bạn.

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:/
Các vấn đề liên quan