Das Problem stellt sich ja nicht nur bei CMSimple. Das ist bei vielen anderen Systemen fast identisch.
Wenn man CMSimple in der Grundinstallation betreibt, kann man alle Seiten unter 2 verschiedenen URLs aufrufen.
Die Startseite sogar unter 4 verschiednen URLs.
normale Seite:
Code: Select all
domain.tld/?irgendeine-seite
domain.tld/index.php?irgendeine-seite
http://www.cmsimple-xh.org/de/?CMSimple
http://www.cmsimple-xh.org/de/index.php?CMSimple
Startseite:
Code: Select all
domain.tld/
domain.tld/index.php
domain.tld/?eureStartseite
domain.tld/index.php?eureStartseite
http://www.cmsimple-xh.org
http://www.cmsimple-xh.org/index.php
http://www.cmsimple-xh.org/?Home
http://www.cmsimple-xh.org/index.php?Home
Wenn der Webserver oder auch nur das Hostingpaket ungünstig konfiguriert ist, dann ist der Aufruf mit und ohne www. möglich und das Ganze verdoppelt sich sogar noch.
Dann sind Seiten unter 4 bzw. die Startseite unter 8 verschiedenen URLs erreichbar.
normale Seite:
Code: Select all
domain.tld/?irgendeine-seite
domain.tld/index.php?irgendeine-seite
http://www.domain.tld/?irgendeine-seite
http://www.domain.tld/index.php?irgendeine-seite
Code: Select all
domain.tld/
domain.tld/index.php
domain.tld/?eureStartseite
domain.tld/index.php?eureStartseite
http://www.domain.tld/
http://www.domain.tld/index.php
http://www.domain.tld/?eureStartseite
http://www.domain.tld/index.php?eureStartseite
oder eine entsprechende Regel in der eigenen .htaccess einrichten, die sich darum kümmert.
Wobei ich mit der Weile dafür bin, das www. wegzulassen.
Als Regel für die .htaccess (jeweils die zweite Zeile für http bzw. die dritte für https, entsprechend die # entfernen!)
Code: Select all
# Umleitung auf www.
RewriteCond %{HTTP_HOST} !^www\. [NC]
#RewriteRule ^(.*)$ http://www\.%{HTTP_HOST}/$1 [R=301,L]
#RewriteRule ^(.*)$ https://www\.%{HTTP_HOST}/$1 [R=301,L]
# Ende Umleitung auf www.
Code: Select all
# Umleitung ohne www.
RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
#RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
#RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
# Ende Umleitung ohne www.
Wer auf SSL setzt, der sollte jetzt noch dafür sorgen, dass wirklich alle Aufrufe auf https umgeleitet werden.
Ich habe robots.txt und die Ausgaben von Sitemapper_XH noch ausgenommen. Das könnt ihr also durchaus auch weglassen.
Ob das sinnvoll/nötig ist? Es kann nicht schaden denke ich.
Die letzte Zeile ist auch nicht zwingend notwendig.
Code: Select all
# SSL ein
RewriteCond %{HTTPS} =off
RewriteCond %{REQUEST_URI} !^/(robots\.txt) [NC]
RewriteCond %{query_STRING} !^(sitemapper_index|sitemapper_sitemap)(.*)$ [NC]
#
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
Header set Strict-Transport-Security "max-age=604800" env=HTTPS
# Ende SSL ein
Mit einer weiteren Regel in der htaccess kann man index.php aus der URL entfernen. (auch hier wieder der Unterschied http oder https, entsprechend die # entfernen!)
Code: Select all
# index.php wir aus URL entfernt
#RewriteRule ^([a-z]?[a-z]?/?)index\.php$ http://%{HTTP_HOST}/$1 [R=301]
#RewriteRule ^([a-z]?[a-z]?/?)index\.php$ https://%{HTTP_HOST}/$1 [R=301]
# Ende index.php wir aus URL entfernt
Vor diesen Regeln, wenn nicht schon vorhanden muss:
Code: Select all
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
Code: Select all
</IfModule>
Das habe ich bisher mit einem Kanonischen Link gelöst.
Also die seite domain.tld/?eureStartseite bekommt einen Kanonischen Link auf domain.tld/
Code: Select all
<link rel="canonical" href="http://domain.tld/">
Das war ursprünglich für einen anderen Zweck gedacht, aber der kanonische Link bei der Startseite wird auch erzeugt.
Sollte allerdings nicht eingesetzt werden, wenn ihr Polyglott_XH (http://3-magi.net/de/?CMSimple_XH/Polyglott_XH) verwendet, da dann die hreflang Links schon erzeugt werden.
Auf die Spitze kann man das treiben, wenn man die Seite unter mehreren Domains aufrufen kann.
Auch hier sollte man sich für eine Domain entscheiden und die anderen nur weiterleiten (301 !), wenn es denn schon mehrer sein müssen.
Gruss Olaf