Seite 1 von 2

RewriteEngine und Perl-Scripte vertragen sich nicht

Verfasst: 28.03.2007 16:05
von StarWolf3000
Hi, ich hab mal wieder ein Problem mit der RewriteEngine, und zwar folgendes:

In meiner .htaccess hab ich stehen, dass alle Adressen, die nach localhost verweisen stattdessen auf den Namen meines Rechners verweisen. Das hat eine ganze Weile sehr gut funktioniert, bis ich ein Perl-Script starten wollte, was seit dem nicht mehr funktioniert, es kommt immer

Code: Alles auswählen

Forbidden

You don't have permission to access /cgi-bin/file.pl on this server.
Apache/2.0.52 (Win32) PHP/5.0.4 Server at localhost Port 80
Wenn ich die Rewrite*-Anweisungen auskommentiere oder lösche, funktioniert das einwandfrei, aber sobald sie aktiviert sind, kommt der HTTP 403 Forbidden und führt die Scripte nicht aus.

Ich hab zwar einige Zeilen gesehen, die in etwa so aussehen

Code: Alles auswählen

# prevent perl user agent (most often used by santy)
RewriteCond %{HTTP_USER_AGENT} ^lwp.* [NC]
RewriteRule ^.*$ http://localhost/ [R,L]
RewriteCond %{HTTP_REFERER} ^.*$
was allerdings nicht funktioniert.

Gibt es vielleicht Rewrite*-Anweisungen, damit Perl-Scripte wieder ausgeführt werden können?
Verzeichnis: /cgi-bin/, falls jemand eine Lösung parat hat

Verfasst: 28.03.2007 17:21
von Pyramide
Handelt es sich um ein Script das an der Konsole ausgeführt wird oder ein CGI Script? Was für eins? Und bei welchem Rewrite-Befehl genau hört es auf zu funktionieren? Bei dem von dir geposteten?

Verfasst: 28.03.2007 17:33
von StarWolf3000
Es handelt sich dabei um CGI-Scripte, die im Browser ausgeführt werden.

Das zeilenweise Aktivieren der Engine ergab folgendes:

Code: Alles auswählen

# RewriteEngine On
# RewriteBase /
# RewriteCond %{HTTP_HOST} !^$
# RewriteCond %{HTTP_HOST} !^rechner [NC]
# RewriteRule (.*) http://rechner%{REQUEST_URI} [R=301,L]
Ergebnis: Script wird ausgeführt, alles OK, Pfade werden nicht umgeschrieben

1. Änderung: "RewriteEngine On" wird nicht auskommentiert

Code: Alles auswählen

RewriteEngine On
# RewriteBase /
# RewriteCond %{HTTP_HOST} !^$
# RewriteCond %{HTTP_HOST} !^rechner [NC]
# RewriteRule (.*) http://rechner%{REQUEST_URI} [R=301,L]
Ergebnis: Script wird ignoriert, HTTP 403-Meldungen werden beim Aufruf des Scriptes erzeugt, Pfade werden nicht umgeschrieben

2. Änderung: "RewriteEngine" wird auf "Off" gesetzt

Code: Alles auswählen

RewriteEngine Off
# RewriteBase /
# RewriteCond %{HTTP_HOST} !^$
# RewriteCond %{HTTP_HOST} !^rechner [NC]
# RewriteRule (.*) http://rechner%{REQUEST_URI} [R=301,L]
Ergebnis: Script wird ausgeführt, alles OK, Pfade werden nicht umgeschrieben

Also fängt das Problem bereits mit dem Aktivieren der RewriteEngine an.

Verfasst: 28.03.2007 18:11
von Pyramide
Dann sind weiter unten in der .htaccess Datei aber noch andere RewriteRule Anweisungen...

Verfasst: 28.03.2007 18:17
von easygo
Oder sind im Verzeichnis cgi-bin bzw. in anderen Unterebenen
noch weiter .htaccess Dateien am Start? easy

Verfasst: 28.03.2007 18:29
von StarWolf3000
@Pyramide: nein, ich habe nur diese geposteten Rewrite*-Anweisungen drin

@easygo: nur in anderen Ordnern, die nichts mit dem /cgi-bin/ zu tun haben, befinden sich weitere .htaccess-Dateien, im /cgi-bin/ selbst ist keine, genau wie in Unterordnern von /cgi-bin/

Verfasst: 28.03.2007 18:41
von easygo
Ok dann versuchs mal testweise mit der Zeile

Code: Alles auswählen

Options +FollowSymLinks
Wichtig ist nur, dass die Zeile über der Direktive RewriteEngine On
steht und falls das nicht hilft, einfach nochmal melden. easy

Verfasst: 28.03.2007 18:43
von StarWolf3000

Code: Alles auswählen

Options +FollowSymLinks
hab ich bereits in der httpd.conf für den Root gesetzt, wo eben diese .htaccess auch liegt

Verfasst: 28.03.2007 18:45
von easygo
Aha und rewriteOptions steht dort auf ??

Verfasst: 28.03.2007 20:34
von StarWolf3000
rewriteOptions? du meinst AllowOverride?
das steht auf "All" in der httpd.conf