CGI newb... redirect page

S

Sean Berry

Hi there. I am relativly new to Python CGI and need a question answered.

I have made custom 404 error pages and have them in various web directories.

I have not been able to figure out a way to have apache use a file not
within it's own
home directory, so I was going to have a .py file in cgi-bin forward the
user on to the
correct error page.

So I have say,
/usr/www/client1/not-found.shtml
and...
/usr/www/client2/not-found.shtml

I found that cgi.print_environ() gave me the SERVER_NAME, which is what I
want.
But, this is part of a long html formatted string that cgi.print_environ()
returns.

Is there something builtin to deal with these name, value pairs as a
dictionary?
I looked throught the docs, but did not see this functionality.

Also, when I do extract this info... how do I actually do a redirect to a
certain page

Example.
User goes to www.client1.com/page_not_on_server.html
The apache conf file sends the redirect to /cgi-bin/redirect.py
Redirect.py extracts the requesting server, client1.com, then
redirects them to www.client1.com/not-found.shtml.

Thanks for your help.
 
S

Sean Berry

Sean Berry said:
Hi there. I am relativly new to Python CGI and need a question answered.

I have made custom 404 error pages and have them in various web directories.

I have not been able to figure out a way to have apache use a file not
within it's own
home directory, so I was going to have a .py file in cgi-bin forward the
user on to the
correct error page.

So I have say,
/usr/www/client1/not-found.shtml
and...
/usr/www/client2/not-found.shtml

I found that cgi.print_environ() gave me the SERVER_NAME, which is what I
want.
But, this is part of a long html formatted string that cgi.print_environ()
returns.

Okay. I found that usung os.environ yielded the results I was looking for.
Is there something builtin to deal with these name, value pairs as a
dictionary?
I looked throught the docs, but did not see this functionality.

Also, when I do extract this info... how do I actually do a redirect to a
certain page

But, I still don't know how to forward, or redirect a page.

Please help.
 
P

Phil Frost

To do a redirect, you can simply do something such as:

print 'Location: http://new.absloute/url\r\n\r\n'
print '''
This is some html that people will never see, but generally it should
include a link to the target url'''
sys.exit()

Note that to be RFC compliant, you must give an absloute URL, although
relative ones work usually.

Furthermore, there is no reason you should have to write a script to do
redirects for error pages. See the documentation on apache.org:

http://httpd.apache.org/docs-2.0/mod/core.html#errordocument

You can have apache use any local file, or even redirect to another
server.
 
S

Sean Berry

Phil Frost said:
To do a redirect, you can simply do something such as:

print 'Location: http://new.absloute/url\r\n\r\n'
print '''
This is some html that people will never see, but generally it should
include a link to the target url'''
sys.exit()

Note that to be RFC compliant, you must give an absloute URL, although
relative ones work usually.

Furthermore, there is no reason you should have to write a script to do
redirects for error pages. See the documentation on apache.org:

http://httpd.apache.org/docs-2.0/mod/core.html#errordocument

You can have apache use any local file, or even redirect to another
server.


Thanks very much for your response.

The reason that I am using a script is because I tried the line:

ErrorDocument 404 not-found.shtml ... and ...
ErrorDocument 404 /not-found.shtml

There is a not-found.shtml file in each domains home web directory.

This, however, did not work. It reverted to the generic version of
a 404 error page.

I figured that it was trying to look in the apache root directory for the
file, not the root of the domains web directory.

So, using this script, it will forward the user to the correct
not-found.shtml
page.

I tried looking through the apache docs, but did not see anything limiting
what type of alternate could be used.

Anything you can think of that I may be overlooking?

Thanks for your response.
 

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

Forum statistics

Threads
473,769
Messages
2,569,582
Members
45,057
Latest member
KetoBeezACVGummies

Latest Threads

Top