By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
448,677 Members | 1,272 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 448,677 IT Pros & Developers. It's quick & easy.

How to 301 redirect default.aspx to root

P: n/a
How can I 301 redirect www.example.com/default.aspx to www.example.com
without using ISAPI filters?

Nov 26 '07 #1
Share this Question
Share on Google+
10 Replies


P: n/a
If i recall correctly, can't you just set this up in IIS, i just googled
"301 redirect" and got
http://www.webconfs.com/how-to-redirect-a-webpage.php as the first link...

:)
Andrew

"Eirik Eldorsen" <ei***@increo.nowrote in message
news:ef****************@TK2MSFTNGP05.phx.gbl...
How can I 301 redirect www.example.com/default.aspx to www.example.com
without using ISAPI filters?

Nov 26 '07 #2

P: n/a
Yeah I now how to 301 redirect. The problem is to do it with default.aspx,
without causing an infinite loop. The homepage has 2 url's
www.eample.com/default.aspx and www.example.com. I want to 301 redirect
anyone who get default.aspx in the url.

Request.RawUrl returns default.aspx in both cases, so i can't figure out how
to check if the user has default.aspx in his url.

"Andrew Brook" <yk****@hotmail.comskrev i melding
news:%2****************@TK2MSFTNGP05.phx.gbl...
If i recall correctly, can't you just set this up in IIS, i just googled
"301 redirect" and got
http://www.webconfs.com/how-to-redirect-a-webpage.php as the first link...

:)
Andrew

"Eirik Eldorsen" <ei***@increo.nowrote in message
news:ef****************@TK2MSFTNGP05.phx.gbl...
>How can I 301 redirect www.example.com/default.aspx to www.example.com
without using ISAPI filters?


Nov 26 '07 #3

P: n/a
I use request.Url.AbsoluteUri which seems to work fine unless I pass a
parameter in the query string.

-----Original Message-----
From: Eirik Eldorsen [mailto:ei***@increo.no]
Posted At: Monday, November 26, 2007 6:46 AM
Posted To: microsoft.public.dotnet.framework.aspnet
Conversation: How to 301 redirect default.aspx to root
Subject: Re: How to 301 redirect default.aspx to root

Yeah I now how to 301 redirect. The problem is to do it with
default.aspx,
without causing an infinite loop. The homepage has 2 url's
www.eample.com/default.aspx and www.example.com. I want to 301 redirect
anyone who get default.aspx in the url.

Request.RawUrl returns default.aspx in both cases, so i can't figure out
how
to check if the user has default.aspx in his url.

"Andrew Brook" <yk****@hotmail.comskrev i melding
news:%2****************@TK2MSFTNGP05.phx.gbl...
If i recall correctly, can't you just set this up in IIS, i just
googled
"301 redirect" and got
http://www.webconfs.com/how-to-redirect-a-webpage.php as the first
link...
>
:)
Andrew

"Eirik Eldorsen" <ei***@increo.nowrote in message
news:ef****************@TK2MSFTNGP05.phx.gbl...
>How can I 301 redirect www.example.com/default.aspx to
www.example.com
>without using ISAPI filters?


Nov 26 '07 #4

P: n/a
I've tested your sugestion. I get the same problem:
If I write Response.Write(Request.Url.AbsoluteUri ) in the pageload of
Default.aspx i get http://www.example.com/deafult.aspx even if the url in
the browser says www.example.com
"Dave Bush" <da*******@dmbcllc.comskrev i melding
news:F7D602751B594FAFB02BE26C119F8393@OfficeVista. ..
>I use request.Url.AbsoluteUri which seems to work fine unless I pass a
parameter in the query string.

-----Original Message-----
From: Eirik Eldorsen [mailto:ei***@increo.no]
Posted At: Monday, November 26, 2007 6:46 AM
Posted To: microsoft.public.dotnet.framework.aspnet
Conversation: How to 301 redirect default.aspx to root
Subject: Re: How to 301 redirect default.aspx to root

Yeah I now how to 301 redirect. The problem is to do it with
default.aspx,
without causing an infinite loop. The homepage has 2 url's
www.eample.com/default.aspx and www.example.com. I want to 301 redirect
anyone who get default.aspx in the url.

Request.RawUrl returns default.aspx in both cases, so i can't figure out
how
to check if the user has default.aspx in his url.

"Andrew Brook" <yk****@hotmail.comskrev i melding
news:%2****************@TK2MSFTNGP05.phx.gbl...
>If i recall correctly, can't you just set this up in IIS, i just
googled
>"301 redirect" and got
http://www.webconfs.com/how-to-redirect-a-webpage.php as the first
link...
>>
:)
Andrew

"Eirik Eldorsen" <ei***@increo.nowrote in message
news:ef****************@TK2MSFTNGP05.phx.gbl...
>>How can I 301 redirect www.example.com/default.aspx to
www.example.com
>>without using ISAPI filters?



Nov 26 '07 #5

P: n/a
You don't have to issue a 301...

Your request sounds like a job for Ionic's ISAPI Rewrite Filter, but you'll only be able
to use it on a server you control. Shared hosters seldom let you install ISAPI filters.

IIRF :
http://cheeso.members.winisp.net/IIRF.aspx

It's free.

To remove default.aspx from the URL, you'd use :

RewriteRule (.*)/default.aspx$ $1/ [I,RP]

Juan T. Llibre, asp.net MVP
asp.net faq : http://asp.net.do/faq/
foros de asp.net, en español : http://asp.net.do/foros/
======================================
"Eirik Eldorsen" <ei***@increo.nowrote in message news:ed*************@TK2MSFTNGP06.phx.gbl...
Yeah I now how to 301 redirect. The problem is to do it with default.aspx, without causing an infinite loop. The
homepage has 2 url's www.eample.com/default.aspx and www.example.com. I want to 301 redirect anyone who get
default.aspx in the url.

Request.RawUrl returns default.aspx in both cases, so i can't figure out how to check if the user has default.aspx in
his url.

"Andrew Brook" <yk****@hotmail.comskrev i melding news:%2****************@TK2MSFTNGP05.phx.gbl...
>If i recall correctly, can't you just set this up in IIS, i just googled "301 redirect" and got
http://www.webconfs.com/how-to-redirect-a-webpage.php as the first link...

:)
Andrew

"Eirik Eldorsen" <ei***@increo.nowrote in message news:ef****************@TK2MSFTNGP05.phx.gbl...
>>How can I 301 redirect www.example.com/default.aspx to www.example.com without using ISAPI filters?



Nov 26 '07 #6

P: n/a
Thanks. I was hoping to find a solution without using ISAPI filter, but I
guess that is the only option, or wait till IIS7 is available.

Eirik

"Juan T. Llibre" <no***********@nowhere.comskrev i melding
news:eP**************@TK2MSFTNGP06.phx.gbl...
You don't have to issue a 301...

Your request sounds like a job for Ionic's ISAPI Rewrite Filter, but
you'll only be able
to use it on a server you control. Shared hosters seldom let you install
ISAPI filters.

IIRF :
http://cheeso.members.winisp.net/IIRF.aspx

It's free.

To remove default.aspx from the URL, you'd use :

RewriteRule (.*)/default.aspx$ $1/ [I,RP]

Juan T. Llibre, asp.net MVP
asp.net faq : http://asp.net.do/faq/
foros de asp.net, en español : http://asp.net.do/foros/
======================================
"Eirik Eldorsen" <ei***@increo.nowrote in message
news:ed*************@TK2MSFTNGP06.phx.gbl...
>Yeah I now how to 301 redirect. The problem is to do it with
default.aspx, without causing an infinite loop. The homepage has 2 url's
www.eample.com/default.aspx and www.example.com. I want to 301 redirect
anyone who get default.aspx in the url.

Request.RawUrl returns default.aspx in both cases, so i can't figure out
how to check if the user has default.aspx in his url.

"Andrew Brook" <yk****@hotmail.comskrev i melding
news:%2****************@TK2MSFTNGP05.phx.gbl...
>>If i recall correctly, can't you just set this up in IIS, i just googled
"301 redirect" and got
http://www.webconfs.com/how-to-redirect-a-webpage.php as the first
link...

:)
Andrew

"Eirik Eldorsen" <ei***@increo.nowrote in message
news:ef****************@TK2MSFTNGP05.phx.gbl.. .
How can I 301 redirect www.example.com/default.aspx to www.example.com
without using ISAPI filters?





Nov 26 '07 #7

P: n/a
You can do this in an httpmodule

Here's one I wrote that uses a table in a database to match and replace.
It will handle 404 errors as well as being pre-emptive. It will either
do a 301 redirect or RewritePath (based on flag in db)

Table Schema:
OldUrl : varchar(n) - RegEx match or literal (based on field below)
NewUrl : varchar(n) - literal url to redirect to
Redirect301: bit - true if 301 redirect, false if RewritePath
Literal: bit - specifies that the OldUrl is a literal value and not a
pattern match.

I use this in my DotNetNuke sites regularly.

----< code start ---

using System;
using System.Collections.Generic;
using System.Text;
using System.Web;
using System.Text.RegularExpressions;
using System.Web.Caching;

namespace DNNRedirect
{
public class HttpModule : IHttpModule
{
public HttpModule()
{
//
// TODO: Add constructor logic here
//
}

public void Init(HttpApplication app)
{
app.BeginRequest += new EventHandler(this.OnBeginRequest);
}

public void OnBeginRequest(object s, EventArgs e)
{
HttpApplication app = (HttpApplication)s;
HttpRequest request = app.Request;
HttpResponse response = app.Response;
String requestUrl = request.Url.AbsoluteUri;
String domainPath =
request.Url.AbsoluteUri.Replace(request.Url.PathAn dQuery, "");
String appPath = request.ApplicationPath;
if (appPath.Length 2)
appPath += "/";
appPath = domainPath + appPath;

RedirectorDataSet.dmbcllcRedirectDataTable redirectTable;
redirectTable = RedirectController.GetData();
int rowIndex = 0;
// Handle 404 Errors.
if (request.ServerVariables["QUERY_STRING"].Length 4 &&
request.ServerVariables["QUERY_STRING"].StartsWith("404;"))
{
requestUrl =
request.ServerVariables["QUERY_STRING"].Substring(4).ToLower();
}
// Otherwise, be pre-emptive.

string newURL = null;
bool redirect = false;
for (rowIndex = 0; rowIndex < redirectTable.Rows.Count;
rowIndex++)
{
RedirectorDataSet.dmbcllcRedirectRow row =
(RedirectorDataSet.dmbcllcRedirectRow)(redirectTab le.Rows[rowIndex]);
if (row.Literal)
{
row.OldUrl = row.OldUrl.Replace("~/", appPath);
if (row.OldUrl.ToLower() == requestUrl.ToLower())
{
newURL = row.NewUrl;
redirect = row.Redirect301;
break;
}
}
else
{
row.OldUrl = row.OldUrl.Replace("~/",
Regex.Escape(appPath));
if (Regex.IsMatch(requestUrl, row.OldUrl,
RegexOptions.IgnoreCase))
{
newURL = Regex.Replace(requestUrl, row.OldUrl,
row.NewUrl, RegexOptions.IgnoreCase);
redirect = row.Redirect301;
break;
}
}
}

if (newURL != null)
{
newURL = newURL.Replace("~/", appPath);
if (newURL.ToLower() != requestUrl.ToLower())
{
if (redirect)
{
response.Status = "301 Moved Permanently";
response.AddHeader("Location", newURL);
response.End();
return;
}
else
{
response.ClearContent();
response.StatusCode = 200;
newURL = newURL.Replace(appPath, "~/");
HttpContext.Current.RewritePath(newURL);
}
}
}
}
public void Dispose()
{
}
}

}

----< end ----

-----Original Message-----
From: Eirik Eldorsen [mailto:ei***@increo.no]
Posted At: Monday, November 26, 2007 8:28 AM
Posted To: microsoft.public.dotnet.framework.aspnet
Conversation: How to 301 redirect default.aspx to root
Subject: Re: How to 301 redirect default.aspx to root

Thanks. I was hoping to find a solution without using ISAPI filter, but
I
guess that is the only option, or wait till IIS7 is available.

Eirik

"Juan T. Llibre" <no***********@nowhere.comskrev i melding
news:eP**************@TK2MSFTNGP06.phx.gbl...
You don't have to issue a 301...

Your request sounds like a job for Ionic's ISAPI Rewrite Filter, but
you'll only be able

to use it on a server you control. Shared hosters seldom let you install
ISAPI filters.

IIRF :
http://cheeso.members.winisp.net/IIRF.aspx

It's free.

To remove default.aspx from the URL, you'd use :

RewriteRule (.*)/default.aspx$ $1/ [I,RP]

Juan T. Llibre, asp.net MVP
asp.net faq : http://asp.net.do/faq/
foros de asp.net, en español : http://asp.net.do/foros/
======================================
"Eirik Eldorsen" <ei***@increo.nowrote in message
news:ed*************@TK2MSFTNGP06.phx.gbl...
>Yeah I now how to 301 redirect. The problem is to do it with
default.aspx, without causing an infinite loop. The homepage has 2
url's
>www.eample.com/default.aspx and www.example.com. I want to 301
redirect
>anyone who get default.aspx in the url.

Request.RawUrl returns default.aspx in both cases, so i can't figure
out
>how to check if the user has default.aspx in his url.

"Andrew Brook" <yk****@hotmail.comskrev i melding
news:%2****************@TK2MSFTNGP05.phx.gbl...
>>If i recall correctly, can't you just set this up in IIS, i just
googled
>>"301 redirect" and got
http://www.webconfs.com/how-to-redirect-a-webpage.php as the first
link...

:)
Andrew

"Eirik Eldorsen" <ei***@increo.nowrote in message
news:ef****************@TK2MSFTNGP05.phx.gbl.. .
How can I 301 redirect www.example.com/default.aspx to
www.example.com
>>>without using ISAPI filters?





Nov 26 '07 #8

P: n/a
am I missing something?

would a few lines like this do?
Dim url As String = Request.ServerVariables("URL")
If InStr(url, "default.aspx") <0 Then
Response.Redirect("/")
End If
"Dave Bush" <da*******@dmbcllc.comwrote in message
news:623D89CCDA0840B38E99691CFA321876@OfficeVista. ..
You can do this in an httpmodule

Here's one I wrote that uses a table in a database to match and replace.
It will handle 404 errors as well as being pre-emptive. It will either
do a 301 redirect or RewritePath (based on flag in db)

Table Schema:
OldUrl : varchar(n) - RegEx match or literal (based on field below)
NewUrl : varchar(n) - literal url to redirect to
Redirect301: bit - true if 301 redirect, false if RewritePath
Literal: bit - specifies that the OldUrl is a literal value and not a
pattern match.

I use this in my DotNetNuke sites regularly.

----< code start ---

using System;
using System.Collections.Generic;
using System.Text;
using System.Web;
using System.Text.RegularExpressions;
using System.Web.Caching;

namespace DNNRedirect
{
public class HttpModule : IHttpModule
{
public HttpModule()
{
//
// TODO: Add constructor logic here
//
}

public void Init(HttpApplication app)
{
app.BeginRequest += new EventHandler(this.OnBeginRequest);
}

public void OnBeginRequest(object s, EventArgs e)
{
HttpApplication app = (HttpApplication)s;
HttpRequest request = app.Request;
HttpResponse response = app.Response;
String requestUrl = request.Url.AbsoluteUri;
String domainPath =
request.Url.AbsoluteUri.Replace(request.Url.PathAn dQuery, "");
String appPath = request.ApplicationPath;
if (appPath.Length 2)
appPath += "/";
appPath = domainPath + appPath;

RedirectorDataSet.dmbcllcRedirectDataTable redirectTable;
redirectTable = RedirectController.GetData();
int rowIndex = 0;
// Handle 404 Errors.
if (request.ServerVariables["QUERY_STRING"].Length 4 &&
request.ServerVariables["QUERY_STRING"].StartsWith("404;"))
{
requestUrl =
request.ServerVariables["QUERY_STRING"].Substring(4).ToLower();
}
// Otherwise, be pre-emptive.

string newURL = null;
bool redirect = false;
for (rowIndex = 0; rowIndex < redirectTable.Rows.Count;
rowIndex++)
{
RedirectorDataSet.dmbcllcRedirectRow row =
(RedirectorDataSet.dmbcllcRedirectRow)(redirectTab le.Rows[rowIndex]);
if (row.Literal)
{
row.OldUrl = row.OldUrl.Replace("~/", appPath);
if (row.OldUrl.ToLower() == requestUrl.ToLower())
{
newURL = row.NewUrl;
redirect = row.Redirect301;
break;
}
}
else
{
row.OldUrl = row.OldUrl.Replace("~/",
Regex.Escape(appPath));
if (Regex.IsMatch(requestUrl, row.OldUrl,
RegexOptions.IgnoreCase))
{
newURL = Regex.Replace(requestUrl, row.OldUrl,
row.NewUrl, RegexOptions.IgnoreCase);
redirect = row.Redirect301;
break;
}
}
}

if (newURL != null)
{
newURL = newURL.Replace("~/", appPath);
if (newURL.ToLower() != requestUrl.ToLower())
{
if (redirect)
{
response.Status = "301 Moved Permanently";
response.AddHeader("Location", newURL);
response.End();
return;
}
else
{
response.ClearContent();
response.StatusCode = 200;
newURL = newURL.Replace(appPath, "~/");
HttpContext.Current.RewritePath(newURL);
}
}
}
}
public void Dispose()
{
}
}

}

----< end ----

-----Original Message-----
From: Eirik Eldorsen [mailto:ei***@increo.no]
Posted At: Monday, November 26, 2007 8:28 AM
Posted To: microsoft.public.dotnet.framework.aspnet
Conversation: How to 301 redirect default.aspx to root
Subject: Re: How to 301 redirect default.aspx to root

Thanks. I was hoping to find a solution without using ISAPI filter, but
I
guess that is the only option, or wait till IIS7 is available.

Eirik

"Juan T. Llibre" <no***********@nowhere.comskrev i melding
news:eP**************@TK2MSFTNGP06.phx.gbl...
>You don't have to issue a 301...

Your request sounds like a job for Ionic's ISAPI Rewrite Filter, but
you'll only be able


to use it on a server you control. Shared hosters seldom let you install
>ISAPI filters.

IIRF :
http://cheeso.members.winisp.net/IIRF.aspx

It's free.

To remove default.aspx from the URL, you'd use :

RewriteRule (.*)/default.aspx$ $1/ [I,RP]

Juan T. Llibre, asp.net MVP
asp.net faq : http://asp.net.do/faq/
foros de asp.net, en español : http://asp.net.do/foros/
======================================
"Eirik Eldorsen" <ei***@increo.nowrote in message
news:ed*************@TK2MSFTNGP06.phx.gbl...
>>Yeah I now how to 301 redirect. The problem is to do it with
default.aspx, without causing an infinite loop. The homepage has 2
url's
>>www.eample.com/default.aspx and www.example.com. I want to 301
redirect
>>anyone who get default.aspx in the url.

Request.RawUrl returns default.aspx in both cases, so i can't figure
out
>>how to check if the user has default.aspx in his url.

"Andrew Brook" <yk****@hotmail.comskrev i melding
news:%2****************@TK2MSFTNGP05.phx.gbl.. .
If i recall correctly, can't you just set this up in IIS, i just
googled
>>>"301 redirect" and got
http://www.webconfs.com/how-to-redirect-a-webpage.php as the first
link...

:)
Andrew

"Eirik Eldorsen" <ei***@increo.nowrote in message
news:ef****************@TK2MSFTNGP05.phx.gbl. ..
How can I 301 redirect www.example.com/default.aspx to
www.example.com
>>>>without using ISAPI filters?
>
>
>



Dec 3 '07 #9

P: n/a
Yes, that's what I initially thought, too, but ran into a wall.

Have you actually tested that ?
IIRC, when I tried somthing similar, with InStr, I ended up in an endless redirect loop.

Juan T. Llibre, asp.net MVP
asp.net faq : http://asp.net.do/faq/
foros de asp.net, en español : http://asp.net.do/foros/
======================================
"ThatsIT.net.au" <me@thatsitwrote in message news:2D**********************************@microsof t.com...
am I missing something?

would a few lines like this do?
Dim url As String = Request.ServerVariables("URL")
If InStr(url, "default.aspx") <0 Then
Response.Redirect("/")
End If
"Dave Bush" <da*******@dmbcllc.comwrote in message news:623D89CCDA0840B38E99691CFA321876@OfficeVista. ..
>You can do this in an httpmodule

Here's one I wrote that uses a table in a database to match and replace.
It will handle 404 errors as well as being pre-emptive. It will either
do a 301 redirect or RewritePath (based on flag in db)

Table Schema:
OldUrl : varchar(n) - RegEx match or literal (based on field below)
NewUrl : varchar(n) - literal url to redirect to
Redirect301: bit - true if 301 redirect, false if RewritePath
Literal: bit - specifies that the OldUrl is a literal value and not a
pattern match.

I use this in my DotNetNuke sites regularly.

----< code start ---

using System;
using System.Collections.Generic;
using System.Text;
using System.Web;
using System.Text.RegularExpressions;
using System.Web.Caching;

namespace DNNRedirect
{
public class HttpModule : IHttpModule
{
public HttpModule()
{
//
// TODO: Add constructor logic here
//
}

public void Init(HttpApplication app)
{
app.BeginRequest += new EventHandler(this.OnBeginRequest);
}

public void OnBeginRequest(object s, EventArgs e)
{
HttpApplication app = (HttpApplication)s;
HttpRequest request = app.Request;
HttpResponse response = app.Response;
String requestUrl = request.Url.AbsoluteUri;
String domainPath =
request.Url.AbsoluteUri.Replace(request.Url.PathA ndQuery, "");
String appPath = request.ApplicationPath;
if (appPath.Length 2)
appPath += "/";
appPath = domainPath + appPath;

RedirectorDataSet.dmbcllcRedirectDataTable redirectTable;
redirectTable = RedirectController.GetData();
int rowIndex = 0;
// Handle 404 Errors.
if (request.ServerVariables["QUERY_STRING"].Length 4 &&
request.ServerVariables["QUERY_STRING"].StartsWith("404;"))
{
requestUrl =
request.ServerVariables["QUERY_STRING"].Substring(4).ToLower();
}
// Otherwise, be pre-emptive.

string newURL = null;
bool redirect = false;
for (rowIndex = 0; rowIndex < redirectTable.Rows.Count;
rowIndex++)
{
RedirectorDataSet.dmbcllcRedirectRow row =
(RedirectorDataSet.dmbcllcRedirectRow)(redirectTa ble.Rows[rowIndex]);
if (row.Literal)
{
row.OldUrl = row.OldUrl.Replace("~/", appPath);
if (row.OldUrl.ToLower() == requestUrl.ToLower())
{
newURL = row.NewUrl;
redirect = row.Redirect301;
break;
}
}
else
{
row.OldUrl = row.OldUrl.Replace("~/",
Regex.Escape(appPath));
if (Regex.IsMatch(requestUrl, row.OldUrl,
RegexOptions.IgnoreCase))
{
newURL = Regex.Replace(requestUrl, row.OldUrl,
row.NewUrl, RegexOptions.IgnoreCase);
redirect = row.Redirect301;
break;
}
}
}

if (newURL != null)
{
newURL = newURL.Replace("~/", appPath);
if (newURL.ToLower() != requestUrl.ToLower())
{
if (redirect)
{
response.Status = "301 Moved Permanently";
response.AddHeader("Location", newURL);
response.End();
return;
}
else
{
response.ClearContent();
response.StatusCode = 200;
newURL = newURL.Replace(appPath, "~/");
HttpContext.Current.RewritePath(newURL);
}
}
}
}
public void Dispose()
{
}
}

}

----< end ----

-----Original Message-----
From: Eirik Eldorsen [mailto:ei***@increo.no]
Posted At: Monday, November 26, 2007 8:28 AM
Posted To: microsoft.public.dotnet.framework.aspnet
Conversation: How to 301 redirect default.aspx to root
Subject: Re: How to 301 redirect default.aspx to root

Thanks. I was hoping to find a solution without using ISAPI filter, but
I
guess that is the only option, or wait till IIS7 is available.

Eirik

"Juan T. Llibre" <no***********@nowhere.comskrev i melding
news:eP**************@TK2MSFTNGP06.phx.gbl...
>>You don't have to issue a 301...

Your request sounds like a job for Ionic's ISAPI Rewrite Filter, but
you'll only be able


to use it on a server you control. Shared hosters seldom let you install
>>ISAPI filters.

IIRF :
http://cheeso.members.winisp.net/IIRF.aspx

It's free.

To remove default.aspx from the URL, you'd use :

RewriteRule (.*)/default.aspx$ $1/ [I,RP]

Juan T. Llibre, asp.net MVP
asp.net faq : http://asp.net.do/faq/
foros de asp.net, en español : http://asp.net.do/foros/
======================================
"Eirik Eldorsen" <ei***@increo.nowrote in message
news:ed*************@TK2MSFTNGP06.phx.gbl...
Yeah I now how to 301 redirect. The problem is to do it with
default.aspx, without causing an infinite loop. The homepage has 2
url's
>>>www.eample.com/default.aspx and www.example.com. I want to 301
redirect
>>>anyone who get default.aspx in the url.

Request.RawUrl returns default.aspx in both cases, so i can't figure
out
>>>how to check if the user has default.aspx in his url.

"Andrew Brook" <yk****@hotmail.comskrev i melding
news:%2****************@TK2MSFTNGP05.phx.gbl. ..
If i recall correctly, can't you just set this up in IIS, i just
googled
>>>>"301 redirect" and got
http://www.webconfs.com/how-to-redirect-a-webpage.php as the first
link...
>
:)
Andrew
>
"Eirik Eldorsen" <ei***@increo.nowrote in message
news:ef****************@TK2MSFTNGP05.phx.gbl.. .
>How can I 301 redirect www.example.com/default.aspx to
www.example.com
>>>>>without using ISAPI filters?
>>
>>
>>
>
>



Dec 3 '07 #10

P: n/a

"Juan T. Llibre" <no***********@nowhere.comwrote in message
news:OU**************@TK2MSFTNGP03.phx.gbl...
Yes, that's what I initially thought, too, but ran into a wall.

Have you actually tested that ?
IIRC, when I tried somthing similar, with InStr, I ended up in an endless
redirect loop.

Yes I did test it it worked fine, thats why I asked if I was missing
something.
Try It again maybe you made a simple error because its working for me

>
Juan T. Llibre, asp.net MVP
asp.net faq : http://asp.net.do/faq/
foros de asp.net, en español : http://asp.net.do/foros/
======================================
"ThatsIT.net.au" <me@thatsitwrote in message
news:2D**********************************@microsof t.com...
>am I missing something?

would a few lines like this do?
Dim url As String = Request.ServerVariables("URL")
If InStr(url, "default.aspx") <0 Then
Response.Redirect("/")
End If
"Dave Bush" <da*******@dmbcllc.comwrote in message
news:623D89CCDA0840B38E99691CFA321876@OfficeVista ...
>>You can do this in an httpmodule

Here's one I wrote that uses a table in a database to match and replace.
It will handle 404 errors as well as being pre-emptive. It will either
do a 301 redirect or RewritePath (based on flag in db)

Table Schema:
OldUrl : varchar(n) - RegEx match or literal (based on field below)
NewUrl : varchar(n) - literal url to redirect to
Redirect301: bit - true if 301 redirect, false if RewritePath
Literal: bit - specifies that the OldUrl is a literal value and not a
pattern match.

I use this in my DotNetNuke sites regularly.

----< code start ---

using System;
using System.Collections.Generic;
using System.Text;
using System.Web;
using System.Text.RegularExpressions;
using System.Web.Caching;

namespace DNNRedirect
{
public class HttpModule : IHttpModule
{
public HttpModule()
{
//
// TODO: Add constructor logic here
//
}

public void Init(HttpApplication app)
{
app.BeginRequest += new EventHandler(this.OnBeginRequest);
}

public void OnBeginRequest(object s, EventArgs e)
{
HttpApplication app = (HttpApplication)s;
HttpRequest request = app.Request;
HttpResponse response = app.Response;
String requestUrl = request.Url.AbsoluteUri;
String domainPath =
request.Url.AbsoluteUri.Replace(request.Url.Path AndQuery, "");
String appPath = request.ApplicationPath;
if (appPath.Length 2)
appPath += "/";
appPath = domainPath + appPath;

RedirectorDataSet.dmbcllcRedirectDataTable redirectTable;
redirectTable = RedirectController.GetData();
int rowIndex = 0;
// Handle 404 Errors.
if (request.ServerVariables["QUERY_STRING"].Length 4 &&
request.ServerVariables["QUERY_STRING"].StartsWith("404;"))
{
requestUrl =
request.ServerVariables["QUERY_STRING"].Substring(4).ToLower();
}
// Otherwise, be pre-emptive.

string newURL = null;
bool redirect = false;
for (rowIndex = 0; rowIndex < redirectTable.Rows.Count;
rowIndex++)
{
RedirectorDataSet.dmbcllcRedirectRow row =
(RedirectorDataSet.dmbcllcRedirectRow)(redirectT able.Rows[rowIndex]);
if (row.Literal)
{
row.OldUrl = row.OldUrl.Replace("~/", appPath);
if (row.OldUrl.ToLower() == requestUrl.ToLower())
{
newURL = row.NewUrl;
redirect = row.Redirect301;
break;
}
}
else
{
row.OldUrl = row.OldUrl.Replace("~/",
Regex.Escape(appPath));
if (Regex.IsMatch(requestUrl, row.OldUrl,
RegexOptions.IgnoreCase))
{
newURL = Regex.Replace(requestUrl, row.OldUrl,
row.NewUrl, RegexOptions.IgnoreCase);
redirect = row.Redirect301;
break;
}
}
}

if (newURL != null)
{
newURL = newURL.Replace("~/", appPath);
if (newURL.ToLower() != requestUrl.ToLower())
{
if (redirect)
{
response.Status = "301 Moved Permanently";
response.AddHeader("Location", newURL);
response.End();
return;
}
else
{
response.ClearContent();
response.StatusCode = 200;
newURL = newURL.Replace(appPath, "~/");
HttpContext.Current.RewritePath(newURL);
}
}
}
}
public void Dispose()
{
}
}

}

----< end ----

-----Original Message-----
From: Eirik Eldorsen [mailto:ei***@increo.no]
Posted At: Monday, November 26, 2007 8:28 AM
Posted To: microsoft.public.dotnet.framework.aspnet
Conversation: How to 301 redirect default.aspx to root
Subject: Re: How to 301 redirect default.aspx to root

Thanks. I was hoping to find a solution without using ISAPI filter, but
I
guess that is the only option, or wait till IIS7 is available.

Eirik

"Juan T. Llibre" <no***********@nowhere.comskrev i melding
news:eP**************@TK2MSFTNGP06.phx.gbl...
You don't have to issue a 301...

Your request sounds like a job for Ionic's ISAPI Rewrite Filter, but
you'll only be able

to use it on a server you control. Shared hosters seldom let you install

ISAPI filters.

IIRF :
http://cheeso.members.winisp.net/IIRF.aspx

It's free.

To remove default.aspx from the URL, you'd use :

RewriteRule (.*)/default.aspx$ $1/ [I,RP]

Juan T. Llibre, asp.net MVP
asp.net faq : http://asp.net.do/faq/
foros de asp.net, en español : http://asp.net.do/foros/
======================================
"Eirik Eldorsen" <ei***@increo.nowrote in message
news:ed*************@TK2MSFTNGP06.phx.gbl...
Yeah I now how to 301 redirect. The problem is to do it with
default.aspx, without causing an infinite loop. The homepage has 2
url's
www.eample.com/default.aspx and www.example.com. I want to 301
redirect
anyone who get default.aspx in the url.
>
Request.RawUrl returns default.aspx in both cases, so i can't figure
out
how to check if the user has default.aspx in his url.
>
>
>
"Andrew Brook" <yk****@hotmail.comskrev i melding
news:%2****************@TK2MSFTNGP05.phx.gbl.. .
>If i recall correctly, can't you just set this up in IIS, i just
googled
>"301 redirect" and got
>http://www.webconfs.com/how-to-redirect-a-webpage.php as the first
>link...
>>
>:)
>Andrew
>>
>"Eirik Eldorsen" <ei***@increo.nowrote in message
>news:ef****************@TK2MSFTNGP05.phx.gbl. ..
>>How can I 301 redirect www.example.com/default.aspx to
www.example.com
>>without using ISAPI filters?
>>>
>>>
>>>
>>
>>
>
>


Dec 22 '07 #11

This discussion thread is closed

Replies have been disabled for this discussion.