Zur Navigation

Redirect für Bilder noch nötig?

1 Martin

Hallo Jörg,
ich habe vor ein paar Jahren mal einen etwas komplexeren redirect-Code bei dir in Auftrag gegeben, bei dem angesichts einer von http auf https umzustellenden Site verschiedene Konstellationen abzudecken waren. Es war etwas komplexer als nur alle http --> https.

Der Code hat gleich zu Beginn auch einen Regelsatz betreffend des Redirects von Bildern, an den ich mich nicht mehr gut erinnere.

Wenn eine solche, sich von http --> https umzustellende Site außerdem auch lauter neue Bilddateinamen jetzt gleichzeitig bekommt, hat sich Nummer 1 (siehe unten) dann erledigt, oder?

Die Bilder zeigen zwar meistens die gleichen Motive, sind so gesehen also meistens "dieselben" geblieben, aber sie sind bearbeitet worden (etwas größer, Kontrast/Farben usw.) und die alten Bilddateien a la "mein-auto.jpg" sind jetzt Bilder a la "mein-rotes-auto-1x.webp" und "mein-rotes-auto-2x.webp" geworden.

Das sind lauter "neue" Bilder und die vorherigen sollen vergessen werden von den Sumas; die neuen ganz neu zu indexieren.

Sieht so aus der htaccess-Code:

RewriteEngine on

# 1. Redirect von http(s)://(www.)domain.de/wp-content/uploads/bilddatei.jpg/jpeg/png/gif
#            nach https://www.domain.de/grafiken/bilddatei.jpg/jpeg/png/gif
# Fall j5: von Sumas indexierte WP-Bilddateien auf neue URLs ohne WP umleiten
RewriteRule ^wp-content/uploads/(.+)\.(jpe?g|gif|png)$ https://www.meinesite.de/grafiken/$1.$2 [R=301,L]

# 2. Redirect von http(s)://(www.)domain.de/index.html 
#            nach https://www.domain.de/
# Fall j4
RewriteCond %{THE_REQUEST} /index\.html
RewriteRule ^index\.html$ https://www.meinesite.de/ [R=301,L]

# 3. Redirect von http(s)://(www.)domain.de/page1.html 
#            nach https://www.domain.de/page1
# Fall j1: alte Links vor Umstellung auf WP
RewriteCond %{THE_REQUEST} \.html
RewriteRule ^(.+)\.html$ https://www.meinesite.de/$1 [R=301,L]

# 4. Redirect von http(s)://domain.de/...
#             und http://(www.)domain.de/...
#            nach https://www.domain.de/...
# Fall j2, alte und neue Links auf Startseite ! und
# Fall j3, neuere Links auf Unterseiten, seit WP
RewriteCond %{HTTP_HOST} !^www\. [OR]
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*)$ https://www.meinesite.de/$1 [R=301,L]

# 5. https://www.domain.de/page1 zeigt Inhalt von page1.html an
# die physisch auf dem Server liegenden .html-Dateien werden vom
# Server herangezogen und dann vom Browser angezeigt
RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule ^(.+)$ $1.html [L]

23.06.2026 22:55

2 Jörg Kruse

Du kannst in der Regel Nr. 1 statt der Weiterleitung ein G-Flag implementieren:

RewriteRule ^wp-content/uploads/(.+)\.(jpe?g|gif|png)$ [G,L]

Dann erhalten Bots sofort einen Status Code 410 "GONE" und werden nicht mehr unnötigerweise erst weitergeleitet, bevor sie an anderer Stelle den Status Code 404 erhalten.

Nach so langer Zeit werden die alten Bild-URLs aber wohl eh schon vergessen worden sein, da sie vermutlich schon lange nirgends mehr eingebunden waren?

24.06.2026 08:29 | geändert: 24.06.2026 08:30

3 Martin

Dann erhalten Bots sofort einen Status Code 410 "GONE" und werden nicht mehr unnötigerweise erst weitergeleitet, bevor sie an anderer Stelle den Status Code 404 erhalten.

Bei der betreffenden Site waren die alten Bilder bislang nie weitergeleitet worden, weder durch Nummer 1 des Codes noch anderswie.

Den uploads-Ordner von WP wird es aber halt dann nicht mehr geben mit der Umstellung von alter auf neuer Site (ohne WP) und mit https.

Nach so langer Zeit werden die alten Bild-URLs aber wohl eh schon vergessen worden sein, da sie vermutlich schon lange nirgends mehr eingebunden waren?

Vergessen von den Sumas?
Von meiner Seite aus hat sich da seit langem jedenfalls nichts mehr getan.

Also im neuen htaccess-Code die Nummer 1 einfach weglassen und den expliziten "gibt's nicht mehr"-Code für die alten WP-uploads-Bilder braucht es nicht?

Einen Anti-Hotlinking-Code (mit Goggle und Co. als Ausnahmen), siehe
https://joergs-forum.de/hotlinking-mit-htaccess-unterbinden-t-5234-1,
habe ich auch noch in der htaccess stehen.
Ist das im Zeitalter von KI noch sinnvoll? Bin außerdem am Überlegen, die unfreundlichen LLM-KI-Bots auszusperren (per robots oder besser htaccess).

24.06.2026 09:59 | geändert: 24.06.2026 10:00

4 Jörg Kruse

Nach so langer Zeit werden die alten Bild-URLs aber wohl eh schon vergessen worden sein, da sie vermutlich schon lange nirgends mehr eingebunden waren?

Vergessen von den Sumas?

Ja, vermutlich. Es sei denn die Bilder sind noch irgendwo anders eingebunden (s.u.)

Also im neuen htaccess-Code die Nummer 1 einfach weglassen und den expliziten "gibt's nicht mehr"-Code für die alten WP-uploads-Bilder braucht es nicht?

Ja, wenn die alten Bilder-URLs nicht mehr gecrawlt werden, kann man die Regel Nr. 1 auch einfach weglassen

Einen Anti-Hotlinking-Code (mit Goggle und Co. als Ausnahmen), siehe
https://joergs-forum.de/hotlinking-mit-htaccess-unterbinden-t-5234-1,
habe ich auch noch in der htaccess stehen.
Ist das im Zeitalter von KI noch sinnvoll?

Das Hotlinking-Verbot zielt ja eher auf menschliche Besucher ab (und indirekt auf den Hotlinker, dessen Webseiten diesen unvollständig angezeigt werden) Solange deine Bilder auf externen Seiten eingebunden sind, ist dieses auch wirksam.

24.06.2026 11:17 | geändert: 24.06.2026 11:17

1 Forenmitglied fand diesen Beitrag gut

5 Martin

Ich habe jetzt die neue htaccess fertig, mit den per X-robots-Tag auszuschließenden Bildern (s. anderer thread) und den redirects von damals, aber ohne redirect der alten WP-uploads-Bilder.

Den Hotlinking-Code hatte ich zwar noch drin, aber der war bereits auskommentiert, daher jetzt ganz weggelassen. Irgendwas werde ich mir beim späteren Auskommentieren gedacht haben.

KI-crawler habe ich noch keine ausgeschlossen, das kommt wahrscheinlich später noch.

Wirf doch bitte mal einen Blick drauf, ob das alles jetzt so passt, insbesondere die ausgeschlossenen neun Bilder und der redirect-Code am Anfang und Schluss (Modulaktivierung ect.).
Reihenfolge habe ich belassen wie vorher, wobei natürlich einige WP-Dinge jetzt weg sind.

# Einzelne Bilder sollen nicht indexiert werden, aber gecrawled
<FilesMatch "^(bild1-1x\.webp|bild2-2x\.webp|bild3-1x\.webp|bild4-2x\.webp|bild5\.gif|bild6-1x\.webp|bild7-2x\.webp|bild8-1x\.webp|bild9-2x\.webp)$">
Header set X-Robots-Tag "noindex"
</FilesMatch>


#Zusaetzlicher htaccess-PW-Schutz
<Files wp-login.php>
AuthType Basic
AuthName "Zugang Admin"
AuthUserFile blabla
#AuthPGAuthoritative Off
Require user blabla
</files>


# Neue Redirects für Umstellung http --> https
<IfModule mod_rewrite.c>
RewriteEngine On
# 2. Redirect von http(s)://(www.)domain.de/index.html 
#            nach https://www.domain.de/
# Fall j4
RewriteCond %{THE_REQUEST} /index\.html
RewriteRule ^index\.html$ https://www.meinesite.de/ [R=301,L]

# 3. Redirect von http(s)://(www.)domain.de/page1.html 
#            nach https://www.domain.de/page1
# Fall j1: alte Links vor Umstellung auf WP
RewriteCond %{THE_REQUEST} \.html
RewriteRule ^(.+)\.html$ https://www.meinesite.de/$1 [R=301,L]

# 4. Redirect von http(s)://domain.de/...
#             und http://(www.)domain.de/...
#            nach https://www.domain.de/...
# Fall j2, alte und neue Links auf Startseite ! und
# Fall j3, neuere Links auf Unterseiten, seit WP
RewriteCond %{HTTP_HOST} !^www\. [OR]
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*)$ https://www.meinesite.de/$1 [R=301,L]

# 5. https://www.domain.de/page1 zeigt Inhalt von page1.html an
# die physisch auf dem Server liegenden .html-Dateien werden vom
# Server herangezogen und dann vom Browser angezeigt
RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule ^(.+)$ $1.html [L]
</IfModule>


# Serverseitige deflate-Komprimierung
<IfModule mod_filter.c>
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/plain text/html text/xml text/css text/javascript text/rtf
AddOutputFilterByType DEFLATE application/javascript application/x-javascript application/msword
</IfModule>
</IfModule>


# Browser-Caching durch mod_expires
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/x-icon "access plus 1 year"
ExpiresByType font/woff2 "access plus 1 year"
ExpiresByType image/webp "access plus 6 months"
ExpiresByType image/jpg "access plus 6 months"
ExpiresByType image/jpeg "access plus 6 months"
ExpiresByType image/gif "access plus 6 months"
ExpiresByType image/png "access plus 6 months"
ExpiresByType video/mp4 "access plus 1 month"
ExpiresByType audio/mpeg "access plus 1 month"
ExpiresByType audio/mp4 "access plus 1 month"
ExpiresByType text/css "access plus 1 week"
ExpiresByType text/rtf "access plus 1 week"
ExpiresByType text/javascript "access plus 1 week"
ExpiresByType application/pdf "access plus 1 month"
ExpiresByType application/zip "access plus 1 month"
ExpiresByType application/msword "access plus 1 month"
ExpiresByType application/javascript "access plus 1 week"
ExpiresByType application/x-javascript "access plus 1 week"
</IfModule>

24.06.2026 22:53

Beitrag schreiben (als Gast)

Die Antwort wird nach der Überprüfung durch einen Moderator freigeschaltet.





[BBCode-Hilfe]