Seite 1 von 1

Mod_Rewrite Problem

Verfasst: 30.08.2006, 22:06
von pnm
Hallo,

irgendwie habe ich mich ziemlich festgefahren. Ich nutze diese Regel, um einige Tags umzuschreiben. Eigentlich keine große Sache, die hat es aber irgendwie in sich.

Code: Alles auswählen

RewriteEngine On

RewriteRule ^([a-zA-Z0-9_-]+).([0-9]+).html /template.html?AID=$2
RewriteRule ^tag/([0-9]+)/([a-zA-Z0-9_-]+).html$ /tags_display.html?TID=$1&TAG=$2

ErrorDocument 404 /404.html
So, die erste Regel ist für die Anzeige von Artikeln gedacht. Funktioniert auch. Die Zweite listet die Artikel anhand der Tags auf. Soweit alles klar. Ich habe jetzt nur irgendwie ein 404-Problem. Alles leitet irgendwie auf die Artikelseiten zurück. Sende ich in PHP ein 404:

Code: Alles auswählen

    header("HTTP/1.1 404 Not Found");
    header("Location: /404.html");
    die();
wird der folgender Header gesendet:

Code: Alles auswählen

HTTP/1.1 302 Found
Date: Wed, 30 Aug 2006 20:59:37 GMT
Server: Apache
X-Powered-By: PHP/4.3.10-12
Location: /404.html
Transfer-Encoding: chunked
Content-Type: text/html

HTTP/1.1 200 OK
Date: Wed, 30 Aug 2006 20:59:38 GMT
Server: Apache
X-Powered-By: PHP/4.3.10-12
Transfer-Encoding: chunked
Content-Type: text/html
Hat da jemand eine Ahnung? Danke vorab!

grüße

Verfasst:
von

Verfasst: 30.08.2006, 23:00
von Kralle
Deine RewriteRule greift auch bei der 404.html!

Versuch mal das hier (ohne Gewähr):

Code: Alles auswählen

RewriteEngine On

RewriteCond %{HTTP_HOST} !^/404.html$ [NC]
RewriteRule ^([a-zA-Z0-9_-]+).([0-9]+).html /template.html?AID=$2
RewriteRule ^tag/([0-9]+)/([a-zA-Z0-9_-]+).html$ /tags_display.html?TID=$1&TAG=$2 

ErrorDocument 404 /404.html

Re: Mod_Rewrite Problem

Verfasst: 31.08.2006, 00:20
von Babelfisch
pnm hat geschrieben:Sende ich in PHP ein 404:

Code: Alles auswählen

    header("HTTP/1.1 404 Not Found");
    header("Location: /404.html");
    die();
Dein header("Location:...") sende natürlich den Statuscode 302 Found, da brauchst du dich also nicht zu wundern. Wie sollte auch sonst eine gemacht werdem. Dein vorher gesendeter 404er wird dabei einfach überschrieben.

Also entweder weiterleiten (dann aber bitte mit einer absoluten URL) oder 404 senden und eine entsprechende Fehlermeldung ausgeben.

Verfasst:
von
SEO Consulting bei ABAKUS Internet Marketing
Erfahrung seit 2002
  • persönliche Betreuung
  • individuelle Beratung
  • kompetente Umsetzung

Jetzt anfragen: 0511 / 300325-0.


Verfasst: 31.08.2006, 20:51
von Caterham
Deine RewriteRule greift auch bei der 404.html!
Weil vergessen worden ist, in einer regEx den Punkt zu escapen, damit er auch für einen Punkt steht.

Code: Alles auswählen

RewriteEngine On

RewriteRule ^[a-zA-Z0-9_-]+\.([0-9]+)\.html$ /template.html?AID=$1
RewriteRule ^tag/([0-9]+)/([a-zA-Z0-9_-]+)\.html$ /tags_display.html?TID=$1&TAG=$2

ErrorDocument 404 /404.html