por Cesar Cassiano Schimanco

robots.txt dinâmico em ASP.NET

Criar um robots.txt dinamicamente em ASP.NET é simples, inclusive existem várias formas de fazer isto, abaixo vou mostrar dois exemplos.
No primeiro exemplo vamos usar o web.config para reescrever a URL do robots.txt, ou seja, ele não vai existir fisicamente, apenas será remapeado.
Este exemplo serve para reescrever a URL de qualquer arquivo .txt com ASP.NET, não apenas do robots.txt.
No outro exemplo vou mostrar como criar e editar o arquivo robots.txt com C#, desta vez o arquivo existirá fisicamente.

robots.txt dinâmico utilizando o web.config.
Vamos utilizar o URL Rewrite para reescrever a URL (/robots.txt) antes que ela seja processada pelo IIS.
No browser a URL ficará assim:
http://localhost/robots.txt
Mas estará executando a URL:
http://localhost/robots.aspx

O web.config ficou assim:

<?xml version="1.0"?>
<configuration>
  <system.web>
    <compilation debug="true" targetFramework="4.0"/>
  </system.web>
<system.webServer>
  <rewrite>
    <rules>
      <rule name="Rewrite robots.txt" >
        <match ignoreCase="true" url="^robots.txt$" />
        <action type="Rewrite" url="robots.aspx" appendQueryString="false" />
      </rule>
    </rules>
  </rewrite>
</system.webServer>
</configuration>


A página Robots.aspx.cs ficou assim:

protected void Page_Load(object sender, EventArgs e)
{
    //Limpa o conteúdo
    Response.Clear();
    //Esta linha vai fazer com que a página retorne um txt
    Response.ContentType = "text/plain";

    //Escrever o conteúdo do arquivo .txt
    Response.Write(@"User-agent: *
Allow: /");

    //Termina aqui
    Response.End();
}

Nota: Para usar o web.config o URL Rewrite deve estar instalado, mais detalhes no link abaixo.
http://www.iis.net/downloads/microsoft/url-rewrite
 

Criar e manipular o arquivo robots.txt com C#
Desta vez vamos criar o arquivo robots.txt na raiz do site e depois editá-lo.
Para este exemplo, usei um formulário (Defautl.aspx) para criar, caso não exista, e depois editar o conteúdo do robots.txt.

Default.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:TextBox runat="server" ID="txtRobots" TextMode="MultiLine" />
    </div>
        <div>
            <asp:Button ID="btnSave" Text="Salvar" OnClick="btnSave_Click" runat="server" />
        </div>
    </form>
</body>
</html>

Default.aspx.cs

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            //Path do arquivo robots.txt
            //C:\inetpub\wwwroot\nomedosite\robots.txt
            string strFile = System.Web.HttpContext.Current.Server.MapPath("~/robots.txt");

            //Se arquivo não existir
            if (!File.Exists(strFile))
            {
                //Criar o arquivo,
                //Estou usando o using para fazer o Dispose automático do arquivo após criá-lo.
                using (FileStream fs = File.Create(strFile)) { }
            }
            //Abrindo o arquivo
            using (StreamReader sr = File.OpenText(strFile))
            {
                //Ler o conteúdo do txt e preencher o TextBox
                txtRobots.Text = sr.ReadToEnd();
            }
        }
    }

    protected void btnSave_Click(object sender, EventArgs e)
    {
        //Path do arquivo robots.txt
        //C:\inetpub\wwwroot\nomedosite\robots.txt
        string strFile = System.Web.HttpContext.Current.Server.MapPath("~/robots.txt");

        //Escreve no robots.txt
        File.WriteAllText(strFile, txtRobots.Text);
    }
}

Download do exemplo aqui.

Comentários

Carregando comentários

Postar um novo comentário



Processando...