Seite 1 von 1
Verkürzung der Upload-Pfade
Verfasst: Di 14. Apr 2020, 16:18
von bodil
Hallo zusammen!
Die Länge des Quellcodes zu reduzieren liegt gerade voll im Trend. Mir fiel auf, dass viele Bilder mit einem Pfad eingebunden werden, der so aussieht:
Unabhängig von der Frage, wo solche Pfade herkommen, dachte ich, ich könnte sie kürzen, in dem ich sie in der passenden Chain (Contenido.Frontend.HTMLCodeOutput) durch
ersetze, schließlich nutzt die Seite ein Base-Tag im Head:
Nach Abarbeiten der Chain baut irgendwas die Pfade aber um, so dass sie wieder so aussehen (und so lang sind) wie vorher. Weiß jemand warum?
(Die Seite nutzt Contenido 4.10.0.)
Besten Dank und bleibt gesund!
Bodil
Re: Verkürzung der Upload-Pfade
Verfasst: Mi 15. Apr 2020, 22:51
von xmurrix
Hallo bodil,
alle URL's, die mit "upload" beginnen, werden in der Funktiom mr_buildGeneratedCode() (siehe contenido/plugins/mod_rewrite/includes/functions.mod_rewrite.php) gegen eine vollständige URL ersetzt.
Der Grund dafür ist zum einen der IE 8/9, der Probleme mit der base href hat. Zum anderen funktionieren URLs nicht, wenn die mit "upload" beginnen, aber kein base href ausgegeben wird.
Am Besten ist es, wenn wir dieses Verhalten für die nächste Version von CONTENIDO konfigurierbar zu machen.
Du kannst aber die Zeilen in der Funktion mr_buildGeneratedCode() auskommentieren. Ein anderer Trick wäre hier die Ausgabe von URL's, die nicht mit "upload" beginnen sondern, z. B. mit "upl". Das wird dann in der AMR-Funktion nicht umgewandelt, dafür kann man dann in der .htaccess Anfragen, die mit "upl" beginnen, in "upload" umschreiben.
Gruß
xmurrix
Re: Verkürzung der Upload-Pfade
Verfasst: Do 16. Apr 2020, 13:48
von bodil
Hi xmurrix!
Vielen Dank! Das hat mir viel Sucherei erspart!
Ich glaube nicht, dass noch viele IE 8 oder 9 unterwegs sind oder dass sonst jemand noch Rücksicht auf sie nimmt. Trotzdem habe ich mich entschieden, sie zu berücksichtigen.
Ich habe contenido/plugins/mod_rewrite/includes/functions.mod_rewrite.php (ab ca. Zeile 494) so geändert:
vorher:
Code: Alles auswählen
// CON-1389 modifier /e is deprecated as of PHP 5.5
$code = preg_replace_callback("/([\"|\'|=])upload\/(.?|.+?)([\"|\'|>])/i", function($match) use ($baseUri) {
return stripslashes($match[1] . $baseUri . 'upload/' . $match[2] . $match[3]);
}, $code);
nachher:
Code: Alles auswählen
if ((getSystemPropertiesByType('generator')['basehref'] != 'true') || preg_match('~MSIE|Internet Explorer~i', htmlentities($_SERVER['HTTP_USER_AGENT'], ENT_QUOTES, 'UTF-8'))) {
// CON-1389 modifier /e is deprecated as of PHP 5.5
$code = preg_replace_callback("/([\"|\'|=])upload\/(.?|.+?)([\"|\'|>])/i", function($match) use ($baseUri) {
return stripslashes($match[1] . $baseUri . 'upload/' . $match[2] . $match[3]);
}, $code);
}
Das ist nicht sehr hübsch, erfüllt aber seinen Zweck. Wird kein basehref erzeugt ODER wird die Seite mit (irgendeinem) Internetexplorer besucht, gibts lange Pfade, anderenfalls bleiben die Pfade wie sie sind.
Viele Grüße aus dem Homeoffice im hohen Norden!
bodil
Re: Verkürzung der Upload-Pfade
Verfasst: Mi 29. Apr 2020, 16:59
von bodil
Noch ein Hinweis: Diese Maßnahme (das Umwandeln aller absoluten Bildpfade in relative Bildpfade) ist dazu geeignet, XML-Sitemaps für Bilder oder PFDs unbrauchbar zu machen. In XML-Sitemaps dürfen nämlich nur ausschließlich absolute Pfade stehen.
Re: Verkürzung der Upload-Pfade
Verfasst: Sa 2. Mai 2020, 11:04
von xmurrix
bodil hat geschrieben: ↑Mi 29. Apr 2020, 16:59...In XML-Sitemaps dürfen nämlich nur ausschließlich absolute Pfade stehen...
Danke für die Info, dieser Fall wird natürlich nicht vom AMR-Plugin unterstützt. Man könnte zwar auch das mit einer Konfiguration lösen, aber das wird dann vielleicht zu viel rumkonfigurieren für die meisten User...
Re: Verkürzung der Upload-Pfade
Verfasst: Di 5. Mai 2020, 10:13
von bodil
Naja, es betrifft das AMR-Plugin ja auch nicht.
Das Plugin liefert absolute Pfade für Links zu Dateien im upload-Verzeichnis und genau die brauchen wir ja auch.
Wenn man es aber so umfrickelt wie ich, dass sich das Plugin nicht mehr drum kümmert, ob Pfade absolut sind oder nicht und gleichzeitig seinen Output so filtert, dass jedenfalls keine absoluten Pfade mehr auftauchen, dann hat man ein Problem mit xml-Sitemaps für Bilder und PDFs.
Meine Abhilfe: Im Outputfilter wird erkannt, ob der Outputcode eine xml-Datei ist, dann wird nicht gefiltert.
Grüße!
Bodil