contao/test — Issue #2556: URL Auswertung berücksichtigt keine Rewriteregeln
Author: jantheofel
Created: 2011-11-29 09:53:33+00:00
State: open
Labels: Defect, framework

In system/libraries/Environment.php wird die Variable $_SERVER['REQUEST_URI'] ausgewertet um die aktuelle URL zu ermitteln. Diese berücksichtigt jedoch keine Rewrite-Regeln.

Beispiel: Man möchte (wie im Forum öfters angefragt) die News-URLs ohne /items/ anzeigen lassen und setzt dazu folgende RewriteRegel: (Es ist natürlich klar, dass das alleine nicht ausreichend ist

![]()

```
RewriteRule blog/(.*) /blog/items/$1
```

Diese Regel hat jedoch keine Auswirkung auf $_SERVER['REQUEST_URI']. Dadurch kann man keinerlei derartige Rewriteregeln nutzen.

Daher muss man in den Rewrite-Regeln die Umgebungsvariable REQUEST_URI neu setzen, beispielsweise so:

```
RewriteRule blog/(.*) index.php [E=REQUEST_URI:/blog/items/$1,L]
```

In diesem Fall wird aber nicht $_SERVER['REQUEST_URI'] anders gesetzt sondern $_SERVER['REDIRECT_REQUEST_URI'], siehe unten.

Daher sollte in system/libraries/Environment.php der Code ab Zeile 204 wie folgt angepasst werden:

```
if ()empty($_SERVER['REDIRECT_REQUEST_URI']))
{
return $_SERVER['REDIRECT_REQUEST_URI'];
}
elseif (!empty($_SERVER['REQUEST_URI']))
{
return $_SERVER['REQUEST_URI'];
}
else
[...]
```

```

Aus der Apache-Dokumentation zu diesem Thema: "A new batch of environment variables will be initialized for use by a script which has been redirected to. Each new variable will have the prefix REDIRECT_. REDIRECT_ environment variables are created from the CGI environment variables which existed prior to the redirect, they are renamed with a REDIRECT_ prefix, i.e., HTTP_USER_AGENT becomes REDIRECT_HTTP_USER_AGENT. In addition to these new variables, Apache will define REDIRECT_URL and REDIRECT_STATUS to help the script trace"
Quelle: http://httpd.apache.org/docs/2.2/custom-error.html#custom

--- _Originally created on September 21st, 2010, at 04:10pm (ID 2556)_