CMSms 1.x und SEO

CMS made simple ist grundsätzlich in der Lage, für Suchmaschinen optimierte URLs auszugeben. Die Feinheiten rund um Pretty URLs & SEO können hier diskutiert werden.
Wiedmann
Forum Members
Forum Members
Posts: 233
Joined: Wed Mar 26, 2008 1:49 am
Location: Stuttgart / Germany

Re: CMS ms 1.x und SEO

Post by Wiedmann »

Wegen dem Statuscode 404 kann ich nur anmerken, selbst den kann CMSms standardmäßig bei der Fehlerseite nicht. Zumindest als ich das zuletzt bei ner 1.2.x überprüft habe.
Also bei mir setzt CMSMS den, wenn die 404 Seite aufgerufen wird (Global Settings).
/test.html
/index.php?page=test.html
Stimmt. Da bräuchte man erweiterte Rewrite Regeln
marcgeldon
Forum Members
Forum Members
Posts: 45
Joined: Mon Aug 14, 2006 1:13 pm

Re: CMS ms 1.x und SEO

Post by marcgeldon »

Hallo LeisureLarry!

Bin gerade auf Dein Beitrag gestoßen, da ich genau eben über dieses Thema schreiben wollte.

Meiner Meinung nach: wenn "use_hierarchy" deaktiviert ist, sollte es doch garnicht erst möglich sein "http://www.domain.de/tralala/hopsasa.html" aufzurufen. Es sollte dann nur "http://www.domain.de/hopsasa.html" funktionieren. Leider ist dem ja nicht so.

Das sollte doch besser von CMSMS abgefangen werden. Wenn ein Pfad angegeben wird, "use_hierarchy" allerdings auf "false" ist, sollte es zu einem "404" oder einer Umleitung zur "richtigen" URL kommen.

Was meint Ihr?
LeisureLarry

Re: CMS ms 1.x und SEO

Post by LeisureLarry »

Wäre schön, ist aber derzeit nicht technisch nicht möglich. Denn rein technisch gesehen, gibt es derzeit keine Hierarchien, da ein Seiten-Alias immer eindeutig sein muss. Es kann also keine zwei Aliasse geben, die identisch sind und sich nur durch ihre Position in der Hierarchie unterscheiden. Beim Seitenaufruf ist es sogar so, daß die Hierarchie-Angaben komplett ignoriert werden und nur der Alias benutzt wird, um die Seite zu finden. Ich denke auch nicht, daß sich da noch etwas vor Version 2.0 ändern wird.

Grüße aus Nürnberg
LeisureLarry (interiete.net)
marcgeldon
Forum Members
Forum Members
Posts: 45
Joined: Mon Aug 14, 2006 1:13 pm

Re: CMS ms 1.x und SEO

Post by marcgeldon »

Also ich denke schon, daß das technisch möglich ist. Bin mir sogar recht sicher :-)

Könnte wie folgt aussehen:

Beispiel use_hierarchy ist ANGESCHALTET:
CMSMS geht wie folgt vor: Benutzer ruft http://www.beispiel.de/abc/def/xyz.html auf. CMSMS überprüft ob die darüberliegenden Seitenaliase wirklich "def" und "abc" sind. Wenn nicht -> Umleitung auf 404.

Beispiel use_hierarchy ist AUSGESCHALTET:
Pfade in der URL werden grundsätzlich ignoriert. Benutzer ruft http://www.beispiel.de/xyz.html auf -> OK.
Benutzer ruft http://www.beispiel.de/pfad/xyz.html auf -> Umleitung auf 404
LeisureLarry

Re: CMS ms 1.x und SEO

Post by LeisureLarry »

Technisch möglich sicherlich, aber nicht mit der Technik von CMSms 1.3, da abc und def das CMS derzeit herzlich wenig interessieren. Derzeit wird einfach nur geprüft, was xyz ist und welcher Inhalt dazu gehört. Der Teil des CMS, welcher die Seiten lädt müsste komplett neu geschrieben werden, aber mit sowas rechne ich wie gesagt erst für CMSms 2.0.
marcgeldon
Forum Members
Forum Members
Posts: 45
Joined: Mon Aug 14, 2006 1:13 pm

Re: CMS ms 1.x und SEO

Post by marcgeldon »

So eine Funktion wäre doch aber - ohne Recht viel Aufwand - in das aktuelle CMSMS zu bringen.

Es wäre nur die Frage, ob die (Chef)Entwickler gewillt wären, die Änderungen in den CMSMS Standardsource zu bringen?
cyberman

Re: CMS ms 1.x und SEO

Post by cyberman »

marcgeldon wrote: So eine Funktion wäre doch aber - ohne Recht viel Aufwand - in das aktuelle CMSMS zu bringen.
OK, du hast den Job ;D .

Poste doch mal einfach einen Änderungsvorschlag ... ich werd sehen, was ich tun kann.
Sonya

Re: CMS ms 1.x und SEO

Post by Sonya »

Ich hatte zwar den Job nicht :) aber... wenn man in index.php NACH der Zeile:
$pageinfo = PageInfoOperations::LoadPageInfoByContentAlias($page);
so einen Code einfügt:
$manager =& $gCms->GetHierarchyManager();
$node =& $manager->GetNodeByAlias($page);

if (is_object($node)) {
$content =& $node->GetContent();
if (is_object($content))
{
if (!isset($params['mact']) &&
$config['root_url'].$_SERVER['REQUEST_URI'] != $content->GetURL()) {
if (get_site_preference('enablecustom404') == '' || get_site_preference('enablecustom404') == "0")
{
ErrorHandler404();
exit;
} else {
$pageinfo = PageInfoOperations::LoadPageInfoByContentAlias('');
}
}
}
}
dann sollte es klappen.

Was hier gemacht wird? Es wird versucht aus dem übergebenen Alias eine URL zu erzeugen. Wenn die URL der aufgerufenen Seite zu der erzeugten URL nicht passt, dann wird 404 Fehler ausgegeben.

Beispiel: Angenommen es gibt eine Seite unter http://www.mysite.com/sub/mypage. Wenn Hierarchie eingeschaltet ist und die Seite mit http://www.mysite.com/mypage aufgerufen wird, dann wird die obige Adresse, die von CMSMS generiert wird, nicht zu aufgerufenen URL passen und damit 404 produziert. Anders rum, wenn Hierarchie ausgeschaltet ist, schlägt die erste Variante fehl und gibt 404 zurück.

Ich habe es getestet mit
$config['assume_mod_rewrite'] = true;
$config['use_hierarchy'] = false;
sowie
$config['assume_mod_rewrite'] = true;
$config['use_hierarchy'] = true;
auf CMSMS 1.4.1 und CMSMS 1.2.5, beides geht.

Suche Tester :)
Last edited by Sonya on Wed Aug 20, 2008 4:14 pm, edited 1 time in total.
marcgeldon
Forum Members
Forum Members
Posts: 45
Joined: Mon Aug 14, 2006 1:13 pm

Re: CMS ms 1.x und SEO

Post by marcgeldon »

Hallo Sonya!

Hatte bisher leider nicht die Zeit. Aber ich werde mir das mal anschauen... Mal eine Frage in die Runde... wenn das funktioniert, wird es möglich sein, den Code in die Standardinstallation von CMSMS zu bekommen?

Ich meine, dass ist ja eine Funktion die bisher gefehlt hat!


LG,

Marc
Sonya

Re: CMS ms 1.x und SEO

Post by Sonya »

marcgeldon wrote: Mal eine Frage in die Runde... wenn das funktioniert, wird es möglich sein, den Code in die Standardinstallation von CMSMS zu bekommen?
Die Frage gebe ich gleich an den Meister weiter :)
cyberman wrote: Poste doch mal einfach einen Änderungsvorschlag ... ich werd sehen, was ich tun kann.
Sonya

Re: CMS ms 1.x und SEO

Post by Sonya »

cyberman wrote: Poste doch mal einfach einen Änderungsvorschlag ... ich werd sehen, was ich tun kann.
Für Entwickler: Übrigens, noch eleganter und performanter wäre es, wenn in die Variable $pageinfo die Information aus dem DB-Feld hierarchy_path mit übernommen wäre, dann müsste keine Rückwärtsprüfung der URL gemacht werden. Das erfordert aber einen Eingriff in Core-Klassen, unter anderem in die Funktion LoadPageInfoByContentAlias($alias) (class.pageinfo.inc.php). Die Lösung würde den Rahmen diesen Themas allerdings sprengen.
cyberman

Re: CMS ms 1.x und SEO

Post by cyberman »

marcgeldon wrote: wenn das funktioniert, wird es möglich sein, den Code in die Standardinstallation von CMSMS zu bekommen?
Ich denke schon ... nur fehlt mir die Rückmeldung, dass es funktioniert 8).
LeisureLarry

Re: CMSms 1.x und SEO

Post by LeisureLarry »

Da ja immer noch das Problem existiert, daß CMSms bei Pretty URLs trotzdem die Inhalte auch mit der alten URL angibt und es somit Duplicate Content gibt.
/test.html
/index.php?page=test.html
Hier nun ein benutzerdefinierter Tag, der dies lösen sollte:

Code: Select all

global $gCms;

if (preg_match('/index\.php\?/', $_SERVER['REQUEST_URI'])) {
header("HTTP/1.1 301 Moved Permanently");
$pageName = $gCms->variables['page_name'];
header('Location:'.$gCms->config['root_url'].'/'.$pageName.$gCms->config['page_extension']);
header("Connection: close");
}
Der Tag sollte mit einer CMSms-Installation im Root oder aber auch in einem Unterordner zurecht kommen.

Grüße aus Nürnberg
LeisureLarry (interiete.net)
Last edited by LeisureLarry on Mon Oct 20, 2008 9:20 am, edited 1 time in total.
LeisureLarry

Re: CMSms 1.x und SEO

Post by LeisureLarry »

Mir fiel gerade ein, daß es noch weitere nicht gewollte URLs (zB ohne Angabe von index.php) gibt:
/index.php?page=test
/?page=test
/?page=test.html
Deswegen hier das angepasste benutzerdefinierte Tag, daß nun auch keine Module mit ihrem mact Parameter mehr beeinflusst:

Code: Select all

global $gCms;

if (!isset($_REQUEST['mact']) && !empty($_GET['page']) && preg_match('/(index\.php)?\?/', $_SERVER['REQUEST_URI'])) {
header("HTTP/1.1 301 Moved Permanently");
$pageName = $gCms->variables['page_name'];
header('Location:'.$gCms->config['root_url'].'/'.$pageName.$gCms->config['page_extension']);
header("Connection: close");
}
P.S.: Direkt noch eine Frage. Hat jemand eine Ahnung, ob das mact Parameter im GET erlaubt sein muss für Module oder würde POST reichen?

Grüße aus Nürnberg
LeisureLarry (interiete.net)
Last edited by LeisureLarry on Mon Oct 20, 2008 10:07 am, edited 1 time in total.
Locked

Return to “Suchmaschinenoptimierung (SEO)”