来自Dynamically Generating Robots.txt Using ASP.NET MVC:
幸运的是,动态创建robots.txt文件非常简单, 使用MVC UrlHelper自动生成站点地图URL。拿一个 看下面的代码:
使用ASP.NET MVC动态生成robots.txt
public class HomeController : Controller { [Route("robots.txt", Name = "GetRobotsText"), OutputCache(Duration = 86400)] public ContentResult RobotsText() { StringBuilder stringBuilder = new StringBuilder(); stringBuilder.AppendLine("user-agent: *"); stringBuilder.AppendLine("disallow: /error/"); stringBuilder.AppendLine("allow: /error/foo"); stringBuilder.Append("sitemap: "); stringBuilder.AppendLine(this.Url.RouteUrl("GetSitemapXml", null, this.Request.Url.Scheme).TrimEnd('/')); return this.Content(stringBuilder.ToString(), "text/plain", Encoding.UTF8); } [Route("sitemap.xml", Name = "GetSitemapXml"), OutputCache(Duration = 86400)] public ContentResult SitemapXml() { // I'll talk about this in a later blog post. } }
创建robots.txt的时间是否由"动态"这里的意思与"动态"相同。在"动态网络 页面"由JavaScript程序创建?
哪些名称空间和.dll文件是定义的类controller
和ContentResult
?
不允许创建以文件扩展名结尾的路由 ASP.NET MVC中的默认值。为了解决这个安全限制,你 需要将以下内容添加到Web.config文件中:
允许Robots.txt的Web.config处理程序
XHTML <?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>
何时Web.config
读取,其内容何时生效?编辑上面的Web.config
文件是否意味着创建robots.txt的时机是动态的?
如果我手动添加robots.txt文件,是否必须修改Web.config
个文件?
感谢。