homepage Welcome to WebmasterWorld Guest from 54.211.235.255
register, free tools, login, search, pro membership, help, library, announcements, recent posts, open posts,
Become a Pro Member
Home / Forums Index / Microsoft / Microsoft IIS Web Server and ASP.NET
Forum Library, Charter, Moderators: ocean10000

Microsoft IIS Web Server and ASP.NET Forum

    
IIS Isapi URL rewrite problem
Problems with URL rewriting
BBonanza




msg:3821146
 4:23 pm on Jan 7, 2009 (gmt 0)

Hi,
I am trying to rewrite dirty URLs to tidy ones in the interest of good SEO.
I am on a windows server which has ISAPI URL rewrite installed which allows you to use a .htaccess file.
I have tried in vain to change the following URL using the rewrite rule below but it wont have it. I have tried several permutations but still no luck.

www.example.co.uk/used/car/used/chevrolet
www.example.co.uk/used/car.asp?used=chevrolet

***************************************************************
RewriteEngine on
RewriteRule ^/used/car/used/?([^/]*)$ /used/car.asp?used=$1 [L]
****************************************************************

The URL rewrite works fine because:
****************************************************************
RewriteEngine on
RewriteRule ^(.*?\.asp)/([^/]*)/([^/]*)(/.+)? $1$4?$2=$3 [NC,LP,QSA]
****************************************************************
works fine, but I have to leave the .asp in the URL like this
www.example.co.uk/used/car.asp/used/chevrolet
I am trying to shift the .asp and be able to modify my own rules.
Thanks for any help
Richard

[edited by: coopster at 1:49 pm (utc) on Jan. 15, 2009]
[edit reason] please use example.com, thanks! [/edit]

 

jdMorgan




msg:3821270
 6:38 pm on Jan 7, 2009 (gmt 0)

Are you sure that the requested URL-path as seen by RewriteRule in .htaccess will start with a slash? On Apache, URLs seen by a RewriteRule in example.com/.htaccess do not start with a slash, as it is stripped off when the requested URL-path is "localized" to the per-directory .htaccess context (i.e. the location of this .htaccess file is *in* "/", so it is removed from the localized request URL-path). However, I'm not sure if ISAPI Rewrite acts the same.

However, if this is also the case with ISAPI Rewrite, then your original rule works because it matches "^(.*?\.asp)" at the beginning of the requested URL-path, so it doesn't care if there is a leading slash or not.

Also, what is the "/?" following "used/cars/used" for? This makes that trailing slash optional. That, and the following "([^/]*)$" subpattern mean that your rule will accept a blank value for "used=". It also means that the same content will be served for
example.co.uk/used/car/used/
and
example.co.uk/used/car/used

and for

example.co.uk/used/car/used/chevrolet
and
example.co.uk/used/car/usedchevrolet

This creates duplicate-content problems -- the same content accessible at more than a single, canonical URL.

Is that what you intended?

If this were Apache, I'd suggest:

RewriteEngine on
#
RewriteRule [b]^us[/b]ed/car/used/([^/]*)$ /used/car.asp?used=$1 [L]

Requested URLs matching ^used/car/used([^/]*)$ (no slash after "used") should be 301-redirected to example.co.uk/used/cars/used/$1 to prevent this problem.

Jim

carguy84




msg:3821669
 5:51 am on Jan 8, 2009 (gmt 0)

Is this Isapi rewrite 2 or 3?

I'm guessing 3 as 2 doesn't use .htaccess, it uses httpd.ini.

BBonanza




msg:3821729
 8:20 am on Jan 8, 2009 (gmt 0)

It is Isapi 3.

Thanks for the detailed reply Jim.
Your suggestion didn't work but I did neglect to give you some info that could make a difference - the .htaccess file resides in the "used" folder with car.asp file.

[edited by: BBonanza at 8:23 am (utc) on Jan. 8, 2009]

BBonanza




msg:3821764
 9:18 am on Jan 8, 2009 (gmt 0)

Another Question: Once I have set up the rewrite how do I go about 301 redirecting

www.mydomain.co.uk/used/car.asp?used=chevrolet
to
www.mydomain.co.uk/used/car/used/chevrolet

Can this be done in the .htaccess file?

Sorry, I am new to this, and to be honest it is quite tough to get my head around - a digit in the wrong place and you get a big "Family Fortunes" NA NAAAAAA.
Thanks Guys

BBonanza




msg:3821801
 11:00 am on Jan 8, 2009 (gmt 0)

I have now place my .htaccess in the root folder.
I have inserted this 301 redirect into the htaccess

RewriteCond %{QUERY_STRING} ^make=(.+)$
RewriteRule ^oldfolder/oldpage.asp$ http://www.example.co.uk/used/car.asp/used/%1 [L,R=301]

It does redirect, but it resolves this:

http://www.example.co.uk/used/car.asp/used/ford?make=ford

It needs to be:

http://www.example.co.uk/used/car.asp/used/ford

Thanks

[edited by: coopster at 1:48 pm (utc) on Jan. 15, 2009]
[edit reason] please use example.com, thanks! [/edit]

pageoneresults




msg:3821812
 11:18 am on Jan 8, 2009 (gmt 0)

BBonanza, have you tried the ISAPI_Rewrite forums for assistance with this? Yaroslav and crew over there at Helicon Tech are on the ball and will usually respond within 24 hours with an appropriate solution based on your requirements.

Since you are using the .htaccess method I'm going to assume that what jdMorgan is providing as examples should take care of ya.

KHWeb




msg:3826402
 8:34 pm on Jan 14, 2009 (gmt 0)

Hello BBonanza,

I have done similar rewrite with ISAPI 3 and I would advise the following:

1)On the portion of your rule that has %1 change it to $1

2)On the clean url, escape the back-slash / and periods . with a forward-slash \

3) Change [L,R=301]to [R=301,L] so that it first redirects to the new url and then stops looking for a match.

4)Update to the latest release of ISAPI 3 (this version has had several updates since its first release)

So change it from this:

RewriteCond %{QUERY_STRING} ^make=(.+)$
RewriteRule ^oldfolder/oldpage.asp$ http://www.example.co.uk/used/car.asp/used/%1 [L,R=301]

To this:

RewriteCond %{QUERY_STRING} ^make=(.+)$
RewriteRule ^oldfolder\/oldpage\.asp$ http://www.example.co.uk/used/car.asp/used/$1 [R=301,L]

Hope this helps!

KH

[edited by: coopster at 1:47 pm (utc) on Jan. 15, 2009]
[edit reason] please use example.com, thanks! [/edit]

Global Options:
 top home search open messages active posts  
 

Home / Forums Index / Microsoft / Microsoft IIS Web Server and ASP.NET
rss feed

All trademarks and copyrights held by respective owners. Member comments are owned by the poster.
Home ¦ Free Tools ¦ Terms of Service ¦ Privacy Policy ¦ Report Problem ¦ About ¦ Library ¦ Newsletter
WebmasterWorld is a Developer Shed Community owned by Jim Boykin.
© Webmaster World 1996-2014 all rights reserved