Htaccess: R=404 ergibt 500error

Hallo,

ich möchte, daß automatisch 404 ausgegeben wird, wenn ein bestimmtes Verzeichnis (test) aufgerufen wird. Also setze ich folgendes in die htaccess:

RewriteRule ^test$ - [R=404,L]

Ergibt grundsätzlich immer einen 500 error, und zwar wegen dem „R=404“

Habe Gesamt-Google durchgearbeitet, stehe vor einem Rätsel und weiß nicht mehr weiter. Welche Gründe kann es geben, daß „R=404“ einen 500er erzeugt?

Gruß
Eva

Hallo,

Habe Gesamt-Google durchgearbeitet, stehe vor einem Rätsel und
weiß nicht mehr weiter. Welche Gründe kann es geben, daß
„R=404“ einen 500er erzeugt?

Das steht in der Log-Datei des Apaches. Unter Linux liegt die per default unter /var/log/apache2/error.log.

Grüße,
Moritz

Hi Moritz,

ja natürlich, das naheliegendste ist so fern:

„RewriteRule: invalid HTTP response code for flag ‚R‘“

Er sagt, 404 ist für ‚R‘ nicht gültig? Verstehe ich jetzt überhaupt nicht mehr. Das Internet ist voll von „R=404“

Wie kommt die Kiste denn auf die Idee?

Gruß Eva

Hallo,

„RewriteRule: invalid HTTP response code for flag ‚R‘“

Er sagt, 404 ist für ‚R‘ nicht gültig? Verstehe ich jetzt
überhaupt nicht mehr. Das Internet ist voll von „R=404“

… und voll von workarounds, weil es anscheinend nicht ueberall geht.

http://blog.bradlis7.com/2007/12/04/apache-trick-rew…

sagt:

Update: Apache 2.0 seems to only accept R=3xx, not R=404, so I
think this must only work in 2.2 and up.

Wenn du also einen aelteren Apache hasst, musst du als workaround auf einen nicht-existierende URL intern umleiten. Dann kommt automatisch ein 404 zurueck.

Gruesse,
Moritz

Hi,

in der Tat hab ich Apache 2.0, also liegt es daran.

musst du als workaround auf einen nicht-existierende URL intern umleiten

Aha. Du meinst eine 301-Weiterleitung auf irgendeine Phantasie-Seite, die es gar nicht gibt. Durch einen Umweg doch zum Ziel.

Vielen Dank für diese Lösung!

Gruß
Eva

Hallo,

musst du als workaround auf einen nicht-existierende URL intern umleiten

Aha. Du meinst eine 301-Weiterleitung auf irgendeine
Phantasie-Seite, die es gar nicht gibt. Durch einen Umweg doch
zum Ziel.

Nein. Ein 301er ist extern (d.h. du schickst den Browser ins Leere).
Stattdessen kannst du sofort einen 404er ausliefern, wenn du den redirect intern machst, also so:

# kein R=irgendwas
RewriteRule ^/foo /nonexistant [L]

Damit sieht der Benutzer auch in der Statuszeile seines Browsers, welche URL falsch war.

Gruesse,
Moritz

Hi Moritz,

jetzt hab ich’s endlich begriffen. Die interne Umleitung führt zum Ziel.
Laut Webmastertool akzeptiert das auch Google als 404

Vielen Dank für diese Lösung!

Gruß Eva