2013-06-18 36 views
7

Tôi có tệp robots.txt không tĩnh nhưng được tạo động. Vấn đề của tôi là tạo một tuyến từ root/robots.txt đến hành động điều khiển của tôi.Cách thêm tuyến đường vào robots.txt động trong ASP.NET MVC?

này làm việc:

routes.MapRoute(
name: "Robots", 
url: "robots", 
defaults: new { controller = "Home", action = "Robots" }); 

này không hoạt động:

routes.MapRoute(
name: "Robots", 
url: "robots.txt", /* this is the only thing I've changed */ 
defaults: new { controller = "Home", action = "Robots" }); 

Các ".txt" gây ASP để barf rõ ràng

Trả lời

6

trả lời ở đây: url with extension not getting handled by routing. Về cơ bản, khi asp thấy "." nó gọi trình xử lý tệp tĩnh, do đó, tuyến động không bao giờ được sử dụng. Các tệp web.config cần được sửa đổi để /robots.txt sẽ không bị chặn bởi trình xử lý tệp tĩnh.

7

Bạn cần thêm thông tin sau vào tệp web.config để cho phép tuyến đường có phần mở rộng tệp thực thi.

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <!-- ...Omitted --> 
    <system.webServer> 
    <!-- ...Omitted --> 
    <handlers> 
     <!-- ...Omitted --> 
     <add name="RobotsText" 
      path="robots.txt" 
      verb="GET" 
      type="System.Web.Handlers.TransferRequestHandler" 
      preCondition="integratedMode,runtimeVersionv4.0" /> 
    </handlers> 
    </system.webServer> 
</configuration> 

Xem bài đăng trên blog của tôi theo số Dynamically Generating Robots.txt Using ASP.NET MVC để biết thêm chi tiết.

Các vấn đề liên quan