Apache decodiert Zeichen erst NACH 301 - warum nicht gleich?
Verfasst: 15.10.2009 12:16
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!
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!