Rewrite rule

E

Evertjan.

Lupus wrote on 31 dec 2006 in microsoft.public.inetserver.asp.general:
Hello everybody

In apache I used a feature called a "Rewrite rule" inside a .htaccess
file to process the URL :
i.e. http://www/mypage.html => http://www/page.php?page=mypage

Now I'd like to do a similar action on a IIS server with ASP (not
.net)...

Can anyone tell me how you can do this ?

Meseems you will have to explain what it does.
In general we do not use apache.

Possibly this is the effect you want:

========http://www/mypage.html ============

<% ' vbscript
response.redirect "/page2.php?page=mypage"
%>

===========================================

If you want to redirect from nonexisting pages,
I suggest from a specified [even nonexisting] directory,
you could write code in te dedicated 404.asp page
redirecting those calls and selecting the pagename as
querystring.

However, this can be better done as a server.transfer,
where the original virtual calling string
is available in a session variable.
[do not forget to clear the session variable
after extraction of the page name,
or do not use it elswhere in the session]

============= /404.asp ====================
<%
qstr = lcase(Request.ServerVariables("QUERY_STRING"))
if instr(qstr,":80/virtualdirectory/")>0 then
session("qstr")=qstr
server.transfer "/anydirectory/page.php"
end if
%>
<html>
......
This is our 404 page.<br>
The page you want:<br>
<%=qstr%><br>
does not exist.
</html>
==========================================
 
M

Mark McGinty

Evertjan. said:
Lupus wrote on 31 dec 2006 in microsoft.public.inetserver.asp.general:


Meseems you will have to explain what it does.
In general we do not use apache.

Possibly this is the effect you want:

========http://www/mypage.html ============

<% ' vbscript
response.redirect "/page2.php?page=mypage"
%>

===========================================

What exactly would you expect this to do in an .HTML file? Unless you
mapped the .html extension to asp.dll, to process files with that extension
as server-side script, the correct answer would be "nothing".


-Mark


If you want to redirect from nonexisting pages,
I suggest from a specified [even nonexisting] directory,
you could write code in te dedicated 404.asp page
redirecting those calls and selecting the pagename as
querystring.

However, this can be better done as a server.transfer,
where the original virtual calling string
is available in a session variable.
[do not forget to clear the session variable
after extraction of the page name,
or do not use it elswhere in the session]

============= /404.asp ====================
<%
qstr = lcase(Request.ServerVariables("QUERY_STRING"))
if instr(qstr,":80/virtualdirectory/")>0 then
session("qstr")=qstr
server.transfer "/anydirectory/page.php"
end if
%>
<html>
.....
This is our 404 page.<br>
The page you want:<br>
<%=qstr%><br>
does not exist.
</html>
==========================================
 
E

Evertjan.

Mark McGinty wrote on 01 jan 2007 in
microsoft.public.inetserver.asp.general:
What exactly would you expect this to do in an .HTML file?
Unless you
mapped the .html extension to asp.dll, to process files with that
extension as server-side script, the correct answer would be
"nothing".

True. My mistake, read: http://www.??.??/mypage.asp
IIS can remap [about?] any extention to be read by the asp interpreter.


============= /404.asp ====================
<%
qstr = lcase(Request.ServerVariables("QUERY_STRING"))
if instr(qstr,":80/virtualdir/")>0 then
session("qstr")=qstr
server.transfer "/anydirectory/page.php"
[..]

The .php, could be anything, I prefer page.asp

However, my real [in my view] answer was this use of 404.asp.
The extention of the nonexisitng [=virtual] pages does not matter here,
the asp interpereater is always "on".

The page.asp could be something like this:
[on my site, even Google sees this page as 110 different ones]

=========== /anydirectory/page.asp ================
<html>
<head>
.....
</head>
<body>
<% if instr(session("qstr"),"/virtualdir/xxx.html")>0 then %>
<b>This</b> is the content of xxx .............
<% elseif instr(session("qstr"),"/virtualdir/blah.qrs")>0 then %>
<b>This</b> is the content of blah .............
<% elseif instr(session("qstr"),"/virtualdir/otherext.asp")>0 then %>
<b>This</b> is the content of <%=session("qstr")%>:
..............
<% else %>
Page not found [404]
</body>
</html>
<%
session("qstr") = ""
response.end
end if
session("qstr") = ""
%>
<br>General footer [except for not found 404] .........
</body>
</html>
=====================================================

To make it really perfect, you would have to make dynamic headers
of the 200 and 404 kind.
 
L

Lupus

Hello all,

Thanks for all your responses...

The thing I do on apache is a very common trick which is quite easy to
set up. I'm not sure it has to be so difficult on IIS (at least, I hope
so)

It doesn't really have a functional purpose, it can only make the URL
more attractive or easier to use.

This is the code I need to put into .htaccess file :
<IfModule mod_rewrite.c>
Options +FollowSymlinks
RewriteEngine on
RewriteRule ^(.*)\.html$ index.php?setpage=$1 [nc]
</IfModule>

Result: each *.html request in the URL is "translated" discretely into
index.php?setpage=pagename
In my case, index.php processes CMS-based pages and opens the page with
the name "pagename"

I works as good without the htaccess code, but you'll get this in the
URL :
http://www.domain.com/index.php?setpage=aboutus
http://www.domain.com/index.php?setpage=contactus
http://www.domain.com/index.php?setpage=guestbook

Using the rewrite rule, the URL looks like this :
http://www.domain.com/aboutus.html
http://www.domain.com/contactus.html
http://www.domain.com/guestbook.html


I'll give another example :
Take for example: http://www.php.net/strptime

You might think that the webbrowser has a directory "strptime" which
responds, but in reality it's the "rewrite rule" which converts the URL
discretely into http://be2.php.net/manual/en/function.strptime.php

Result : If I need the reference page of the strlen-function in PHP, I
know I can type "php.net/strlen" and I don't need to type
be2.php.net/manual/en/function.strlen.php.

Yet another example :
http://www.hotscripts.com/Detailed/50145.html

hotscripts is a databasedriven website, so I presume they don't need to
create a .html file for each item in the database. The above URL is
probably translated into something like : detail.php?item=50145.

I'm using a commercial webhosting server, and I don't think I can
access the settings for 404 errors. I was hoping IIS has a similar way
for doing URL rewriting...



Kind regards, and Happy newyear !
Mathew


Evertjan. schreef:
Mark McGinty wrote on 01 jan 2007 in
microsoft.public.inetserver.asp.general:
What exactly would you expect this to do in an .HTML file?
Unless you
mapped the .html extension to asp.dll, to process files with that
extension as server-side script, the correct answer would be
"nothing".

True. My mistake, read: http://www.??.??/mypage.asp
IIS can remap [about?] any extention to be read by the asp interpreter.


============= /404.asp ====================
<%
qstr = lcase(Request.ServerVariables("QUERY_STRING"))
if instr(qstr,":80/virtualdir/")>0 then
session("qstr")=qstr
server.transfer "/anydirectory/page.php"
[..]

The .php, could be anything, I prefer page.asp

However, my real [in my view] answer was this use of 404.asp.
The extention of the nonexisitng [=virtual] pages does not matter here,
the asp interpereater is always "on".

The page.asp could be something like this:
[on my site, even Google sees this page as 110 different ones]

=========== /anydirectory/page.asp ================
<html>
<head>
....
</head>
<body>
<% if instr(session("qstr"),"/virtualdir/xxx.html")>0 then %>
<b>This</b> is the content of xxx .............
<% elseif instr(session("qstr"),"/virtualdir/blah.qrs")>0 then %>
<b>This</b> is the content of blah .............
<% elseif instr(session("qstr"),"/virtualdir/otherext.asp")>0 then %>
<b>This</b> is the content of <%=session("qstr")%>:
.............
<% else %>
Page not found [404]
</body>
</html>
<%
session("qstr") = ""
response.end
end if
session("qstr") = ""
%>
<br>General footer [except for not found 404] .........
</body>
</html>
=====================================================

To make it really perfect, you would have to make dynamic headers
of the 200 and 404 kind.
 
E

Evertjan.

Lupus wrote on 01 jan 2007 in microsoft.public.inetserver.asp.general:

[Please do not toppost on usenet]
hotscripts is a databasedriven website, so I presume they don't need to
create a .html file for each item in the database. The above URL is
probably translated into something like : detail.php?item=50145.

I don't think you should expect all nice quirks of one system to be
implemented in the other. If there are no diferences, what would be the
sense of different systems, but the pricing?

I think I showed you that is can easily be done in ASP code.

This NG really is not about IIS, there are other NG's for that, but about
ASP, so I showed you the, I mean an, ASP way.
I'm using a commercial webhosting server, and I don't think I can
access the settings for 404 errors. I was hoping IIS has a similar way
for doing URL rewriting...

My sites on my webhost have the possibility of a dedicated 404.asp page.
I make extensive use of them.

If you choose a webhost, choose a good one within your means, methinks
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,812
Messages
2,569,694
Members
45,478
Latest member
dontilydondon

Latest Threads

Top