Domanda

Sto usando http://urlrewriter.net/ per riscrivere gli URL sul mio sito web. Ad esempio, sto riscrivendo:

  

http://www.example.com/schedule.aspx?state=ca

a

  

http://www.example.com/california.aspx

Cosa sto cercando di fare (per scopi SEO) per aggiungere dinamicamente il meta tag:

<meta name="robots" content="noindex,follow" />

solo alla pagina che non è stata riscritta. Questo perché voglio che entrambi gli URL funzionino, ma solo quello riscritto deve essere indicizzato dai motori di ricerca.

Come determinare quale versione della pagina è stata richiesta?

Modifica

Le risposte di seguito suggeriscono un reindirizzamento 301 anziché utilizzare un meta tag. Forse lo farò, ma voglio ancora conoscere la risposta alla domanda sottostante ... come faccio a sapere se la pagina è stata riscritta?

È stato utile?

Soluzione

personalmente, reindirizzerei 301 da quello non riscritto a quello riscritto e utilizzerei solo la singola copia della pagina. È più facile per gli utenti e dal punto di vista SEO hai 1 copia del contenuto.

Altri suggerimenti

Se devi farlo, probabilmente puoi fare qualcosa del tipo:

<add header="X-WasRewritten" value="true" />

E puoi controllare l'intestazione nella tua vista e aggiungere il meta tag robot se ne hai bisogno.

Anche questo verrà restituito al client, quindi se vuoi nascondere che puoi scrivere un CustomAction ( http://urlrewriter.net/index.php/support/reference/actions/custom-action ) che imposterà una sorta di valore di stato nella tua richiesta.

Tuttavia, avere due URI per la stessa risorsa è qualcosa che non consiglierei. Ti suggerisco di mantenere l'unica rappresentazione. Se sei preoccupato di invalidare i vecchi segnalibri, puoi impostare quello vecchio in modo che reindirizzi a quello nuovo.

Oltre alla risposta di chakrit, sembra che UrlRewriter.NET memorizzi l'URL originale in HttpContext, in una chiave chiamata UrlRewriter.NET.RawUrl . Quindi, potresti provare qualcosa del tipo:

bool isPageRewritten = 
   !string.IsNullOrEmpty(HttpContext.Current.Items["UrlRewriter.NET.RawUrl"]);

Il metodo più ovvio è utilizzare l'oggetto Request.Url nella tua pagina per ottenere informazioni sull'URL e sulla stringa di query. Ad esempio:

if (Path.GetFileName(Request.Url.FilePath) == "schedule.aspx")
   //Not rewritten
else
   //rewritten

Penso che sia il lavoro di HttpContext.Current .Items .

Puoi salvare il " Reindirizzamento " in HttpContext.Current.Items e quindi nelle tue pagine, puoi verificarlo per un determinato valore aggiunto.

Credo che tu possa aggiungere hook a urlrewriter.net che potrebbero farlo, qualcosa di simile:

HttpContext.Current.Items["Redirected_From"] = currentUrlHere;

E poi nelle tue pagine web, puoi controllarlo da:

if (!string.IsNullOrEmpty(HttpContext.Current.Items["Redirected_From"]))
    // the page's been redirected, do something!
else
    // no it's visited normally.

L'ho lasciato da tempo per il framework di routing ASP.NET in .NET 3.5 SP1, è meglio di urlrewriter.net IMO.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top