Seite 1 von 1

komplette URL als variable übergeben

Verfasst: 16.03.2010, 14:17
von gnark
Hi, ich hab diese rule hier:

RewriteRule ^([^/\.]+)/?$ index.php?url=$1 [L]

die müsste doch eigentlich alles, auch "/" weiterleiten und als $url übergeben?
Funktioniert aber nur, wenn kein "/" drin ist, dann versucht der Apache scheinbar in dem Ordner zu suchen.
Weiss einer was falsch ist, ich will einfach nur $url übergeben bekommen, so: "ordner1/ordner2/trallala"

Danke

Verfasst:
von

Verfasst: 17.03.2010, 14:44
von terrorschaf
Versuchs mal so:
RewriteRule ^domainname/(.*)/?$ index.php [L]

und dann einfach die parameter über REQUEST_URI holen.

Re: komplette URL als variable übergeben

Verfasst: 17.03.2010, 15:44
von Mork vom Ork
gnark hat geschrieben:^([^/\.]+)/?$
[…]
Funktioniert aber nur, wenn kein "/" drin ist
Wenn du als Muster "Textbeginn, gefolgt von einem oder mehreren Zeichen außer Schrägstrich und Punkt, gefolgt von einem oder keinem Schrägstrich und dem Textende" angibst, musst du dich nicht wundern, wenn er anderswo als am Ende einer Zeichenkette keinen Schrägstrich mag.
die müsste doch eigentlich alles, auch "/" weiterleiten
"Alles" geht so: .*

Re: komplette URL als variable übergeben

Verfasst: 17.03.2010, 20:59
von 800XE
gnark hat geschrieben:Hi, ich hab diese rule hier:

RewriteRule ^([^/\.]+)/?$ index.php?url=$1 [L]

die müsste doch eigentlich alles, auch "/" weiterleiten und als $url übergeben?
Funktioniert aber nur, wenn kein "/" drin ist, dann versucht der Apache scheinbar in dem Ordner zu suchen.
Weiss einer was falsch ist, ich will einfach nur $url übergeben bekommen, so: "ordner1/ordner2/trallala"

Danke
Diese Expression DInger sind ..... ich kapier die nicht
ich fang alles ab und mach es in PHP

Code: Alles auswählen

RewriteRule (.*)/$             /?folder=$1
RewriteRule (.*)\.html$        /?file=$1
Das da noch Parameter stehen, ist eine Altlast, die werden garnicht verwendet
ich greif die URL aus den $_SERVER Umgebungsvariablen ab

Code: Alles auswählen

  // abschliesenden Slash an Ordnner anhängen wenn nicht da
  if ( !strpos($_SERVER[REQUEST_URI], ".") )
  {
    if ( strrpos("#".$_SERVER[REQUEST_URI], "/")
            < strlen&#40;$_SERVER&#91;REQUEST_URI&#93;     &#41; &#41; 
    &#123;
      $error="";     $_SERVER&#91;REQUEST_URI&#93;.="/";
    &#125;
  &#125;



  /***********************************************************************
  *   REQUEST analyse
  *                     Sub
  *                         Domain
  *                                 Folder
  *                                        File
  **********************************************************************/
  $REQUEST = strtolower&#40;$_SERVER&#91;HTTP_HOST&#93;&#41;;
  $REQlast = -1;
  $tok     = strtok&#40;$REQUEST, "."&#41;;
  while&#40; $tok &#41;
  &#123;
    $REQlast++;
    $REQlist&#91;4&#93; = $REQlist&#91;3&#93;;
    $REQlist&#91;3&#93; = $REQlist&#91;2&#93;;
    $REQlist&#91;2&#93; = $REQlist&#91;1&#93;;
    $REQlist&#91;1&#93; = $REQlist&#91;0&#93;;
    $REQlist&#91;0&#93; = $tok;
    $tok      = strtok&#40; "." &#41;;
  &#125;
  
  $REQUEST_SUB      = $REQlist&#91;2&#93;;
  $REQUEST_HOST     = $REQlist&#91;1&#93;.'.'.$REQlist&#91;0&#93;;
  $REQUEST_SITE     = $REQlist&#91;2&#93;.' '.$REQlist&#91;1&#93;.' '.$REQlist&#91;0&#93;;
  $REQUEST_DOMAIN   = $REQlist&#91;1&#93;;
  $REQUEST_FOLDER   = $GLOBALS&#91;folder&#93;;
  $REQUEST_FILE     = $GLOBALS&#91;file&#93;;
  $REQUEST_FILEPATH = $_SERVER&#91;REQUEST_URI&#93;;
  $REQUEST_FILE     = $GLOBALS&#91;file&#93;;
  $REQUEST_FOLDER   = $GLOBALS&#91;folder&#93;;



  // Folder und File per Hand ermitteln
  //echo&#40;"<br>#############$_SERVER&#91;REQUEST_URI&#93;#".substr&#40;$_SERVER&#91;REQUEST_URI&#93;, -5&#41;&#41;;
  //echo&#40;"<br>######$REQUEST_FOLDER#$REQUEST_FILE#"&#41;;
  if &#40; ".html"==substr&#40;$_SERVER&#91;REQUEST_URI&#93;, -5&#41; &#41;
  &#123;
    //echo&#40;"<br>$_SERVER&#91;REQUEST_URI&#93;"&#41;;
    $REQUEST_FILE  =substr&#40;$_SERVER&#91;REQUEST_URI&#93;, 0, -5&#41;;
    $pos           =strrpos&#40;$REQUEST_FILE, "/"&#41;;
    $REQUEST_FOLDER=substr&#40;$REQUEST_FILE, 0,$pos&#41;;
    $REQUEST_FILE  =substr&#40;$REQUEST_FILE, 1+$pos&#41;;
    //echo&#40;"<br>#$REQUEST_FOLDER#$REQUEST_FILE#"&#41;;
  &#125;
  else
  &#123;
    $REQUEST_FILE   = "";
    $REQUEST_FOLDER = $_SERVER&#91;REQUEST_URI&#93;;
    //echo&#40;"<br>#$REQUEST_FOLDER#$REQUEST_FILE#"&#41;;
  &#125;
  if &#40; "/"==substr&#40;$REQUEST_FOLDER, 0, 1&#41; &#41; $REQUEST_FOLDER=substr&#40;$REQUEST_FOLDER, 1&#41;;
  if &#40; "/"==substr&#40;$REQUEST_FOLDER, -1  &#41; &#41; $REQUEST_FOLDER=substr&#40;$REQUEST_FOLDER, 0, -1&#41;;
  if &#40; "/"==substr&#40;$REQUEST_FILE, 0, 1&#41; &#41; $REQUEST_FILE=substr&#40;$REQUEST_FILE, 1&#41;;
  if &#40; "/"==substr&#40;$REQUEST_FILE, -1  &#41; &#41; $REQUEST_FILE=substr&#40;$REQUEST_FILE, 0, -1&#41;;