Gunnar Bittersmann: Rewrite und PHP

Hello out there!

Ich mache eine Weiterleitung

RewriteEngine On  
RewriteRule foo foo.php5

Die Weiterleitung funktioniert auch, allerdings wird beim Aufruf von 'http://example.net/foo' nicht PHP ausgeführt. Was muss ich noch tun?

(Beim Aufruf von 'http://example.net/foo.php5' wird PHP ausgeführt.)

See ya up the road,
Gunnar

--
“Remember, in the end, nobody wins unless everybody wins.” (Bruce Springsteen)
  1. Hello out there!

    Ich mache eine Weiterleitung

    RewriteEngine On

    RewriteRule foo foo.php5

    
    >   
    > Die Weiterleitung funktioniert auch, allerdings wird beim Aufruf von 'http://example.net/foo' nicht PHP ausgeführt. Was muss ich noch tun?  
    >   
    > (Beim Aufruf von 'http://example.net/foo.php5' wird PHP ausgeführt.)  
    >   
    > See ya up the road,  
    > Gunnar  
      
    Falls PHP als CGI läuft, muss noch der passende MIME-Typ angegeben werden:  
    AddType application/x-cgi-php .php5
    
    1. Hello out there!

      Auf den Hinweis

      (Beim Aufruf von 'http://example.net/foo.php5' wird PHP ausgeführt.)

      ist das wohl unpassend:

      Falls PHP als CGI läuft, muss noch der passende MIME-Typ angegeben werden:
      AddType application/x-cgi-php .php5

      See ya up the road,
      Gunnar

      --
      “Remember, in the end, nobody wins unless everybody wins.” (Bruce Springsteen)
  2. Hi,

    [...] allerdings wird beim Aufruf von 'http://example.net/foo' nicht PHP ausgeführt.

    Sprich: Du bekommst stattdessen den PHP-Quelltext von foo.php5 geliefert?
    Das dürfte, soweit ich deine Angaben übersehe, _eigentlich_ nicht passieren...

    Nur sicherheitshalber und um das Glaskugel-Zerrbild etwas schärfer zu machen:
    Hast du schonmal

    RewriteRule bar.php5 foo.php5

    ausprobiert und dann

    http://example.net/bar.php5

    aufgerufen?

    Und - vielleicht folgendes noch - da du ja Beispielnamen angegeben hast:
    Enthält die reale URL / der reale PHP-Dateiname noch einen Verzeichnispfad?
    (Weil dann ggf. noch die entsprechende RewriteBase angegeben werden müsste.)

    Gruß,

    Sancho

    1. Hello out there!

      Sprich: Du bekommst stattdessen den PHP-Quelltext von foo.php5 geliefert?

      Genau so _war’s_.

      Das dürfte, soweit ich deine Angaben übersehe, _eigentlich_ nicht passieren...

      Du konntest nicht übersehen, was ich _nicht_ angegeben hatte ...

      Nur sicherheitshalber und um das Glaskugel-Zerrbild etwas schärfer zu machen:

      Glaskugel? Zerrbild?? ;-)

      Hast du schonmal
      RewriteRule bar.php5 foo.php5
      ausprobiert und dann
      http://example.net/bar.php5
      aufgerufen?

      Ging.

      RewriteRule bar.quz foo.php5 ⇒ http://example.net/bar.quz ging auch. Hm ...

      RewriteRule bar foo.php5 ⇒ http://example.net/bar ging auch. Huch??

      Nun dämmerte es mir. Ich hab Options +MultiViews gesetzt. Und das hat wohl Vorrang vor einer RewriteRule.

      Und MultiViews beißt sich auf diesem Server mit der Ausfährung von PHP (mein Thread Multiviews und PHP). Deshalb ja auch die Weiterleitung.

      MultiViews ausgeschaltet:

      <Files foo*>  
      Options -MultiViews  
      </Files>  
      RewriteEngine On  
      RewriteRule foo foo.php5
      

      und schon geht’s.

      Danke, irgendwie hat mir dein Posting den nötigen Schubs gegeben, in die richtige Richtung zu denken.

      See ya up the road,
      Gunnar

      --
      “Remember, in the end, nobody wins unless everybody wins.” (Bruce Springsteen)
      1. Hi,

        Glaskugel? Zerrbild?? ;-)

        Der Hinweis auf MultiViews und den thread war genau das, was ich nicht übersah (im Sinne von 'überschaute') - daher erschien mir deine Beschreibung eines trotz richtig gesetzter Direktiven unerwartet funktionierenden Apache-rewrite-Moduls als ein Glaskugel-Zerrbild ;)

        Umso mehr freuts mich, dass der 'Wurf ins Blaue' helfen konnte.

        Einen angenehmen Abend noch,

        Sancho

      2. echo $begrüßung;

        Danke, irgendwie hat mir dein Posting den nötigen Schubs gegeben, in die richtige Richtung zu denken.

        Vielleicht noch ein Schubs für die Zukunft: mod_rewrite kennt auch die Anweisungen RewriteLog und RewriteLogLevel. Damit wird es veranlasst, jeden Berechnungsschritt zu dokumentieren. Allerdings können diese Anweisungen nur in der globalen Server-Konfiguration oder in der Konfiguration virtueller Hosts gesetzt werden.
        Den Provider-Server wird man nicht umkonfigurieren dürfen, aber man kann ja das Problem mit einem gleich konfigurierten Labor-Server nachzubilden versuchen.
        Ach ja, die Log-Einträge sind nicht unbedingt einfach zu lesen, und man kommt damit nicht nur dem Fehler auf die Spur, man erkennt möglicherweise auch noch, welchen Aufwand mod_rewrite betreiben muss, um solch eine Umschreiberei durchzuführen.

        echo "$verabschiedung $name";

  3. Hallo,

    was sagt der Provider durch Support/in den FAQs dazu?

    Kannst Du vielleicht eine Methode ohne mod_rewrite nutzen, wie http://de.wikibooks.org/wiki/Websiteentwicklung:_PHP:_Konfiguration#Pseudo-URLs_durch_PATH_INFO?

    Gruß aus Berlin!
    eddi