WP 404 und via htaccess

  • Hallo zusammen,

    ich nutze eine 404.php in meinem Theme um fehlerhafte Links abzufangen und das funktioniert auch wie gewünscht. Nun will ich aber um server load zu sparen, fehlerhafte Grafiken ein eigenes 404-Bild spendieren statt der von WP generierten 404-Seite. Eigentlich sollte das problemlos mit dem:

    Code
    ErrorDocument 404 /smile/smiley_emoticons_404ups.gif

    oder dem:

    Code
    <FilesMatch "\.(gif|jpe?g|png)$"> 
      ErrorDocument 404 /smile/smiley_emoticons_404ups.gif
    </FilesMatch>

    als htaccess-Eintrag machbar sein, WP drängelt sich aber immer dazwischen mit der eigenen 404-Seite und ich weiß nicht, wie ich das verhindern kann. Ich habe das ErrorDocument sowohl in der htaccess im root-Verzeichnis als auch im Ordner der Bilder eingetragen. Laut:
    http://codex.wordpress.org/Creating_an_Er…nd_the_404_Page
    sollte das ja machbar sein.

    Bin für Ideen dankbar!

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

  • Ob der gegebene Code stimmt oder ob man das so spezifisch für Bilder definieren kann, kann ich Dir nicht sagen. Aber wenn es so geht, musst Du es auf jeden Fall *über* den WordPress-htaccess-Code schreiben. Denn die drei WP-Anweisungen sagen im Endeffekt aus, dass alle Aufrufe, die weder auf einen Ordner noch auf eine Datei auf der Platte passen, an die index.php von WP geschickt werden, welche dann ggf. zur internen 404-Seite weiterleitet.

    Einmal editiert, zuletzt von Ammaletu (8. November 2008 um 12:11)

  • Nur ganz kurz noch eine Idee dazu: Ich nehme an, dass nur die Fehlerseite zu definieren nicht reicht. Apache wird dann trotzdem die weiteren Regeln noch durchgehen und dann am Ende doch an WP weiterleiten. Also müsste man die WP-Regeln vielleicht nachbauen: Wenn der Aufruf auf das Bildermuster passt und nicht auf eine vorhandene Datei passt, dann umleiten auf den Fehlersmiley und den 404-Code schicken. Und vor allem danach keine weiteren Regeln mehr abarbeiten. Kriegst Du das so hin oder soll ich mich mal dran probieren?

  • Ich glaube ich weiß was du meinst, aber ich weiß nicht genau wie ich das umsetzen soll. Ich bin übrigens gerade drauf gekommen, dass folgendes:

    Code
    <FilesMatch "\.(gif|jpe?g|png)$"> 
      ErrorDocument 404 /smile/smiley_emoticons_404ups.gif
    </FilesMatch>

    gar nicht funktioniert...

    Derzeit sieht meine "Lösung" so aus:

    Die .htaccess im root macht das:

    Im Ordner wo die umzuleitenden Grafiken liegen, macht eine eigene .htaccess dies:

    Apache Configuration
    ErrorDocument 404 /smile/smiley_emoticons_404ups.gif
    
    
    Options +FollowSymLinks
    RewriteEngine on
    RewriteCond %{REQUEST_URI} !-U
    RewriteRule (.*).gif$ http://www.greensmilies.com/smile/smiley_emoticons_404ups.gif [L]

    Die RewriteRule ist falsch, liefert ein "File not found" und dann greift das ErrorDocument. Ohne die RewriteRule käme die WP eigene 404 Seite. Was müsst ich im root nun deiner Meinung nach anders machen?

  • Ok, ich probier's mal. Aber keine Garantie, dass das folgende wirklich eine gute Lösung ist. Direkt ein profi bin ich mit dem Apache auch nicht. ;-)

    Das einfach über den vorhanden WP-Block schreiben. Es sollte dann folgendes passieren (lokal bei mir klappt es auch): Du setzt erstmal Apache-weit den Smiley als 404-Dokument für alle fehlenden Dateien/Ordner in diesem Ordner und den Unterordnern. Dann wird für alle Bilderaufrufe, bei denen das Bild nicht gefunden werden kann, gleich der 404 geschickt. Die Zeile sieht zwar nach Redirect aus, schickt in meinem Test aber einfach den 404. Möglicherweise kann man das korrekter und eindeutiger ausdrücken, keine Ahnung. Es scheint aber zu gehen.

    Alle anderen Aufrufe gehen weiter an die WordPress-Regel darunter, incl. aller nicht gefunden Nicht-Bilder-Aufrufe. Die kriegen also weiterhin die WP-404-Seite.

  • Jetzt habe ich noch einen weiteren Fall, den ich gerne via 404-Error-Grafik abfangen möchte. Dieser tritt auf wenn Grafiken von mir abgerufen werden, wo hinten an die Dateinamenerweiterung einfach dran geschrieben wird, z.B.:

    grafik.gifsinnlosertextoderwasauchimmer

    Hier greift FilesMatch leider nicht und zeigt die 404-WP-Seite statt der 404-Grafik an. Hast du da noch einen Tipp für mich?

  • Ich kann es Dir gerade nicht im Detail beantworten, aber das würde ich über eine Query machen. Also:

    dateiname.png?whatever

    In der RewriteCondition müsstest Du dann den Query-Teil abfragen. Das sollte hoffentlich gehen, aber mir fehlt im Moment die Zeit, die genaue Syntax zu ergoogeln.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!