WBCE CMS Forum

WBCE CMS – Way Better Content Editing.

You are not logged in.

#1 19.04.2021 09:17:06

digitalbricks
Member

[gelöst] 302 Redirects auf mehrsprachigen Sites

Hallo Community,

ich habe folgendes Problem bei mehrsprachigen Websites, welches möglicherweise auch Ursache für das in diesem Thread beschriebene Problem ist:

Noch bis zu WBCE 1.4.0 war es so, dass beim Aufruf einer fremdsprachigen Site – sagen wir mal /en.php – ein 302-Redirect auf die Seite mit angehängtem URL-Parameter entsprechend der Sprache stattfand – im Besipiel also auf /en.php?lang=EN. Das war schon immer unschön.
Laut Changelog wurde dieses Verhalten am 20.10.2019 geändert und somit habe ich kürzlich eine mehrsprachige Site auf WBCE 1.4.5 aktualisiert. In der Hoffnung dieses Problem damit los zu werden.

In WBCE 1.4.5 ist es jedoch – aus meiner Sicht – noch schlimmer: Ein Aufruf von /en.php sendet nun einen 302-Redirect auf /en.php (ohne Sprach-Parameter) und liefert dann die Seite aus wenn Cookies aktiviert sind. Sind Cookies jedoch nicht aktiviert – beispielsweise weil man die Site mit einem Link-Checker prüft – wird erneut ein 302-Redirect auf /en.php und dann wieder und wieder und wieder. Somit sind fremdsprachige Sites in Browsern mit deaktivierten Cookies nicht mehr erreichbar (Anfrage im Browser endet in Umleitungsfehler aufgrund zu vieler Redirects).

Ohne die Technik der Sprachumschaltung im Detail zu kennen, vermute ich dass die Redirects nötig sind um die aktuelle Sprache in Session zu speichern, so dass Modulausgaben auf den Sprachwechsel reagieren können. In der aktuellen Form halte ich das aber für ein Problem, da Clients ohne Cookie-Support niemals die fremdsprachigen Seiten ausgeliefert bekommen. DAS wiederum ist ein Problem bei Link-Checkern und vermutlich vielen SEO-Tools oder gar Suchmaschinen-Crawlern.

Hier würde ich wenigstens einen Fallback für Non-Cookie-Clients vorschlagen: Wenn der Sitzungscookie nicht verfügbar ist, sollte der Redirect wie in den älteren WBCE-Versionen auf die URL mit Sprachparameter (z.B. /en.php?lang=EN) erfolgen und die LANGUAGE-Konstante entsprechend gesetzt werden. Somit haben wir zwar immer noch einen "unnötigen" 302-Redirect aber immerhin sind die Seiten so trotzdem aufrufbar.

Besser noch wäre es – aber möglicherweise sind da technische Hürden im Weg – die LANGUAGE-Konstante direkt beim ersten Aufruf der Seite auf Grundlage der Seiteneinstellungen zu setzen. Wenn das direkt am Anfang geschieht, sollten doch alle Module darauf reagieren können, oder?

So ist das auf jeden Fall etwas unbefriedigend und da Auftraggeber, wie im oben genannten Thread nicht selten selber Tools zum Testen einsetzen und somit auf solche Probleme aufmerksam werden, führt das zwangsläufig zu Rückfragen und Diskussionen. Eine solche Abhängigkeit von Cookies für die Basis-Funktionen einer Website sollte es nicht geben.

Wie ist eure Meinung hierzu oder gibt es vielleicht einen Workaround, den ich nicht auf dem Schirm habe?

Beste Grüße
André

Last edited by digitalbricks (04.05.2021 20:47:40)

Offline

#2 19.04.2021 10:26:37

florian
Administrator

Re: [gelöst] 302 Redirects auf mehrsprachigen Sites

Das ist in der Tat ein Problem.
Das Problem tritt ja auch auf, wenn man über die config.php-Einstellung das Setzen des Session-Cookies unterbindet.
Müssen wir uns anschauen, danke für den Hinweis.

Online

#3 19.04.2021 11:49:17

digitalbricks
Member

Re: [gelöst] 302 Redirects auf mehrsprachigen Sites

Hallo Florian,

vielen Dank für Dein Feedback!

Ich habe mir mal den Code angeschaut und wenn ich folgende Änderungen vornehme, läuft es gänzlich ohne Redirects:

class.frontend.php, ab Zeile 149 – ORIGINAL

[== PHP ==]
// Check if the page language is also the selected language. If not, send headers again.           
if ($this->page['language'] != LANGUAGE) {
    $_SESSION['LANGUAGE'] = $this->page['language'];
    $sUri = $this->page_link($this->page['link']);
    if (isset($_SERVER['QUERY_STRING']) && $_SERVER['QUERY_STRING'] != '') {
        // check if there is an query-string
        header('Location: ' . $sUri . '?' . $_SERVER['QUERY_STRING']);
    } else {
        header('Location: ' . $sUri);
    }
    exit();
} 

class.frontend.php, ab Zeile 149 – MODIFIZIERT

// Check if the page language is also the selected language. If not, send headers again.           
if ($this->page['language'] != LANGUAGE) {
    $_SESSION['LANGUAGE'] = $this->page['language'];
    define('LANGUAGE', $this->page['language']);
    $sUri = $this->page_link($this->page['link']);
} 

Ein auf den fremdsprachigen Seiten befindliches MPForm-Modul schaltet seine Frontendausgabe (z.B. Beschriftung Submit-Button) auch korrekt in die Zielsprache um. ALLERDINGS nur wenn Cookies aktiv sind – das ist also nur der halbe Weg (302-Redirects verhindert, Cookie-Abhängigkeit bleibt bestehen).

Der zweite Teil müsste meines Erachtens in der initialize.php, ab Zeile 241 gelöst werden, denn dort wird die Sprache ebenfalls festgelegt – und zwar auf Basis des URL-Parameters (den es nicht mehr gibt) oder der Session (die es ohne Cookies nicht gibt). Hier sollte auch stattdessen [Frontend-Class]->page['language'] genutzt werden – also die Einstellung der Seite. Ich habe allerdings nicht herausgefunden, wie man auf die Klasse aus der initialize.php heraus zugreift ... $wb steht dort jedenfalls nicht zur Verfügung.

Aber vielleicht hilft euch das.

Offline

Liked by:

florian

#4 19.04.2021 12:30:13

digitalbricks
Member

Re: [gelöst] 302 Redirects auf mehrsprachigen Sites

Nachtrag: Sehe gerade dass die intialize.php zuerst geladen wird und daher das neu eingefügte define('LANGUAGE', $this->page['language']); in der class.frontend.php eine Already-Defined-Warnung wirft. Demnach ist das Entfernen der Redirects in der class.frontend.php schon okay ABER das Definieren der LANGUAGE-Konstante muss in der initialize.php erfolgen – aber halt wie geschrieben auf Grundlage der Seiteneinstellung und nicht der Session.

Bei mir funktioniert Folgendes:

Das hier aus der index.php ENTFERNEN:

[== PHP ==]
// Create new Frontend object.
$wb = new Frontend();

// Figure out which page to display. Stop processing if intro page was shown.
$wb->page_select() or die();

// Collect info about the currently viewed page and check permissions.
$wb->get_page_details();

// Collect general website settings.
$wb->get_website_settings();

Dafür in der initialize.php in Zeile 241 (Über // LANGUAGES) EINFÜGEN:

[== PHP ==]
// Create new Frontend object.
$wb = new Frontend();

// Figure out which page to display. Stop processing if intro page was shown.
$wb->page_select() or die();

// Collect info about the currently viewed page and check permissions.
$wb->get_page_details();

// Collect general website settings.
$wb->get_website_settings();

if(!defined('LANGUAGE')){
    define('LANGUAGE',$wb->page['language']);
}

Warum? Die index.php lädt ja die config.php und diese wiederum die initialize.php – und das schon bevor das Frontend-Objekt in der index.php instanziiert wird. Darum steht $wb in der initialize.php noch nicht zur Verfügung. Und das erneute Instanziieren des Frontend-Objektes in der initialize.php zusätzlich zur Instanz in der index.php führt zu neuen Allready-Defined-Warungen (da die Methoden der Klasse einige Konstanzen setzen). Somit ist doppelt instanziieren doof aber durch das Verschieben aus der index.php in die intialize.php scheint alles nach wie vor korrekt zu funktionieren UND die Sprachumschaltung funktioniert auch bei deaktivierten Cookies.

Der ursprüngliche Code-Block in der class.frontend.php (siehe nachfolgend) kann dann eigentlich komplett raus:

[== PHP ==]
// Check if the page language is also the selected language. If not, send headers again.           
if ($this->page['language'] != LANGUAGE) {
    $_SESSION['LANGUAGE'] = $this->page['language'];
    $sUri = $this->page_link($this->page['link']);
    if (isset($_SERVER['QUERY_STRING']) && $_SERVER['QUERY_STRING'] != '') {
        // check if there is an query-string
        header('Location: ' . $sUri . '?' . $_SERVER['QUERY_STRING']);
    } else {
        header('Location: ' . $sUri);
    }
    exit();
} 

Ist natürlich mit heißer Nadel gestrickt und bedarf einem Review der Experten.

Offline

#5 22.04.2021 14:15:10

colinax
Administrator

Re: [gelöst] 302 Redirects auf mehrsprachigen Sites

Hallo digitalbricks,

leider ist es ohne Session Cookie und dem Redirect nicht möglich korrekt die Mehrsprachigkeit bereit zustellen.

Dass steht auch so in der Ankündigung von WBCE 1.4.4 drinnen


Grund: Der Core hat eine Basissprache und es ist nur über das Session Cookie möglich einen anderen Wert als Sprache anzugeben, entsprechend diesem Wert wird auch der Inhalt geladen.

Was den 302 Redirect angeht, dass ist technisch geschuldet da im header eine Location angegeben wird. eine andere Lösung ist bei uns so wie der Core funktioniert nicht möglich.

Edit3: Aussage korrigiert und ergänzt

Last edited by colinax (22.04.2021 19:44:44)


Mein GitHub Profil: https://github.com/Colinax

Offline

#6 24.04.2021 07:42:53

florian
Administrator

Re: [gelöst] 302 Redirects auf mehrsprachigen Sites

@digitalbricks
Auch ich habe das jetzt mal getestet. Das funktioniert scheinbar bzw. bei mir so leider noch nicht.
Wenn ich die Änderung aus #3 umsetze, wird bei einem Sprachwechsel erst bei erneutem Aufruf der Seite die Konstante gesetzt und erst dann erscheinen Navigation und sprachspezifische Beschriftungen korrekt.

Die Änderungen aus #4 führen bei mir zu einer "weißen Seite" im Frontend und Backend, leider auch ohne Einträge im Errorlog.

Vermutlich müsste man den Core (und in der Folge ggfs. Templates) dahingehend umbauen, dass nicht mehr LANGUAGE gesetzt/genutzt wird, sondern $_SESSION['LANGUAGE'] und als Fallback wegen fehlender Cookies dann die Sprache der jeweiligen Seite (Page) für Navigation, Buttons etc. berücksichtigt wird.

Last edited by florian (24.04.2021 07:45:35)

Online

#7 24.04.2021 10:18:03

colinax
Administrator

Re: [gelöst] 302 Redirects auf mehrsprachigen Sites

florian wrote:

Wenn ich die Änderung aus #3 umsetze, wird bei einem Sprachwechsel erst bei erneutem Aufruf der Seite die Konstante gesetzt und erst dann erscheinen Navigation und sprachspezifische Beschriftungen korrekt.

das ließe sich mit einem header("Refresh:0"); erledigen (dann wäre es auch keine 302 Weiterleitung mehr), hat aber den Nachteil dass die aktuelle Seite neu geladen wird und nicht das Ziel.
Bei einem Test auf meiner live Seite die Multilingual ist, hat es zwar an sich funktioniert weis aber nicht welche Auswirkungen das haben kann.


Mein GitHub Profil: https://github.com/Colinax

Offline

#8 24.04.2021 11:15:12

florian
Administrator

Re: [gelöst] 302 Redirects auf mehrsprachigen Sites

Hm, dann blitzt beim Sprachumschalten nochmal kurz die Seite auf, aber ansonsten scheint das nicht nachteilig auszuwirken und verträgt sich sogar mit shortURL.

Online

#9 24.04.2021 13:36:35

colinax
Administrator

Re: [gelöst] 302 Redirects auf mehrsprachigen Sites

Ich hab den getesteten Code von Gestern nicht mehr im Kopf aber der neue sollte dann folgend lauteten:

            if ($this->page['language'] != LANGUAGE) {
                if (defined('OLD_REDIRECT') && OLD_REDIRECT != false) {
                    $sUri = $this->page_link($this->page['link']).'?lang=' . $this->page['language'];
                    if (isset($_SERVER['QUERY_STRING']) && $_SERVER['QUERY_STRING'] != '') {
                        // check if there is an query-string
                        header('Location: ' . $sUri . '&' . $_SERVER['QUERY_STRING']);
                    } else {
                        header('Location: ' . $sUri);
                    }
                    exit();
                } else {
                    $_SESSION['LANGUAGE'] = $this->page['language'];
                    header("Refresh:0");
                }
            }

Edit: hab den Code jetzt um eine If/else erweitert damit auch der Zustand von vor 1.4.1 wieder erreicht werden kann, ob man das exit() auch im else braucht weis ich nicht

Last edited by colinax (24.04.2021 16:16:55)


Mein GitHub Profil: https://github.com/Colinax

Offline

Liked by:

florian

#10 26.04.2021 19:50:01

florian
Administrator

Re: [gelöst] 302 Redirects auf mehrsprachigen Sites

Funktioniert. Committe das mal bitte schon mal. Die 302-Sache ist SEO-mäßig extrem kontraproduktiv.

Online

#11 26.04.2021 20:01:39

colinax
Administrator

Re: [gelöst] 302 Redirects auf mehrsprachigen Sites

florian wrote:

Committe das mal bitte schon mal.

Ist erledigt.


Mein GitHub Profil: https://github.com/Colinax

Offline

#12 26.04.2021 20:05:36

florian
Administrator

Re: [gelöst] 302 Redirects auf mehrsprachigen Sites

Super, danke.

Online

#13 29.04.2021 08:11:56

digitalbricks
Member

Re: [gelöst] 302 Redirects auf mehrsprachigen Sites

Hallo @colinax, hallo @florian,

erstmal sorry für meine Abwesenheit in diesem Thread während der letzten Tage und gleichzeit vielen Dank für eure Anstrengungen zum Thema.

@florian
Bei mir funktioniert der vorgeschlagenen Fix ohne erkennbare Probleme (WBCE 1.4.5 auf PHP 7.4). Ich hänge mal die geänderten Dateien gezippt an diesen Kommentar – kannst Du das noch mal checken?

@colinax
Was spricht dagegen das Instanziieren des Frontent-Objekts in die framework/initialize.php zu verlegen (anstelle index.php), damit es so früh wie möglich zur Verfügung steht?

Offline

#14 29.04.2021 10:49:59

florian
Administrator

Re: [gelöst] 302 Redirects auf mehrsprachigen Sites

Leider nein, ich habe eine Testkopie einer mehrsprachigen Seite aufgesetzt - FE und BE sind mit den geänderten Dateien leer.
Einträge im Errorlog:

2021-04-29T08:47:43+00:00 [Warning] /framework/class.frontend.php:[88]  from /config.php:[14]  "Use of undefined constant LANGUAGE - assumed 'LANGUAGE' (this will throw an Error in a future version of PHP)"
2021-04-29T08:47:43+00:00 [Notice] /templates/systemplates/maintainance.tpl.php:[4]  from /framework/class.frontend.php:[121] Frontend->print_under_construction "Trying to access array offset on value of type null"
2021-04-29T08:47:43+00:00 [Notice] /templates/systemplates/maintainance.tpl.php:[13]  from /framework/class.frontend.php:[121] Frontend->print_under_construction "Trying to access array offset on value of type null"
2021-04-29T08:47:43+00:00 [Notice] /templates/systemplates/maintainance.tpl.php:[14]  from /framework/class.frontend.php:[121] Frontend->print_under_construction "Trying to access array offset on value of type null"

Online

#15 29.04.2021 11:00:08

digitalbricks
Member

Re: [gelöst] 302 Redirects auf mehrsprachigen Sites

Besten Dank für das Feedback!

Hmmm... seltsam, hier läuft es ohne Probleme. Ich mache dann mal noch ein Diff zwischen meiner Testsite und einem "cleanen" WBCE – vielleicht habe ich noch eine andere Datei geändert, an die ich mich nicht mehr erinnere. Gebe dann Bescheid.

Offline

#16 29.04.2021 13:13:28

digitalbricks
Member

Re: [gelöst] 302 Redirects auf mehrsprachigen Sites

Hallo Florian,

ich habe das noch mal gecheckt: Ich habe tatsächlich nur diese drei Dateien modifiziert und hier läuft das ohne Probleme – sowohl auf einem Duplikat einer Kundenwebsite als auch in einer frisch aufgesetzten WBCE 1.4.5 Instanz.

Ich habe das eingangs geschilderte Problem und das Verhalten nach dem Tausch der drei Dateien mal in einem kurzen Video festgehalten (in furchtbarem englisch  wink ). Wenn Du/Ihr mal schauen mögt: Video-Demo (lädt gerade noch hoch, sollte aber in 5 Minuten durch sein)

Last edited by digitalbricks (29.04.2021 14:09:14)

Offline

#17 29.04.2021 14:22:19

florian
Administrator

Re: [gelöst] 302 Redirects auf mehrsprachigen Sites

Danke für das Video. Das Ursprungsproblem mit den 302-Redirects und der Nichterreichbarkeit der Unterseiten war von mir bereits in #2 bestätigt worden.

"Mein" Problem - wäre übrigens schön, wenn sich noch jemand am Testen beteiligen könnte - könnte eventuell daran liegen,
a) dass ich das mit einer umfangreichen Seite, die gemäß der üblichen Struktur:
de = menulink
-- willkommen
-- über uns
-- ...
en = menulink
-- welcome
-- about us
-- ....
angelegt ist, getestet habe,
b) ich das mit Windows/Firefox auf einem "echten" Webspace getestet habe,
c) eventuell bei den Grundeinstellungen und/oder Seiteneigenschaften noch irgenwas zu beachten ist:
-- ist bei Dir "mehrsprachige Website" aktiv?
-- Haben die Testseiten jeweils die zugehörige Sprache bei den Seiteneinstellungen ausgewählt?

Ich hatte bei den Grundeinstellungen "mehrsprachige Website" testweise deaktiviert, dann funktionierte zumindest das Frontend, beim Aufruf des Backends ist der Browser dann aber - auch nach dem Löschen von Cache und Cookies - in eine Endlos-Weiterleitungsschleife geraten. Die URL im Browser sah dann so aus:
testseite.domain.xyz/admin/start/index.php?lang=DE&lang=DE&lang=DE&lang=DE&lang=DE&lang=DE&lang=DE&lang=DE

Last edited by florian (29.04.2021 14:25:14)

Online

#18 29.04.2021 14:37:08

digitalbricks
Member

Re: [gelöst] 302 Redirects auf mehrsprachigen Sites

Hallo Florian,

ich habe natürlich mitbekommen, dass Du das Problem in #2 schon bestätigt hattest – ich wollte das im Video nur noch mal zusammenfassen, für Diejenigen die neu in den Thread einsteigen und nicht alles gelesen haben.

"mehrsprachige Website" ist DER Punkt: Das war tatsächlich aus (offen gestanden war mir neu, dass es diese Einstellung gibt – was macht die?) und nach der Aktivierung kann ich das von Dir genannte Verhalten reproduizieren. Die Sprache der einzelnen Seiten hatte ich natürlich entsprechend zugewiesen.

Schade, ich hatte auf eine schmale Lösung gehofft aber offenbar muß da noch etwas tiefer gegraben werden. Ich schaue mir das noch mal an, denn das Thema ist ein doch recht brisantes: Vorgestern rief wie erwartet ein Auftraggeber, dessen Site ich kürzlich aktualisiert hatte, und frug woher die vielen 302-Weiterleitungen plötzlich herkommen, die er in "seinem Tool" sieht ... Bis da die Kuh nicht vom Eis ist, kann ich erstmal keine weiteren (mehrsprachigen Sites) aktualisieren.

Last edited by digitalbricks (29.04.2021 14:38:10)

Offline

#19 29.04.2021 14:43:55

florian
Administrator

Re: [gelöst] 302 Redirects auf mehrsprachigen Sites

Mit #9 ist zwar nicht die Cookie- aber doch die 302-Kuh vom Eis?

Zur Einstellung "mehrsprachige Website": Das hat unmittelbare Auswirkung auf die Navigation:  Bei aktivierter Option werden Besuchern im Frontend nur die Seiten angezeigt, bei denen die jeweilige Sprache des Besuchers hinterlegt ist. Bei nicht-angemeldeten Benutzern wird dabei die Sprache verwendet, die im Browser eingestellt ist.  Bei deaktivierter Funktion sehen alle Besucher immer alle für sie verfügbaren Seiten.
D.h. in der oben skizzierten "üblichen" Struktur mit /de/, /en/ usw. - üblich in dem Sinne, als dass stets empfohlen wird, mehrsprachige Webseiten so aufzubauen würden mit deaktivierter Einstellung "Mehrsprachige Webseite" unerwünschterweise auch /en/, /de/ in der Navigation erscheinen, *sofern* nicht der SM2-Aufruf weitergehend angepasst ist.

Online

#20 29.04.2021 17:05:26

digitalbricks
Member

Re: [gelöst] 302 Redirects auf mehrsprachigen Sites

Besten Dank für die Erläuterung!

florian wrote:

Mit #9 ist zwar nicht die Cookie- aber doch die 302-Kuh vom Eis?

Vielleicht aber da bin ich mir nicht sicher. Jetzt gibt es zwar keine 302-Redirects mehr (was gut ist) und Link-Checker schaffen es nun auch wieder auf fremdsprachige Seiten (was auch gut ist) aber in Browsern ohne Cookie-Support führt diese Lösung wegen dauerhafter Refrehs immernoch zur Unbenutzbarkeit.

Um beim Gleichnis mit der Kuh zu bleiben: Jetzt sind schon mal zwei Hufe vom Eis ;-)

Offline

#21 29.04.2021 22:20:51

digitalbricks
Member

Re: [gelöst] 302 Redirects auf mehrsprachigen Sites

Noch mal ein kurzes Feedback: Das Verhalten, welches Du in #17 beschreibst, hängt mit folgenden Zeilen der Methode page_select() in der class.frontend.php zusammen:

[== PHP ==]
if (PAGE_LANGUAGES ) {
            $this->sql_where_language = ' AND `language`=\'' . LANGUAGE . '\'';
}

Wenn ich den Inhalt der If-Condition auskommentiere verschwindet das Problem – aber damit auch die von Dir in #19 beschriebene Funktionalität.

Das Problem ist, dass LANGUAGE an dieser Stelle noch nicht definiert ist – wenn man, wie von mir vorgeschlagen, nicht auf $SESSION['LANGUAGE'] vertraut sondern die Einstellung der Seite als Grundlage nimmt ($wb->page['language']). Denn: $wb->page['language'] wird erst nach dem Aufruf von $wb->get_page_details() zugänglich und $wb->get_page_details() wiederum erst nach dem Aufruf von $wb->page_select().

Und da beißt sich die Katze sprichwörtlich in den Schwanz, da die page_select()-Methode ja die oben genannten Code-Zeilen mit Zugriff auf LANGUAGE enthält, LANGUAGE zu diesem Zeitpunkt aber noch nicht aus den Seiteneinstellungen ausgelesen wurde und nur über URL-Parameter (wie früher) oder SESSION-Werten in Kombination mit Redirects "zusammengemogelt" werden kann.

Das ist also, zumindest wenn "Mehrsprachige Website" aktiviert ist, offenbar nicht ganz so einfach zu lösen.

Mir ist nicht klar wieso man damals (WB) die Entscheidung getroffen hat, die Sprachumschaltung über Redirects und URL-Parameter (jetzt Session-Werte)  zu lösen – anstatt einfach die Sprache aus der Seiteneinstellung zu lesen, wie es vermutlich alle anderen machen – aber diese Entscheidung scheint weitreichende Konsequenzen zu haben. :-/

Last edited by digitalbricks (29.04.2021 22:23:19)

Offline

#22 30.04.2021 07:34:30

florian
Administrator

Re: [gelöst] 302 Redirects auf mehrsprachigen Sites

Mit der Änderung aus #9 gibt es eine neue Konfigurationsmöglichkeit. Wenn Du in der config.php ergänzt

define('OLD_REDIRECT',true);

wird wieder der "alte" Mechanismus mit den ?lang=XY-Redirects verwendet und der Aufruf der Seiten ist nicht mehr vom Setzen eines Cookies abhängig. Dafür wird dann wohl allerdings wieder per 302 redirected.
Eventuell hilft es, vor

header('Location: ' . $sUri . '&' . $_SERVER['QUERY_STRING']);

bzw.

header('Location: ' . $sUri);

noch einzufügen:

header("HTTP/1.1 301 Moved Permanently"); 

(vgl. https://stackoverflow.com/a/7324750)?

Online

#23 30.04.2021 11:22:43

digitalbricks
Member

Re: [gelöst] 302 Redirects auf mehrsprachigen Sites

Okay, ich glaube dann stelle ich auf die alten Redirects um. Da haben wir zwar einen 302-Redirect aber den gab es ja früher auch (richtig problematisch wurde das Thema ja erst duch die wiederholten Redirects in Non-Cookie-Browsern und SEO-Tools). Das ist nicht optimal aber jedenfalls besser.

Ich bin mir auch nicht sicher, ob ein 301 an dieser Stelle besser wäre. Der würde ja dazu führen, dass Suchmaschinen die parametrisierte URL in den Index aufnehmen anstatt der ohne "lang"-Parameter. Andererseits würde dann – wenn Nutzer in den Suchergebnissen auf eine parametrisierte URL klicken – ein Redirect entfallen (der aber ohnehin von menschlichen Nutzern unbemerkt bleibt). Hmmm, ich glaube ich lasse den (einen) 302.

Kann ich die class.frontend.php aus dem Development-Branch (https://github.com/WBCE/WBCE_CMS/blob/d … ontend.php) direkt übernehmen oder sind da noch weitere Änderungen eingeflossen, die eine 1.4.5-Installation brechen könnten?

Auf jeden Fall vielen Dank dass Ihr ein offenes Ohr für das Thema hattet – großartige Community!

Offline

Liked by:

florian

#24 30.04.2021 12:56:14

florian
Administrator

Re: [gelöst] 302 Redirects auf mehrsprachigen Sites

Kann ich die class.frontend.php aus dem Development-Branch (https://github.com/WBCE/WBCE_CMS/blob/d … ontend.php) direkt übernehmen oder sind da noch weitere Änderungen eingeflossen, die eine 1.4.5-Installation brechen könnten?

Um eine 1.4.5 zu patchen, ändere bitte nur die oben genannten Zeilen. Die Änderungen zwischen der 1.4.5 und dem aktuellen Stand sind zu umfangreich, als dass ich jetzt sagen könnte, ob man einfach die Dateien austauschen kann.
Wir werden aber sehr bald sowieso die Version 1.5.0 veröffentlichen, da ist das dann natürlich drin.

Last edited by florian (01.05.2021 12:00:59)

Online

#25 04.05.2021 20:07:09

colinax
Administrator

Re: [gelöst] 302 Redirects auf mehrsprachigen Sites

@digitalbricks und @florian,

wie ist den hierzu der Status, kann das mit #9 geschlossen werden oder wo stehen wir jetzt genau?


Mein GitHub Profil: https://github.com/Colinax

Offline

Board footer

Powered by FluxBB

up