You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users-de@httpd.apache.org by Marcus Reimann <Ma...@reimann-systemberatung.de> on 2006/02/08 21:47:23 UTC

RE: mod_rewrite - alle requests sollen nach www.hostname.com umgeschreiben werden, der originäre Request soll jedoch validiert und ausgeführt werden

Hallo Oliver,

du schreibst:

>I suche eine mod_rewrite Direktive bei der alle Requests des Domainnamen
>hostname.com/irgend/was/skript.pl?irgendwas  nach Hostnamen
www.hostname.com
>umgeschrieben werden.
>Eventuelle Skripte und GGI-Programme sollen aber wie vorgesehen ausgeführt
>werden.
>
>Zum Beispiel:
>
>http://www.hostname.com/oli.php?firstname=Oliver&lastname=Etzel
>wird im Client in die Adresszeile eingetippt.
>Es erscheint aber nach Bearbeitung des PHP-skripts in der Adresszeile
>www.hostname.com. Im Hintergrund soll aber das PHP-Skript oli.php validiert
>und ausgeführt werden.
>
>Wie kann ich das bewerkstelligen?

Wenn das aufgerufene PHP-Skript nur die Parameter entgegen nehmen und
stillschweigend abarbeiten soll, dann sorgst Du einfach dafür, dass
das PHP-Skript während seiner Verarbeitung keine Ausgabe macht (also
kein "echo" oder "printf" oder ähnliches) und ganz am Ende des
Skripts sorgst du dann mit Hilfe der Anweisung "header" dafür, dass
der Browser zurück zur Startseite (http://www.hostname.com) geleitet
wird. Die Lösung hat also nichts mit Hintergrundverarbeitung zu tun.

Beispiel:
<?php

// PHP-Skript arbeitet ganz viel...
// ...

// Am Ende der Verarbeitung Umleitung zur Startseite
header("Location: http://www.hostname.com");
?>

Neben der Umleitung solltest Du dann noch das Caching des Browsers
mit Hilfe passender header-Anweisungen abschalten (vgl. dazu die
URL http://www.php.net/manual/de/function.header.php).

Läßt sich dein Problem damit lösen?

Viele Grüße
 Marcus Reimann
 M. Reimann Systemberatung
 http://www.reimann-systemberatung.de


--------------------------------------------------------------------------
                Apache HTTP Server Mailing List "users-de" 
      unsubscribe-Anfragen an users-de-unsubscribe@httpd.apache.org
           sonstige Anfragen an users-de-help@httpd.apache.org
--------------------------------------------------------------------------


Re: mod_rewrite - alle requests sollen nach www.hostname.com umgeschreiben werden, der originäre Request soll jedoch validiert und ausgeführt werden

Posted by Joerg Behrens <be...@takenet.de>.
Oliver Etzel - GoodnGo.COM (R) schrieb:
> Hallo Marcus,
> 
> Danke vielmals. Das ist kein PHP-Forum.
> Suche eine Lösung vermittels mod_rewrite in der
> Konfigurationsdatei des Apache httpd.conf.

Was niemals so gehen wird. Die URL in der Adresszeile eines Clients kann 
sich nur aendern wenn dieser die Aufforderung erhaelt vom Server(script).

'Ohne Arme keine Kekse 'wie es so schoen heisst.

Gruss
Joerg

--------------------------------------------------------------------------
                Apache HTTP Server Mailing List "users-de" 
      unsubscribe-Anfragen an users-de-unsubscribe@httpd.apache.org
           sonstige Anfragen an users-de-help@httpd.apache.org
--------------------------------------------------------------------------


Re: mod_rewrite - alle requests sollen nach www.hostname.com umgeschreiben werden, der originäre Request soll jedoch validiert und ausgeführt werden

Posted by Lars Eilebrecht <la...@eilebrecht.net>.
According to Oliver:

> I suche eine mod_rewrite Direktive bei der alle Requests des Domainnamen
> hostname.com/irgend/was/skript.cgi?irgendwas  nach Hostnamen
> www.hostname.com
> umgeschrieben werden.
> Eventuelle Skripte und GGI-Programme sollen aber wie vorgesehen ausgeführt
> werden.

Hmmm ... sofern ich richtig verstehe was Du machen willst, würde ich mal
sagen, dass das mittels mod_rewrite definitiv nicht funktioniert.

Das CGI-Skript müsste den Redirect auf die andere Seite liefern
(nachdem es ausgeführt wurde).


ciao...
-- 
Lars Eilebrecht 
lars@eilebrecht.net  

--------------------------------------------------------------------------
                Apache HTTP Server Mailing List "users-de" 
      unsubscribe-Anfragen an users-de-unsubscribe@httpd.apache.org
           sonstige Anfragen an users-de-help@httpd.apache.org
--------------------------------------------------------------------------


Re: Re3: mod_rewrite - alle requests sollen nach www.hostname.com umgeschreiben werden, der origin�re Request soll jedoch validiert und ausgef�hrt werden

Posted by "Oliver Etzel - GoodnGo.COM (R)" <ol...@goodngo.com>.
Hallo Erik,

Ahemm, w�re es dann nicht logischer, wenn das Skript bei fehlenden
Parametern einfach etwas Sinnvolles anstatt M�ll ausgibt?

Oh ja gute Idee



--------------------------------------------------------------------------
                Apache HTTP Server Mailing List "users-de" 
      unsubscribe-Anfragen an users-de-unsubscribe@httpd.apache.org
           sonstige Anfragen an users-de-help@httpd.apache.org
--------------------------------------------------------------------------


Re: Re3: mod_rewrite - alle requests sollen nach www.hostname.com umgeschreiben werden, der originäre Request soll jedoch validiert und ausgeführt werden

Posted by Erik Abele <er...@codefaktor.de>.
On 09.02.2006, at 00:18, Oliver Etzel - GoodnGo.COM (R) wrote:

> Hallo Lars, hallo Joerg, hallo Marcus,
>
> ...
> Für diese Liste ist es vielleicht ganz interessant , das Problem  
> resultiert,
> wenn User in Perl-Skripten sich bis zum Schluss weiterhangeln und  
> dann nach
> getaner Arbeit, sich den letzten URL , bspq.
> http://www.hostname.com/cgi-bin/oli.pl in den Favoriten Speichern,  
> aufgrund
> eines POST request dieses Skript aber Parameter erwartet. Deshalb  
> geben
> solchermassen gecachte URL´s blödsinn als Antwort, da die Parmater  
> fehlen.

Ahemm, wäre es dann nicht logischer, wenn das Skript bei fehlenden  
Parametern einfach etwas Sinnvolles anstatt Müll ausgibt? Das Skript  
könnte doch dann die 'Eingabemaske' zeigen (oder was eben sonst  
normalerweise für die korrekten Parameter sorgt) oder einfach dorthin  
weiterleiten, nicht? Eine POST-Ressource sollte auf auf eine andere,  
gebräuchliche Methode (z.B. GET, HEAD) etwas Sinnvolles liefern.

> Meine Lösung lautet als Weisheit letzter Schluss,  ich lasse alles  
> durch
> eine Anfangsframe á la:
>  </HEAD>
>  <FRAMESET rows="*">
>      <FRAME SRC="./index.htm" NAME="frame_1" FRAMEBORDER="NO"
> marginheight="0" marginwidth="0">
>      </FRAMESET>
> </HTML>
> laufen.

Das halte ich eher für eine unsaubere und unlogische Lösung...

> Als %{HTTP_HOST}Umgebungsvariable wird bei diesem Frame immer die URL
> weitergereicht.

Das glaube ich nicht denn HTTP_HOST wird von Apache mittels des Host- 
Headers (Request) ermittelt und würde dieser nicht den korrekten Host  
sondern eine URL enthalten, wäre VirtualHosting wohl nur schwer  
möglich... ;-)

Das was Du beschreibst ist in der Regel in REQUEST_URI zu finden.

> Gäbe es hier Alternativen?

Es gäbe hier noch SERVER_NAME aber das ist nicht unbedingt das was Du  
suchst...

Cheers,
Erik

Re3: mod_rewrite - alle requests sollen nach www.hostname.com umgeschreiben werden, der origin�re Request soll jedoch validiert und ausgef�hrt werden

Posted by "Oliver Etzel - GoodnGo.COM (R)" <ol...@goodngo.com>.
Hallo Lars, hallo Joerg, hallo Marcus,

Ah, vielen Dank Ich sehe, die mod_rewrite-L�sung der Umschreibung
der zu erhaltenden URL im Sinne eines "URL-Spoofings" -also ohne das die
"wahre" URL-Adresse gezeigt wird, geht so nicht

F�r diese Liste ist es vielleicht ganz interessant , das Problem resultiert,
wenn User in Perl-Skripten sich bis zum Schluss weiterhangeln und dann nach
getaner Arbeit, sich den letzten URL , bspq.
http://www.hostname.com/cgi-bin/oli.pl in den Favoriten Speichern, aufgrund
eines POST request dieses Skript aber Parameter erwartet. Deshalb geben
solchermassen gecachte URL�s bl�dsinn als Antwort, da die Parmater fehlen.

Meine L�sung lautet als Weisheit letzter Schluss,  ich lasse alles durch
eine Anfangsframe � la:
 </HEAD>
 <FRAMESET rows="*">
     <FRAME SRC="./index.htm" NAME="frame_1" FRAMEBORDER="NO"
marginheight="0" marginwidth="0">
     </FRAMESET>
</HTML>
laufen.

Als %{HTTP_HOST}Umgebungsvariable wird bei diesem Frame immer die URL
weitergereicht.
G�be es hier Alternativen?
MfG
Oliver Etzel


> btw: Wof�r soll das Ganze gut sein? Vielleicht gibt es
> eine andere L�sung,

> Wie Lars und Joerg schon schreiben: das geht nicht
> mit mod_rewrite.
>
> Wenn Du die L�sung nicht auf Dein Beispiel mit dem PHP-
> Skript beschr�nkt sehen m�chtest, sondern allgemein f�r
> alle CGI-Skripte g�ltig haben m�chtest, dann mu�t Du
> wohl oder �bel jedes CGI-Skript so anpassen, dass es
> nach der von mir vorgeschlagenen Logik arbeitet?



--------------------------------------------------------------------------
                Apache HTTP Server Mailing List "users-de" 
      unsubscribe-Anfragen an users-de-unsubscribe@httpd.apache.org
           sonstige Anfragen an users-de-help@httpd.apache.org
--------------------------------------------------------------------------


RE: mod_rewrite - alle requests sollen nach www.hostname.com umgeschreiben werden, der originäre Request soll jedoch validiert und ausgeführt werden

Posted by Marcus Reimann <Ma...@reimann-systemberatung.de>.
Hallo Oliver,

Du schreibst:

>Danke vielmals. Das ist kein PHP-Forum.
>Suche eine Lösung vermittels mod_rewrite in der
>Konfigurationsdatei des Apache httpd.conf.

Wie Lars und Joerg schon schreiben: das geht nicht
mit mod_rewrite.

Wenn Du die Lösung nicht auf Dein Beispiel mit dem PHP-
Skript beschränkt sehen möchtest, sondern allgemein für
alle CGI-Skripte gültig haben möchtest, dann mußt Du
wohl oder übel jedes CGI-Skript so anpassen, dass es
nach der von mir vorgeschlagenen Logik arbeitet.

btw: Wofür soll das Ganze gut sein? Vielleicht gibt es
eine andere Lösung, wenn der Zweck klar wird.

Gruß
 Marcus Reimann
 M. Reimann Systemberatung
 http://www.reimann-systemberatung.de


--------------------------------------------------------------------------
                Apache HTTP Server Mailing List "users-de" 
      unsubscribe-Anfragen an users-de-unsubscribe@httpd.apache.org
           sonstige Anfragen an users-de-help@httpd.apache.org
--------------------------------------------------------------------------


Re: mod_rewrite - alle requests sollen nach www.hostname.com umgeschreiben werden, der origin�re Request soll jedoch validiert und ausgef�hrt werden

Posted by "Oliver Etzel - GoodnGo.COM (R)" <ol...@goodngo.com>.
Hallo Marcus,

Danke vielmals. Das ist kein PHP-Forum.
Suche eine L�sung vermittels mod_rewrite in der
Konfigurationsdatei des Apache httpd.conf.


I suche eine mod_rewrite Direktive bei der alle Requests des Domainnamen
hostname.com/irgend/was/skript.cgi?irgendwas  nach Hostnamen
www.hostname.com
umgeschrieben werden.
Eventuelle Skripte und GGI-Programme sollen aber wie vorgesehen ausgef�hrt
werden.

Zum Beispiel:

http://www.hostname.com/Irgendwas.cgi
wird im Client in die Adresszeile eingetippt.
Es erscheint aber nach Bearbeitung des Skripts in der Adresszeile
www.hostname.com. Im Hintergrund soll aber das irgendwas.cgi validiert
und ausgef�hrt werden.

Wie kann ich das bewerkstelligen?

MfG
Oliver Etzel
www.domainfex.com

> // ...
>
> // Am Ende der Verarbeitung Umleitung zur Startseite
> header("Location: http://www.hostname.com");
> ?>
> Viele Gr��e
>  Marcus Reimann



--------------------------------------------------------------------------
                Apache HTTP Server Mailing List "users-de" 
      unsubscribe-Anfragen an users-de-unsubscribe@httpd.apache.org
           sonstige Anfragen an users-de-help@httpd.apache.org
--------------------------------------------------------------------------