Probs mit RewriteEngine

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Probs mit RewriteEngine

    Hi!

    Hab eine Page mit RewriteRules geschrieben (ist allerdings nicht meine Erste - nur diese hier hunzt mich gewaltig!).

    Erstmal die .htaccess-Datei:

    Code:
    RewriteEngine on
    Options +FollowSymLinks
    
    RewriteRule ^emblem/$        emblem/index.php?mid=1
    RewriteRule ^emblem/login$        emblem/index.php?%{QUERY_STRING}&mid=1&login=1
    RewriteRule ^emblem/content/(.*)/$        emblem/index.php?%{QUERY_STRING}&menue=$1
    RewriteRule ^emblem/admin/(.*)/$        emblem/admin/$1.php?%{QUERY_STRING}
    Hier hab ich nen Link, der z.B. so ausschaut:

    Code:
    <a href='/emblem/admin/css?path=$path&mid=$mid'>Homepage-Setup</a>
    So. Auf meinem Localhost (Win) wird das richtig interpretiert und es öffnet sich die Datei /emblem/admin/css.php?path=unterverzeichnis&...

    Wenn ich das ganze Paket allerdings auf meinen Linux-Server stelle, dann findet er die Seite erst dann, wenn ich den Link wie folgt umändere:

    Code:
    <a href='/emblem/admin/css/?path=$path&mid=$mid'>Homepage-Setup</a>
    Versteht ihr, warum das so ist? Gibts da Abhilfe in der .htaccess-Datei oder muss ich jetzt ALLE PHP-Seiten umschreiben? Mit der 2.Pfadangabe kann übrigens Windows wiederum nix anfangen...

    HILFE!!!

    Danke schonmal für euer Feedback.

    LG, Citral

  • #2
    naja. in deiner regel ist ja auch ein / am ende drin. wenn du das nicht angibst, findet er nichts. ist ja auch logisch. oder?

    mache einfach aus dem letzten / ein [/]{0,1} und es sollte klappen.
    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


    Kommentar


    • #3
      Hi!

      Also erstmal danke für´s Feedback - hat leider nix gebracht.

      Ich hab jetzt mal folgende 2 Testlinks:

      PHP-Code:
      echo ("<a href='/emblem/admin/css?menue=$_REQUEST[menue]/'>link1</a>");
      echo (
      "<a href='/emblem/admin/css/?menue=$_REQUEST[menue]/'>link2</a>"); 
      Schreibe ich in die .htaccess die Zeile
      Code:
      RewriteRule ^emblem/admin/(.*)[/]{0,1}$        emblem/admin/$1.php?%{QUERY_STRING}
      dann funktioniert das weder am Localhost, noch am Linux-Server.

      Steht in der .htaccess die Zeile
      Code:
      RewriteRule ^emblem/admin/(.*)$        emblem/admin/$1.php?%{QUERY_STRING}
      dann bekomm ich am Localhost einen "Internal Server Error" und am Linux-Server "Seite nicht gefunden".

      Steht in der .htaccess aber die Zeile
      Code:
      RewriteRule ^emblem/admin/(.*)/$        emblem/admin/$1.php?%{QUERY_STRING}
      dann funktioniert am Localhost nur "link1", am Linux-Server allerdings nur "link2"!!!

      Kann das was mit dem Rootverzeichnis zu tun haben?

      Am Localhost ist mein Root "htdocs" (da liegt die .htaccess drin) und verweist auf den Unterordner "emblem".

      Am Linux-Server liegt das Rootverzeichnis (ab FTP-Login) auf /www/home > da liegt die .htaccess Datei. Und diese verweist auf den Unterordner "emblem" (und dann in Folge >>> emblem/admin).
      Hab allerdings auch schon in allen Varianten versucht, den Pfad /www/home irgendwie einzubauen - bringt aber garnix.

      Bitte um Support - ich seh den Wald vor lauter Bäumen nicht mehr.

      Danke, LG, Citral
      Zuletzt geändert von Citral666; 30.07.2004, 12:15.

      Kommentar


      • #4
        Original geschrieben von Citral666
        PHP-Code:
        echo ("<a href='/emblem/admin/css?menue=$_REQUEST[menue]/'>link1</a>");
        echo (
        "<a href='/emblem/admin/css/?menue=$_REQUEST[menue]/'>link2</a>"); 
        [/B]
        nur mal am rande .... was haben wir gelernt, wenn wir array in einem string einbinden wollen?

        richtig. niemals direkt reinschreiben, sondern den string beenden, mit punkt das array einbinden und mit einem weiterem punkt den string fortsetzen.


        was dein RWE problem betrifft, so solltest du das mal einfach testen.

        Code:
        RewriteEngine on
        Options +FollowSymLinks
        
        RewriteRule ^emblem[/]{0,1}$                dummy.php?%{QUERY_STRING}&p1=$1&p2=$2&p3=$3&p4=$4
        RewriteRule ^emblem/login[/]{0,1}$          dummy.php?%{QUERY_STRING}&p1=$1&p2=$2&p3=$3&p4=$4
        RewriteRule ^emblem/content/(.*)[/]{0,1}$   dummy.php?%{QUERY_STRING}&p1=$1&p2=$2&p3=$3&p4=$4
        RewriteRule ^emblem/admin/(.*)[/]{0,1}$     dummy.php?%{QUERY_STRING}&p1=$1&p2=$2&p3=$3&p4=$4
        und in die dummy.php (im webroot speichern) kommt folgendes .....

        PHP-Code:
        echo '<pre>';
        print_r($_GET);
        echo 
        '</pre>'
        ausgabe?
        INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


        Kommentar


        • #5
          ok, die array-sache: 1:0 für dich
          Aber weisst eh - man lernt sich vieles falsch an und da ist´s dann nicht so leicht mit umgewöhnen.

          Zum eigentlichen Thema:

          Variante 1:
          Code:
          RewriteRule ^emblem/admin/(.*)[/]{0,1}$     emblem/admin/$1.php?%{QUERY_STRING}
          wenn der Link /emblem/admin/css?id=1 lautet, dann findet er die Datei css.php bzw. den Ordner admin nicht.


          Variante 2:
          Code:
          RewriteRule ^emblem/member/(.*)[/]{0,1}$     emblem/admin/$1.php?%{QUERY_STRING}
          wenn der Link /emblem/member/css?id=1 lautet, dann passt alles (lokal und am Server).

          Also irgendwie dürfte es da aufgrund irgendeiner Regel Schwierigkeiten geben, wenn der rewrite-Pfad einen wirklich existrierenden Pfad enthält oder so... Kannst du dir (mir) das erklären?

          Aber generell hast du mir schon den richtigen Hint gegeben, von wegen mal alles ausgeben lassen, was da so mitgeschickt wird - vielen Dank.

          LG, Citral

          Kommentar


          • #6
            hast du das auch mal mit dem test gemacht, welchen ich dir vorgeschlagen habe?

            also alles auf diese eine dummy.php - datei zu senden.
            INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


            Kommentar


            • #7
              Hab ich gemacht. Hier die Auswertung:

              BEISPIEL 1
              dummy.php liegt im Root (gleichauf mit .htaccess)

              Code:
              RewriteRule ^emblem/admin/(.*)[/]{0,1}$     dummy.php?%{QUERY_STRING}&p1=$1&p2=$2&p3=$3&p4=$4
              Link: http://localhost/emblem/admin/css

              Ausgabe:
              PHP-Code:
              Array
              (
                  [
              p1] => css
                  
              [p2] => 
                  [
              p3] => 
                  [
              p4] => 

              Link: http://localhost/emblem/admin/css?id=1

              Ausgabe:
              PHP-Code:
              Array
              (
                  [
              id] => 1
                  
              [p1] => css
                  
              [p2] => 
                  [
              p3] => 
                  [
              p4] => 


              BEISPIEL 2
              dummy.php liegt im Verzeichnis emblem/admin/

              Code:
              RewriteRule ^emblem/admin/(.*)[/]{0,1}$     emblem/admin/dummy.php?%{QUERY_STRING}&p1=$1&p2=$2&p3=$3&p4=$4
              Link: http://localhost/emblem/admin/css

              Ausgabe:
              PHP-Code:
              Array
              (
                  [
              p1] => dummy.php
                  
              [p2] => 
                  [
              p3] => 
                  [
              p4] => 

              Link: http://localhost/emblem/admin/css?id=1

              Ausgabe:
              PHP-Code:
              Array
              (
                  [
              id] => 1
                  
              [p1] => dummy.php
                  
              [p2] => 
                  [
              p3] => 
                  [
              p4] => 

              BEISPIEL 3
              dummy.php liegt im Verzeichnis emblem/test/

              Code:
              RewriteRule ^emblem/admin/(.*)[/]{0,1}$     emblem/test/dummy.php?%{QUERY_STRING}&p1=$1&p2=$2&p3=$3&p4=$4
              Link: http://localhost/emblem/admin/css

              Ausgabe:
              PHP-Code:
              Array
              (
                  [
              p1] => css
                  
              [p2] => 
                  [
              p3] => 
                  [
              p4] => 

              Link: http://localhost/emblem/admin/css?id=1

              Ausgabe:
              PHP-Code:
              Array
              (
                  [
              id] => 1
                  
              [p1] => css
                  
              [p2] => 
                  [
              p3] => 
                  [
              p4] => 

              Warum ist das so????

              Danke für deine Geduld

              Kommentar


              • #8
                wie ich das sehe, tickt nur Bsp2 aus der reihe.

                da hast du aber auch ein verzeichnis auf dem server, welches du gleichermaßen via RWE ansprechen willst.

                wenn du das unterlässt, sollte es wieder passen.

                ansonsten habe ich auch keine weitere idee (im moment zumindest) .....
                INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                Kommentar


                • #9
                  Original geschrieben von Citral666
                  Also irgendwie dürfte es da aufgrund irgendeiner Regel Schwierigkeiten geben, wenn der rewrite-Pfad einen wirklich existrierenden Pfad enthält oder so...
                  ja, das ist definitiv so.

                  die MultiViews-option deaktivieren kann u.U. helfen.
                  I don't believe in rebirth. Actually, I never did in my whole lives.

                  Kommentar


                  • #10
                    ok - danke Leute - hab wieder ne ganze Menge gelernt.

                    Schönes WE!
                    LG, Citral

                    Kommentar

                    Lädt...
                    X