Seite 1 von 1

http redirecor mit BaseHTTPRequestHandler

Verfasst: Dienstag 24. Juni 2008, 16:55
von jens
Ich brauchte mal eben schnell einen einfachen Redirector um die alte PyLucid trac Adresse (pylucid.net:8080) auf die neue (trac.pylucid.net) umzuleiten. Da die alte trac Version per tracd auf Port 8080 läuft und ich nicht so einfach einen Apache Server auf diesen Port einrichten kann, kommt ein Redirect per html/.htaccess in diesem Falle nicht in Frage...

Also ein bischen Python code:

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import sys
import BaseHTTPServer

# Port auf dem der Server anfragen entgegen nehmen soll.
PORT = 8080
REDIRECT_DOMAIN = "http://DOMAIN.TLD"
LOG_FILE = "redirecor.log"

try:
    f = file(LOG_FILE, "a")
    sys.stderr = f
except Exception, e:
    sys.stderr("Can't redirect stderr into '%s': %s" % (LOG_FILE, e))

class MyHandler(BaseHTTPServer.BaseHTTPRequestHandler):
    def do_GET(self):
        new_location = REDIRECT_DOMAIN + self.path

        self.send_response(301) # Moved Permanently
        self.send_header("Location", new_location)
        self.end_headers()

        self.log_message("redirect to: '%s'", new_location)
        sys.stderr.flush() # In Log Datei schreiben

httpd = BaseHTTPServer.HTTPServer(("", PORT), MyHandler)
httpd.serve_forever()

Verfasst: Samstag 28. Juni 2008, 19:31
von jens
Ich starte das ganze mit "python redirector.py &"... Alles läuft so auch erstmal super... Nach einiger Zeit, funktioniert er allerdings nicht mehr. Per htop sehe ich allerdings, das der Prozess noch läuft...

Jemand einen tipp, woran das liegen könnte?