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
Content Erstellung von ABAKUS Internet Marketing
Ihre Vorteile:
  • einzigartige Texte
  • suchmaschinenoptimierte Inhalte
  • eine sinnvolle Content-Strategie
  • Beratung und Umsetzung
Jetzt anfragen: 0511 / 300325-0

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

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