Alt 07.11.2008, 18:31   #1 (permalink)
PostRank: 4
 
Benutzerbild von miccom
 
Registriert seit: 02.07.2006
Ort: Hamburg
Beiträge: 193
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_...d_the_404_Page
sollte das ja machbar sein.

Bin für Ideen dankbar!
miccom ist offline   Mit Zitat antworten
Alt 07.11.2008, 23:33   #2 (permalink)
PostRank: 10
 
Benutzerbild von Ammaletu
 
Registriert seit: 14.07.2007
Beiträge: 2.791
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.
__________________
"Life brings hope and pain, but revenge never brings redemption." || Mein Blog

Geändert von Ammaletu (08.11.2008 um 12:11 Uhr).
Ammaletu ist offline   Mit Zitat antworten
Alt 07.11.2008, 23:36   #3 (permalink)
PostRank: 4
 
Benutzerbild von miccom
 
Registriert seit: 02.07.2006
Ort: Hamburg
Beiträge: 193
Das habe ich eigentlich auch gemacht und ja der Code geht, kannst du auch testen, aber das schräge ist, er geht nur, weil ich darunter eine falsche RewriteRule gesetzt habe die einen "File not found" produziert... habe das hier erläutert:

404-Grafik für Smilies - GreenSmilies
miccom ist offline   Mit Zitat antworten
Alt 08.11.2008, 12:13   #4 (permalink)
PostRank: 10
 
Benutzerbild von Ammaletu
 
Registriert seit: 14.07.2007
Beiträge: 2.791
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?
__________________
"Life brings hope and pain, but revenge never brings redemption." || Mein Blog
Ammaletu ist offline   Mit Zitat antworten
Alt 08.11.2008, 12:55   #5 (permalink)
PostRank: 4
 
Benutzerbild von miccom
 
Registriert seit: 02.07.2006
Ort: Hamburg
Beiträge: 193
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:
Code:
# protect wpconfig.php
<files wp-config.php>
Order deny,allow
deny from all
</files>

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
Im Ordner wo die umzuleitenden Grafiken liegen, macht eine eigene .htaccess dies:

Code:
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?
miccom ist offline   Mit Zitat antworten
Alt 08.11.2008, 15:05   #6 (permalink)
PostRank: 10
 
Benutzerbild von Ammaletu
 
Registriert seit: 14.07.2007
Beiträge: 2.791
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.

Code:
# BEGIN Bilder404
<IfModule mod_rewrite.c>
ErrorDocument 404 /smile/smiley_emoticons_404ups.gif
  <FilesMatch "\.(gif|jpe?g|png)$">
    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule .*\.(gif|jpe?g|png)$ /smile/smiley_emoticons_404ups.gif 
 [R=404,L]
  </FilesMatch>
</IfModule>
# END Bilder404
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.
__________________
"Life brings hope and pain, but revenge never brings redemption." || Mein Blog
Ammaletu ist offline   Mit Zitat antworten
Alt 08.11.2008, 17:30   #7 (permalink)
PostRank: 4
 
Benutzerbild von miccom
 
Registriert seit: 02.07.2006
Ort: Hamburg
Beiträge: 193
Fühl dich gedrückt! Danke dir.
miccom ist offline   Mit Zitat antworten
Alt 08.02.2009, 10:41   #8 (permalink)
PostRank: 4
 
Benutzerbild von miccom
 
Registriert seit: 02.07.2006
Ort: Hamburg
Beiträge: 193
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?
miccom ist offline   Mit Zitat antworten
Alt 09.02.2009, 10:11   #9 (permalink)
PostRank: 10
 
Benutzerbild von Ammaletu
 
Registriert seit: 14.07.2007
Beiträge: 2.791
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.
__________________
"Life brings hope and pain, but revenge never brings redemption." || Mein Blog
Ammaletu ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist aus.
HTML-Code ist aus.
Trackbacks are aus
Pingbacks are aus
Refbacks are aus



Alle Zeitangaben in WEZ +1. Es ist jetzt 19:27 Uhr.


Powered by vBulletin® Version 3.8.4 (Deutsch)
Copyright ©2000 - 2010, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0 | Impressum | WordPress Agentur | Ein Inpsyde.com Projekt