Seite 1 von 1

Apache decodiert Zeichen erst NACH 301 - warum nicht gleich?

Verfasst: 15.10.2009 12:16
von uwe.ha
Hallo,

ich habe - wahrscheinlich wegen meines Apache-Server - folgendes Problem, bzw. seltsames Verhalten:

Es gibt Links auf meine Seite die lauten:
http://www.mysite.de/phpBB/viewtopic.ph ... 26t%3D7321

Richtig (decodiert) lautet der Link eigentlich:
http://www.mysite.de/phpBB/viewtopic.php?f=24&t=7321

In dem problematischen Link sind die Zeichen "?" und "=" und "&"
codiert, also
statt "?" steht dort "%3F"
statt "=" steht dort "%3D"
statt "&" steht dort "%26".

Wenn man nun dem Link
http://www.mysite.de/phpBB/viewtopic.ph ... 26t%3D7321
folgt, wird ein 404-Fehler geliefert, die Seite also nicht gefunden,
weil Apache die codierten Zeichen nicht decodiert.

http://www.rexswain.com/cgi-bin/httpview.cgi sagt (auszugsweise):
> Sending request:
> GET /phpBB/viewtopic.php%3Ff%3D24%26t%3D7321 HTTP/1.1
> Receiving Header:
> HTTP/1.1·404·Not·Found(CR)(LF)

Das seltsame ist, dass wenn man nur
http://mysite.de/phpBB/viewtopic.php%3F ... 26t%3D7321 (ohne www)
im Browser eingibt, erfolgt über meine
RewriteCond %{HTTP_HOST} !^www\.mysite\.de$
RewriteRule ^(.*)$ http://www.mysite.de/$1 [R=301,L]

eine 301-Weiterleitung auf www...., genauer:

http://www.rexswain.com/cgi-bin/httpview.cgi sagt (auszugsweise):
> Sending request:
> GET /phpbb/viewtopic.php%3Ff%3D24%26t%3D7321 HTTP/1.1
> Receiving Header:
> HTTP/1.1·301·Moved·Permanently(CR)(LF)
> Location:·http://www.mysite.de/phpbb/viewtopic.ph ... 21(CR)(LF)

und die Seite wird gefunden, WEIL die WEITERLEITUNG die Zeichen ?, & und
= wieder richtig decodiert.

Oder auch wenn ich
http://www.mysite.de/phpbb/viewtopic.ph ... 26t%3D7321
(mit phpbb statt phpBB) aufrufe, erfolgt über meine Weiterleitung
RedirectMatch 301 ^/phpbb/(.*) http://www.mysite.de/phpBB/$1
ein erfolgreicher Seitenaufruf, weil auch hier DURCH die WEITERLEITUNG
die Zeichen ?, & und
= wieder richtig decodiert werden.

http://www.rexswain.com/cgi-bin/httpview.cgi sagt (auszugsweise):
> Sending request:
> GET /phpbb/viewtopic.php%3Ff%3D24%26t%3D7321 HTTP/1.1
> Receiving Header:
> HTTP/1.1·301·Moved·Permanently(CR)(LF)
> Location:·http://www.mysite.de/phpBB/viewtopic.ph ... 21(CR)(LF)

Warum decodiert Apache diese Zeichen nicht direkt, sondern erst DURCH
die Weiterleitung?
Und vor allem: Wie kann ich dies ändern? ... ist vielleicht bei Apache
irgendeine Funktion "direkt decodieren" ausgeschaltet?

DANKE!