SEO- und benutzerfreundliche URLs mit mod_rewrite

Benutzeravatar
shadowcat
Administrator
Beiträge: 4570
Registriert: Di 5. Feb 2013, 10:36
Kontaktdaten:

Re: SEO- und benutzerfreundliche URLs mit mod_rewrite

Beitrag von shadowcat » Di 28. Jul 2015, 15:23

My software never has bugs, it just develops random features.
BC1: PHP 5.5.11 (cli), mySQL 5.6.16 with 'strict' enabled, Apache 2.4.9
BC2: PHP 7.2.7, mariaDB 10.2.13, no Apache

Snoopy
Beiträge: 79
Registriert: Di 30. Jun 2015, 14:02

Re: SEO- und benutzerfreundliche URLs mit mod_rewrite

Beitrag von Snoopy » Di 28. Jul 2015, 15:33

shadowcat hat geschrieben:Komisch, daß BC bei Dir den kompletten Pfad nimmt. Eigentlich wird CAT_PATH um $_SERVER['DOCUMENT_ROOT'] gekürzt, bei mir kommt da der korrekte relative Pfad raus. Da muß in der Umgebung noch was anders sein.
Bin bei 1&1, vielleicht machen die irgendwas anders.

Bei meinem WB (nicht BlackCat!) CMS Version 2.8.3 SP3, Revision 1640, Admin version 1.6 funktioniert es mit Deiner "alten" Version:
# Optimierung für WebsiteBaker /cms/ verstecken
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/favicon.ico
RewriteRule ^(.*)$ /cms/$1 [QSA,L]

Vielleicht hilft das bei der Fehlersuche.
Ciao,
Snoopy

Benutzeravatar
shadowcat
Administrator
Beiträge: 4570
Registriert: Di 5. Feb 2013, 10:36
Kontaktdaten:

Re: SEO- und benutzerfreundliche URLs mit mod_rewrite

Beitrag von shadowcat » Di 28. Jul 2015, 15:40

Naja, bei mir funktioniert es ja auch mit der BC-Version. Mit relativem Pfad halt. Der absolute ist auf jeden Fall falsch.
My software never has bugs, it just develops random features.
BC1: PHP 5.5.11 (cli), mySQL 5.6.16 with 'strict' enabled, Apache 2.4.9
BC2: PHP 7.2.7, mariaDB 10.2.13, no Apache

Snoopy
Beiträge: 79
Registriert: Di 30. Jun 2015, 14:02

Re: SEO- und benutzerfreundliche URLs mit mod_rewrite

Beitrag von Snoopy » Di 28. Jul 2015, 16:18

Jetzt habe ich es fast komplett hinbekommen, nur die Stelle im Code von BC wo der Pfad festgelegt wird, wo man / anstatt /page/ hinterlegt die brauche ich noch, damit auch die Menüs ohne /page/ aufgerufen werden.

Ich kann nun nach Anklicken eines Menüs den Pfad z. B.
https://<domain-name>.info/page/webportal.php
manuell korrigieren, ohne dass es einen Fehler 500 gibt, aber BC nimmt nicht von sich aus gleich
https://<domain-name>.info/webportal.php


Der Fehler war in
RewriteRule ^([\/\sa-zA-Z0-9._-]+)$ /<domain-name>/index.php?$1 [QSA,L]

Hattest Du selbst weiter oben versehentlich so geschrieben. Und ich hab´s auch nicht gemerkt.

Richtig ist natürlich:
RewriteRule ^([\/\sa-zA-Z0-9._-]+)$ /index.php?$1 [QSA,L]
(wobei ich mich mit den Parametern ^([\/\sa-zA-Z0-9._-]+)$ nicht auskenne, da vertraue ich auf Dein Wissen)

Dann habe ich auf der entsprechenden Hilfeseite bei 1&1 nochmal gelesen und bin drauf gekommen, dass ich (beeinflusst durch die von BC bei mir falsch generierte .htaccess mit absolutem Pfad) weder den ganzen Pfad noch den von Dir versehentlich als /<domain-name>/index.php?$1 [QSA,L] nehmen muss, sondern relativ zum auf das Domainverzeichnis liegenden schreiben muss.
Ciao,
Snoopy

Benutzeravatar
shadowcat
Administrator
Beiträge: 4570
Registriert: Di 5. Feb 2013, 10:36
Kontaktdaten:

Re: SEO- und benutzerfreundliche URLs mit mod_rewrite

Beitrag von shadowcat » Di 28. Jul 2015, 16:37

Ich dachte ich hätte <path> geschrieben, nicht <domain-name>.

Das Menü kann man per Droplet umschreiben, ich glaube, in der shortURL Lösung von WB ist das so.
My software never has bugs, it just develops random features.
BC1: PHP 5.5.11 (cli), mySQL 5.6.16 with 'strict' enabled, Apache 2.4.9
BC2: PHP 7.2.7, mariaDB 10.2.13, no Apache

Snoopy
Beiträge: 79
Registriert: Di 30. Jun 2015, 14:02

Re: SEO- und benutzerfreundliche URLs mit mod_rewrite

Beitrag von Snoopy » Di 28. Jul 2015, 22:24

Hallo shadowcat,

ich habe es geschafft! :D
Was bei WB zu einer Endlosschleife führen würde, ist wohl dank Deines neuen Scripts oder anderem Aufbau des Codes von BC möglich:

Unter die Zeile ...
RewriteRule ^([\/\sa-zA-Z0-9._-]+)$ /index.php?$1 [QSA,L]

... habe ich diesen Befehl gelegt:
RedirectPermanent /page/ /

... welchen ich eigentlich ein Stück tiefer in meiner .htaccess zum Ummelden von umgezogenen Seiten für Google verwende:
Dann natürlich so:
# Umgezogene Seiten melden:
RedirectPermanent /page/new.php https://<domain-name>.info/new.php
RedirectPermanent /page/neu.php https://<domain-name>.info/neu.php

Das kann man bestimmt auch als RewriteRule unter Dein Script packen, aber da ich dessen Syntax nicht kenne und es auf das Gleiche hinausläuft, kann ich es auch so lassen. :lol:
Ciao,
Snoopy

Benutzeravatar
shadowcat
Administrator
Beiträge: 4570
Registriert: Di 5. Feb 2013, 10:36
Kontaktdaten:

Re: SEO- und benutzerfreundliche URLs mit mod_rewrite

Beitrag von shadowcat » Mi 29. Jul 2015, 09:29

Cool!
My software never has bugs, it just develops random features.
BC1: PHP 5.5.11 (cli), mySQL 5.6.16 with 'strict' enabled, Apache 2.4.9
BC2: PHP 7.2.7, mariaDB 10.2.13, no Apache

Snoopy
Beiträge: 79
Registriert: Di 30. Jun 2015, 14:02

Re: SEO- und benutzerfreundliche URLs mit mod_rewrite

Beitrag von Snoopy » Mi 29. Jul 2015, 09:50

:-)
Ja, nur eines kommt noch ständig beim Wechsel von einer deutschen Seite zu einer englischen, wenn ich die Homepage-Weiterleitung eingeschaltet lasse (deshalb seit gestern Abend abgeschaltet):
Die große BlackCat CMS-Fehlermeldung, dass man keinen Zugriff auf die aufgerufene Seite hat.
Abgesehen davon, dass Besucher aus Sicherheitsgründen eigentlich nicht wissen sollen, ob sie ein BlackCat-CMS vor sich haben, ganz übel, dass das überhaupt passiert.

Nach vielen Tests (springen zwischen den Seiten (englisch<->deutsch) und sogar Hochsetzen der Dateizugriffsrechte für die Seite, bei der der Fehler auftrat) habe ich dann gemerkt, dass es nur an Übergabe von "?lang=DE" bzw. "?lang=EN" lag.
Komme ich von /index.php, also frisch <domain-name.info> eingetippt oder oben links im Mojito-Template mein Minilogo angeklickt, wird noch kein ?lang=DE übergeben, also geht das dann nach Wahl einer Seite so weiter (wenn Homepage-Weiterleitung ausgeschaltet ist).

Sobald ich dann eine englische Seite anklicke, würde die Seite mit ?lang=EN aufgerufen und steigt mit der o. g. FM aus.

Lösung: Homepage-Weiterleitung eingeschaltet - nun wird das "?lang=DE" bzw. "?lang=EN" immer übergeben, also stört es BC auch nicht mehr.
Und bei Aufruf der Startseite fehlt das zwar, ist BC aber egal.
Ciao,
Snoopy

Benutzeravatar
shadowcat
Administrator
Beiträge: 4570
Registriert: Di 5. Feb 2013, 10:36
Kontaktdaten:

Re: SEO- und benutzerfreundliche URLs mit mod_rewrite

Beitrag von shadowcat » Mi 29. Jul 2015, 09:59

Sorry, das hab ich jetzt irgendwie noch nicht begriffen.

Übrigens gibt es noch einen offenen Issue wegen der lang= Dinger.
My software never has bugs, it just develops random features.
BC1: PHP 5.5.11 (cli), mySQL 5.6.16 with 'strict' enabled, Apache 2.4.9
BC2: PHP 7.2.7, mariaDB 10.2.13, no Apache

Snoopy
Beiträge: 79
Registriert: Di 30. Jun 2015, 14:02

Re: SEO- und benutzerfreundliche URLs mit mod_rewrite

Beitrag von Snoopy » Mi 29. Jul 2015, 10:24

Dann versuche ich es nochmal strukturierter ;)

Meine Website ist zweisprachig (vielen Dank für das Alleinstellungsmerkmal der direkten Verlinkungsoption für mehrsprachige Seiten in BC!)

[Homepage-Weiterleitung ausgeschaltet]
Fehler: Sprache der Menüs geht bei Sprachwechsel über Flaggensymbol trotz neuer Helper-Page.php nicht mit.
Das ist dann wohl die Ursache, dass beim Wechsel von einer deutschen Seite zu einer englischen die "BlackCat CMS-Fehlermeldung, dass man keinen Zugriff auf die aufgerufene Seite hat" erscheint (leider kein Screenshot parat).

Abgesehen davon, dass Besucher aus Sicherheitsgründen eigentlich nicht wissen sollen welches CMS sie vor sich haben ganz übel, dass das überhaupt passiert.

Fehler reproduzierbar: liegt an Übergabe von "?lang=XX".
Komme ich von /index.php, tippe also <domain-name.tld> ein oder nutze den Homepage-Link des Logos oben links im Mojito-Template, wird kein ?lang=DE übergeben, auch weiteres Durchklicken von Seite zu Seite übergibt die Seiten weiter ohne "?lang=XX". Soweit fehlerfrei.

Aber sobald ich dann eine englische Seite anklicke, würde die Seite mit ?lang=EN aufgerufen und steigt mit der o. g. FM aus.

Lösung: Homepage-Weiterleitung eingeschaltet - nun wird das "?lang=DE" bzw. "?lang=EN" immer übergeben, also stört es BC auch nicht mehr.
Und bei Aufruf der Startseite fehlt das zwar, ist BC aber egal.
Ciao,
Snoopy

Antworten