Page 1 of 1

RewriteEngine

Posted: 2003-12-17 18:12
by bigapple
Also ich möchte folgendes machen:
wenn man http://www.domain.at/berni/user3 eingibt sollte es mit htaccess auf /berni/h.php?username=user3 geöffnet werden!

Hier die einstellugen des VHOSTS:

Code: Select all

<VirtualHost xx.xxx.xxx.xx>
ServerName www.domain.at
ServerAlias www.domain.at *.domain.at domain.at
DocumentRoot /home/domain/public_html
ErrorLog /home/domain/logs/error_log
CustomLog /home/domain/logs/access_log common
ScriptAlias /cgi-bin/ /home/domain/cgi-bin
<Directory /home/domain/public_html>
Options Indexes IncludesNOEXEC FollowSymLinks
</Directory>
</VirtualHost>
und die htaccess(im berni verzeichnis):

Code: Select all

RewriteEngine On
RewriteRule berni/(.*)$ h.php?username=$1
ERROR-LOG:
[Fri Dec 12 15:55:22 2003] [error] [client xxxxxx] File does not exist: /home/domain/public_html/berni/user3

Was mache ich da falsch???

Re: RewriteEngine

Posted: 2003-12-17 18:29
by oxygen
Fehler im Ansatz. Du solltest lieber ein PHP Script nehmen, statt .htaccess und rewrite zu benutzen.

Re: RewriteEngine

Posted: 2003-12-21 16:14
by bigapple
...denke ich nicht!

Hier ist die ErrorLog

Code: Select all

 - - [17/Dec/2003:20:20:35 +0100] [www.domain.at/sid#80a72d4][rid#81ae034/initial] (3) [per-dir /home/domain/public_html/berni/] strip per-dir prefix: /home/webtrabs/public_html/berni/user3 -> user3
 - - [17/Dec/2003:20:20:35 +0100] [www.domain.at/sid#80a72d4][rid#81ae034/initial] (3) [per-dir /home/domain/public_html/berni/] applying pattern 'berni/(.*)$' to uri 'user3'
 - - [17/Dec/2003:20:20:35 +0100] [www.domain.at/sid#80a72d4][rid#81ae034/initial] (1) [per-dir /home/domain/public_html/berni/] pass through /home/webtrabs/public_html/berni/user3

Re: RewriteEngine

Posted: 2003-12-21 16:56
by dodolin
RewriteRule berni/(.*)$ h.php?username=$1
Wenn du schon im Verzeichnis "berni" bist, dann sollte die Regel eher so aussehen:

RewriteRule (.*)$ h.php...

Ansonsten: Hast du den RewriteLogLevel wirklich auf den höchsten Wert gestellt? Wenn nicht, mach mal. Ich bin mir recht sicher, dass dann noch mehr Infos zu Tage kommen. Meine Vermutung ist, dass:
][rid#81ae034/initial] (3) [per-dir /home/domain/public_html/berni/] applying pattern 'berni/(.*)$' to uri 'user3'
das eben nicht matchen wird.

schaut schon besser aus

Posted: 2003-12-21 17:08
by bigapple
....so jetzt bleibe ich schon mal im verzeichnis :)
jedoch wird der wert nicht übergeben!

RewriteLog Level ist auf 9

den code in einen editor kopieren....ist hier nicht schön dargestellt

Code: Select all

[www.domain.at/sid#80a72d4][rid#81b1034/initial] (3) [per-dir /home/domain/public_html/berni/] strip per-dir prefix: /home/domain/public_html/berni/user3 -> user3
[www.domain.at/sid#80a72d4][rid#81b1034/initial] (3) [per-dir /home/domain/public_html/berni/] applying pattern '(.*)$' to uri 'user3'
[www.domain.at/sid#80a72d4][rid#81b1034/initial] (2) [per-dir /home/domain/public_html/berni/] rewrite user3 -> h.php?username=user3
[www.domain.at/sid#80a72d4][rid#81b1034/initial] (3) split uri=h.php?username=user3 -> uri=h.php, args=username=user3
[www.domain.at/sid#80a72d4][rid#81b1034/initial] (3) [per-dir /home/domain/public_html/berni/] add per-dir prefix: h.php -> /home/domain/public_html/berni/h.php
[www.domain.at/sid#80a72d4][rid#81b1034/initial] (2) [per-dir /home/domain/public_html/berni/] trying to replace prefix /home/domain/public_html/berni/ with /berni/
[www.domain.at/sid#80a72d4][rid#81b1034/initial] (5) strip matching prefix: /home/domain/public_html/berni/h.php -> h.php
[www.domain.at/sid#80a72d4][rid#81b1034/initial] (4) add subst prefix: h.php -> /berni/h.php
[www.domain.at/sid#80a72d4][rid#81b1034/initial] (1) [per-dir /home/domain/public_html/berni/] internal redirect with /berni/h.php [INTERNAL REDIRECT]
[www.domain.at/sid#80a72d4][rid#81b2e3c/initial/redir#1] (3) [per-dir /home/domain/public_html/berni/] strip per-dir prefix: /home/domain/public_html/berni/h.php -> h.php
[www.domain.at/sid#80a72d4][rid#81b2e3c/initial/redir#1] (3) [per-dir /home/domain/public_html/berni/] applying pattern '(.*)$' to uri 'h.php'
[www.domain.at/sid#80a72d4][rid#81b2e3c/initial/redir#1] (2) [per-dir /home/domain/public_html/berni/] rewrite h.php -> h.php?username=h.php
[www.domain.at/sid#80a72d4][rid#81b2e3c/initial/redir#1] (3) split uri=h.php?username=h.php -> uri=h.php, args=username=h.php
[www.domain.at/sid#80a72d4][rid#81b2e3c/initial/redir#1] (3) [per-dir /home/domain/public_html/berni/] add per-dir prefix: h.php -> /home/domain/public_html/berni/h.php
[www.domain.at/sid#80a72d4][rid#81b2e3c/initial/redir#1] (1) [per-dir /home/domain/public_html/berni/] initial URL equal rewritten URL: /home/domain/public_html/berni/h.php [IGNORING REWRITE]

Re: RewriteEngine

Posted: 2003-12-21 17:13
by dodolin
Jetzt hast ne Endlos-Schleife eingebaut, weil (.*) auch auf deine h.php matched und dieser auch ersetzt wird. ;) Musst du also ne Ausnahme definieren oder die h.php in ein anderes Verzeichnis legen.

Re: RewriteEngine

Posted: 2003-12-21 17:57
by bigapple
dodolin wrote:Endlos-Schleife
stimmt *g*

ich kann die datei nicht in einen anderen ordner geben... deshalb muss ich jetzt eine Bedingunge einfügen!

Code: Select all

RewriteEngine On
RewriteBase /berni/
RewriteCond %{REQUEST_URI}  !^/berni/h.php
RewriteRule (.*)$ h.php?username=$1

also mit der log kann ich wieder nicht sehr viel anfangen ... die bedingung müsste aber stimmen..... siehe log ......jedoch werden keine parameter übergeben und die h.php nicht wirklich ausgegeben

Code: Select all

[www.domain.at/sid#80a72d4][rid#81b1034/initial] (3) [per-dir /home/domain/public_html/berni/] strip per-dir prefix: /home/domain/public_html/berni/user3 -> user3
[www.domain.at/sid#80a72d4][rid#81b1034/initial] (3) [per-dir /home/domain/public_html/berni/] applying pattern '(.*)$' to uri 'user3'
[www.domain.at/sid#80a72d4][rid#81b1034/initial] (4) RewriteCond: input='/berni/user3' pattern='!^/berni/h.php' => matched
[www.domain.at/sid#80a72d4][rid#81b1034/initial] (2) [per-dir /home/domain/public_html/berni/] rewrite user3 -> h.php?username=user3
[www.domain.at/sid#80a72d4][rid#81b1034/initial] (3) split uri=h.php?username=user3 -> uri=h.php, args=username=user3
[www.domain.at/sid#80a72d4][rid#81b1034/initial] (3) [per-dir /home/domain/public_html/berni/] add per-dir prefix: h.php -> /home/domain/public_html/berni/h.php
[www.domain.at/sid#80a72d4][rid#81b1034/initial] (2) [per-dir /home/domain/public_html/berni/] trying to replace prefix /home/domain/public_html/berni/ with /berni/
[www.domain.at/sid#80a72d4][rid#81b1034/initial] (5) strip matching prefix: /home/domain/public_html/berni/h.php -> h.php
[www.domain.at/sid#80a72d4][rid#81b1034/initial] (4) add subst prefix: h.php -> /berni/h.php
[www.domain.at/sid#80a72d4][rid#81b1034/initial] (1) [per-dir /home/domain/public_html/berni/] internal redirect with /berni/h.php [INTERNAL REDIRECT]
[www.domain.at/sid#80a72d4][rid#81b2e44/initial/redir#1] (3) [per-dir /home/domain/public_html/berni/] strip per-dir prefix: /home/domain/public_html/berni/h.php -> h.php
[www.domain.at/sid#80a72d4][rid#81b2e44/initial/redir#1] (3) [per-dir /home/domain/public_html/berni/] applying pattern '(.*)$' to uri 'h.php'
[www.domain.at/sid#80a72d4][rid#81b2e44/initial/redir#1] (4) RewriteCond: input='/berni/h.php' pattern='!^/berni/h.php' => not-matched
[www.domain.at/sid#80a72d4][rid#81b2e44/initial/redir#1] (1) [per-dir /home/domain/public_html/berni/] pass through /home/domain/public_html/berni/h.php

Re: RewriteEngine

Posted: 2003-12-21 18:33
by dodolin
Momentan sagt mir der Log auch nicht viel... ;)

Du könntest mal versuchen, die h.php?user=... mit einer absoluten URL, als beginnend mit http://www.domain.example/... aufzurufen, vielleicht ist das besser.

Ebenso solltest du mittels access.log und error.log mal prüfen, ob die h.php aufgerufen wird oder nicht und gegebenenfalls, welche HTTP Codes und Fehlermeldungen dabei entstehen.

Re: RewriteEngine

Posted: 2003-12-21 18:38
by bigapple
sorry ... habe was falsch geschildert!
geht so wie oben beschrieben!!!!

hatte eine falsche h.php datei upgeloadet

DANKE

Re: RewriteEngine

Posted: 2003-12-21 18:39
by dodolin
Cool. Freut mich. ;)

Re: RewriteEngine

Posted: 2003-12-21 19:03
by bigapple
Browser-Problem????

http://www.domain.at/berni/user3/../../hack.php

Wenn ich die Seite im IE bzw. Opera öffne werde ich auf http://www.domain.at/hack.php weitergelietet.

Ich schätze mal, dass dies der Browser automatisch macht (Server-unabhängig). -> STIMMT DAS

Weil wenn das durch das Mod_rewrite erfolgt wäre das sicherlich eine Sicherheitslücke am Server

Re: RewriteEngine

Posted: 2003-12-22 11:28
by dodolin
Ich schätze mal, dass dies der Browser automatisch macht (Server-unabhängig). -> STIMMT DAS
Die Logfiles geben nichts dazu her?

Code: Select all

bash-2.05b$ lynx -dump -head http://www.domain.at/berni/user3/../../hack.php
HTTP/1.0 404 Not Found
Date: Mon, 22 Dec 2003 10:26:20 GMT
Server: Apache/1.3.26 (Unix) mod_fastcgi/2.2.12 PHP/4.2.2 PHP/3.0.18 mod_perl/1
.27 mod_ssl/2.8.10 OpenSSL/0.9.6c
Content-Type: text/html; charset=iso-8859-1
X-Cache: MISS from sklave.dodos.homelinux.net
Proxy-Connection: close
Sieht mir schon eher danach aus, als würden das manche Browser dann selbst so machen. Ansonsten müsste ja ein Redirect o.ä. kommen (Code 3xx) und nicht 404.