2009-05-19 8 views
3

Mit Apache 2 möchte ich meine Website so konfigurieren, dass alle Anforderungen an die Domäne an ein Python-CGI-Skript weitergeleitet werden. Im Grunde, wenn der Benutzer zu http://www.example.com geht, möchte ich das cgi /cgi-bin/cgi.py ausführen. Wenn der Benutzer zu http://www.example.com/index.rss geht, möchte ich /cgi-bin/cgi.py mit /index.rss als Argument ausgeführt werden. Ich habe verschiedene Kombinationen von ScriptAlias ​​und Rewrite ausprobiert und kann nicht scheinen, sie in die richtige Beziehung zu bringen.Mit einem CGI-Skript erfassen alle Anfragen an eine Domäne mit Apache

Antwort

1

(nicht über den korrekten Ablauf sicher mit dem eigenen Frage zu beantworten - aber ...)

Sieht aus wie ich Konflikt mit Script und RewriteRule mit wurde. Am Ende war die Lösung, AddHandler zu verwenden, um eine Beziehung zu erstellen, und dann mod_rewrite zu verwenden, um alles in das CGI zu ziehen. Und RewriteCond, um den Fang von Ressourcen/und/Medien/zu vermeiden. Mein VirtualHost sieht jetzt so aus:

AddHandler cgi-script .cgi 
RewriteEngine on 
RewriteCond %{REQUEST_URI} !^/resources/.*$ 
RewriteCond %{REQUEST_URI} !^/media/.*$ 
RewriteRule ^(.*)$ /cgi-bin/pyblosxom.cgi$1 [L] 

Vielen Dank für Ihre Hilfe Jungs.

0

Obwohl es nicht 100% ist, was Sie suchen, hier ist der .htaccess, den ich für eine alte verlassene Domäne von mir verwende, um Leute richtig umzuleiten. Es leitet im Grunde für jede Datei oder Verzeichnis, die nicht in der lokalen Verzeichnisstruktur gefunden werden. Es liegt an den Skript selbst herauszufinden, was url es hieß:

RewriteEngine On 

#if the request isn't for a file or a directory... 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . index.php 
2

Dies lenkt alle Anforderungen an Ihre Python-Datei. Wenn Sie immer noch Probleme mit dem Skript Alias ​​haben, versuchen Sie den Pass-Through-Flag Zugabe [PT] am Ende der RewriteRule Linie Wenn Sie Standbilder in die Lage sein wollen, zugreifen etc dann diese hinzufügen, bevor die RewriteRule:

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
0

Ich verwendete die Capturing-Rewrite-Regel und es funktionierte zu einem gewissen Grad. Das Problem war, dass die ursprüngliche Abfragezeichenfolge des Anforderungs-URI nicht an das CGI übergeben wurde, wenn $ 1 verwendet wurde. Am Ende habe ich die Aufnahme entfernt und auf ENV ['REQUEST_URI'] in meinem CGI-Skript verwiesen, um Zugang zu erhalten.