webForumDet fria alternativet

Skicka vidare från gammal sida till nya sidan.

.NET

3 svar · 519 visningar · startad av Fredde Mannen

Medlem sedan nov. 20014 054 inlägg
Frågan#1

Jag kommer inom kort att byta ut min förenings hemsida mot en ny.

Dock känns det ju inte som att man vill bara radera sidorna, så när folk som har kvar länkar går in på dem möts av 404:or till ex. :)

Sidan har varit i ASP 3.0, och har ny uppdaterats till ASP.NET 3.5

Vad är enklaste sättat att skicka de requests som är till http://www.domain.com/filnamn.asp till en http://www.domain.com/has-moved.aspx

Obs! Utan jidder i IIS så att säga :)

Medlem sedan sep. 2004828 inlägg
#2

Du gör en handler som tar hand om alla anrop till *.asp som gör en 301-redirect till den nya sidan

Det är inte riktigt det enklaste, men det är enda sättet att behålla eventyuell kraft från sökmotorerna

Medlem sedan nov. 20014 054 inlägg
#3

StefanBergfeldt skrev:

Du gör en handler som tar hand om alla anrop till *.asp som gör en 301-redirect till den nya sidan

Det är inte riktigt det enklaste, men det är enda sättet att behålla eventyuell kraft från sökmotorerna

Precis vad jag var ute efter. :)

Får googla lite på handlers... har inte skrivt någon själv än så. :)

Men det skall nog inte vara så svårt!

Medlem sedan nov. 20014 054 inlägg
#4

i fall man andra undrar..

Skrev ihop en liten httpmodule som gör det eftersökta för mig i alla fall.

Det lilla jag testade.. :e

HasMovedModule.cs

namespace Registry.Handlers
{
	public class HasMovedModule : System.Web.IHttpModule
	{

		#region IHttpModule Members

		public void Dispose()
		{
			throw new NotImplementedException();
		}

		public void Init(System.Web.HttpApplication context)
		{
			context.BeginRequest += new EventHandler(context_BeginRequest);
			
		}

		void context_BeginRequest(object sender, EventArgs e)
		{
			HttpResponse response = HttpContext.Current.Response;
			HttpRequest request = HttpContext.Current.Request;

			string legacyUrl = request.Path.ToLower();

			if (legacyUrl.EndsWith(".asp"))
			{
				string newPath = "/hasmoved.aspx?legacypath=" + legacyUrl;

				response.Clear();
				response.Status = "301 Moved Permanently";
				response.AddHeader("Location", newPath);
				response.End();
			}
		}

		#endregion
	}
}

web.config under httpModules

<add 
  name="HasMovedModule" 
  type="Registry.Handlers.HasMovedModule, Registry.Handlers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" 
/>
315 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
184 ms — deklarationer (db)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)
183 ms — ändringar (db)