mod_rewrite problem

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • 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?

    Comment


    • #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]

      Comment


      • #4
        Originally posted by h3ll View Post
        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.

        Comment


        • #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
          // ) 

          Comment


          • #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?

            Comment


            • #7
              Originally posted by King Lui* View Post
              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
              Last edited by h3ll; 01-04-2010, 15:06.

              Comment


              • #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.

                Comment

                Working...
                X