mod_rewrite problem

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

  • mod_rewrite problem

    folgende situation:
    Grundverzeichnis der .htaccess Datei ist http://localhost/screencultureCMS2/
    ich möchte jetzt alles was daran noch angehängt wird als eine get variable an die url http://localhost/screencultureCMS2/index.php schicken dafür hatte ich mir folgende Regel geschrieben
    RewriteRule ^/?(.*)$ index.php?url=$1 [L]

    leider wird wenn ich $_GET in php ausgebe index.php angezeigt, aber wo kommt die her? nirgends in der url kommt der ausdruck vor.
    Wenn ich in die Regel mehrere Unterverzeichnisse einbaue funktioniert es, ich möchte aber nunmal den kompletten angehängten string haben.

  • #2
    Warum willst du das unbedingt als GET-Parameter übergeben? Warum nicht direkt aus $_SERVER['REQUEST_URI'] auslesen?

    Kommentar


    • #3
      *move* ins XAMP-Forum

      Deine Umleitung wird mehrmals durchlaufen, bis die Maximalanzahl erreicht ist. Deine URL wird also beim ersten Durchlauf in index.php umgewandelt und dann wieder und wieder, wobei die URL dann natürlich schon index.php ist und dadurch steht auch nur das im GET-Parameter drin. Bau zusätzlich eine RewriteCond davor oder eine Ignorier-Regel:
      Code:
      RewriteRule !^index\.php$ - [C]
      [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
      Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
      Super, danke!
      [/COLOR]

      Kommentar


      • #4
        Zitat von h3ll Beitrag anzeigen
        Warum willst du das unbedingt als GET-Parameter übergeben? Warum nicht direkt aus $_SERVER['REQUEST_URI'] auslesen?
        kann ich denn damit auch "unterverzeichnisse" auslesen? da müsste doch dann nen 404 kommen.
        ich möchte für das cms was ich programmiere eine struktur basteln, mit der ich über die url angeben kann, welche module geladen werden sollen.
        Module die in der Url als "Unterverzeichnis" angegeben sind werden in das darüberliegende hineingeladen.
        Beispiel
        http:/localhost/screencultureCMS/Main-a-b-c/News-d-e-f/
        Die angehängten Buchstaben mit Bindestrichen stellen Variablen dar, die an die einzelnen Module übergeben werden.
        Daher sollte es möglich sein mehr oder weniger beliebig viele Module zu laden.
        Ich hoffe ich hab das halbwegs verständlich formuliert vllt bin ich ja auch voll auf dem Holzweg und ihr könnt mich eines besseren belehren.

        Kommentar


        • #5
          URL
          Code:
          http://example.org/Deutschland/Berlin
          .htaccess
          Code:
          RewriteEngine On
          RewriteCond %{REQUEST_FILENAME} -s [OR]
          RewriteCond %{REQUEST_FILENAME} -l [OR]
          RewriteCond %{REQUEST_FILENAME} -d
          RewriteRule ^.*$ - [NC,L]
          RewriteRule ^.*$ index.php [NC,L]
          index.php
          PHP-Code:
          $nav explode('/'trim(parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH), '/'));

          print_r($nav);
          // Array
          // (
          //     [0] => Deutschland
          //     [1] => Berlin
          // ) 

          Kommentar


          • #6
            boah vielen dank das funktioniert super, allerdings wird mir dort noch der order ausgegeben in dem sich die index.php befindet, diesen könnte ich mit php rausfiltern, da ich das system aber unabhängig vom verzeichnis programmieren will, würde ich dies gerne vorher irgendwie rausfiltern, ist das möglich?

            Kommentar


            • #7
              Zitat von King Lui* Beitrag anzeigen
              boah vielen dank das funktioniert super, allerdings wird mir dort noch der order ausgegeben in dem sich die index.php befindet, diesen könnte ich mit php rausfiltern, da ich das system aber unabhängig vom verzeichnis programmieren will, würde ich dies gerne vorher irgendwie rausfiltern, ist das möglich?
              Du kannst ja in einer Config-Datei festlegen, in welchem öffentlichen Pfad sich die Applikation befindet.

              Oder du ermittelst ihn mittels dem Document Root:
              PHP-Code:
              $base_path str_replace('\\''/'dirname(__FILE__));
              $base_url '/' str_replace($_SERVER['DOCUMENT_ROOT'], ''$base_path);
              echo 
              $base_url
              Zuletzt geändert von h3ll; 01.04.2010, 15:06.

              Kommentar


              • #8
                Danke für den Code leider hat der bei mir nicht so recht funktioniert ich habe das jetzt so geschrieben
                PHP-Code:
                $filepath str_replace($_SERVER['DOCUMENT_ROOT'], ''dirname(__FILE__));
                $subpaths str_replace($filepath.'/'''$_SERVER['REQUEST_URI']); 
                $modules explode('/'$subpaths);
                echo 
                '<pre>'print_r($modules);echo '</pre>'
                wofür hattest du denn in deinem vorherigen Beitrag das parse_url und den trim befehl genutzt? mir ist nich ganz ersichtlich wofür die in dem zusammenhang gebraucht werden.. Trotzdem erstmal vielen Dank das funktioniert jetzt genau so wie ichs mir vorgestellt habe.

                Kommentar

                Lädt...
                X