Seite 1 von 1

Duplicte Content - Suche verzweifelt nach mod_rewrite Rule

Verfasst: 02.04.2012, 14:22
von thomas_x3
Sorry, ich weiß, dass das hier thematisch vielleicht nicht so reinpasst, aber ich finde einfach nirgendwo eine Lösung für mein Problem. :-?

Google hat meine Seite zum Teil doppelt indexiert, einmal die einzelnen Seiten mit- und einmal ohne .html Endung, das ist wohl sehr schlecht. Ich möchte alle Seiten die nicht auf .html enden per 301 auf die gleichnamige Seite mit .html Endung umleiten, aber ich finde einfach nicht raus wie die mod_rewrite Regel dafür lautet... :(

Verfasst:
von

Verfasst: 02.04.2012, 14:29
von chris21

Code: Alles auswählen

RewriteCond %{REQUEST_URI} !^/(.*)/$
RewriteCond %{REQUEST_URI} !^/(.+)\.html$
RewriteRule ^(.*)$ http://www.spotcatch.net/$1.html [R=301,L]
Die erste Kondition prüft, ob es ein Verzeichnis ist (z.B. spotcatch***/maingallery/laenderstaedte/ ), da hier ja kein .html angehängt werden soll.

Die zweite prüft, ob für Nicht-Verzeichnisse das .html fehlt.

Ist dies der Fall, wird die URL auf die Version mit .html umgeleitet.

PS: Das richtige Unterforum für solche Themen heißt: Weiterleitungen und Mod_rewrite

Irgendein armer Mod wird es für Dich vll. freundlicherweise verschieben.

Verfasst: 02.04.2012, 14:41
von thomas_x3
Danke erstmal!
chris21 hat geschrieben:https://www.spotcatch.net/maingallery/laenderstaedte/ ), da hier ja kein .html angehängt werden soll.
Warum nicht?

Leider haut da aber sowieso was nicht hin. Wenn ich auf Reiseberichte geh, dann werde ich auf spotcatch.net/index.php.html umgeleitet?

/edit
Ich glaub bei der von dir definierten Regel wären Unterseiten ausgeschlossen, versteh ich das richtig? Grundsätzlich sind ja leider alle Unterseiten von dem Problem betroffen.

chris21 hat geschrieben: PS: Das richtige Unterforum für solche Themen heißt: Weiterleitungen und Mod_rewrite

Irgendein armer Mod wird es für Dich vll. freundlicherweise verschieben.
Danke für den Hinweis!

Verfasst:
von
SEO Consulting bei ABAKUS Internet Marketing
Erfahrung seit 2002
  • persönliche Betreuung
  • individuelle Beratung
  • kompetente Umsetzung

Jetzt anfragen: 0511 / 300325-0.


Verfasst: 02.04.2012, 14:47
von thomas_x3
sorry, doppelpost

Verfasst: 02.04.2012, 15:46
von chris21
Ah, die index.php war nicht bedacht.

Zudem scheint bei den Verzeichnissen auch ein Problem zu bestehen.



Da scheint das ganze System murks zu sein.

die /laenderstaedte/ kann ich unter

/laenderstaedte
/laenderstaedte/
und
/laenderstaedte.html

erreichen.

Dadurch erbit sich aber ein Problem, welches sich auch nicht mit mod_rewrite abfangen lassen kann.

Woher soll man wissen, ob nun die

/laenderstaedte auf

/laenderstaedte/

oder auf

/laenderstaedte.html

umgeleitet werden soll?

Ich würde daher empfehlen, erstmal das CMS so zu verbessern, dass hier nur noch eine URL glültig ist und dann kann Regeln überlegen, wie die falschen auf die richtigen leiten.

Falls Du überall auf die .html leiten willst, also auch bei Verzeichnissen:

Code: Alles auswählen

RewriteCond %{REQUEST_URI} ^/(.*)/$
RewriteRule ^(.*)/$ http://www.spotcatch.net/$1.html [R=301,L]
RewriteCond %{REQUEST_URI} !^/(.+)\.php$
RewriteCond %{REQUEST_URI} !^/(.+)\.html$
RewriteRule ^(.*)$ http://www.spotcatch.net/$1.html [R=301,L]

Verfasst: 02.04.2012, 16:07
von Melegrian
Dachte auch gerade, dass sich da noch eine Regel in der htaccess befindet, die es erst ermöglicht, dass sich /reiseberichte und /reiseberichte.html aufrufen lassen.

Verfasst: 02.04.2012, 19:01
von 800XE
chris21 hat geschrieben:Ich würde daher empfehlen, erstmal das CMS so zu verbessern, dass hier nur noch eine URL glültig ist
nur mal so generel

Es wird immer gerne gesagt ".html" braucht man nicht
dadurch hat man aber das Problem das man nicht gleich weiss ob es jetzt
/name(Ordner)
/name.datei
ist

also, braucht man ".html" vielelicht doch?
weil
wenn man es nicht normal macht
braucht man sich nicht wndern wen man verrückt wird

Verfasst: 03.04.2012, 07:37
von thomas_x3
chris21 hat geschrieben: Da scheint das ganze System murks zu sein.

die /laenderstaedte/ kann ich unter

/laenderstaedte
/laenderstaedte/
und
/laenderstaedte.html

erreichen.
Ja ich weiß, total blöd :(
chris21 hat geschrieben: Ich würde daher empfehlen, erstmal das CMS so zu verbessern, dass hier nur noch eine URL glültig ist und dann kann Regeln überlegen, wie die falschen auf die richtigen leiten.
hmm, ok. Ich hab' jetzt leider nur überhaupt keinen Dunst, wo in Joomla ich da was drehen könnte? Zu meiner Schande muss ich noch auch zugeben, dass ich derzeit noch auf 1.5 bin...
chris21 hat geschrieben: Falls Du überall auf die .html leiten willst, also auch bei Verzeichnissen:
Das wär zumindest mal ne erste Notlösung, oder? Besser als so wie's jetzt ist, oder?
Melegrian hat geschrieben:Dachte auch gerade, dass sich da noch eine Regel in der htaccess befindet, die es erst ermöglicht, dass sich /reiseberichte und /reiseberichte.html aufrufen lassen.
Ich glaube die Hauptursache für den ganzen Murks ist, dass ich in Joomla die Option "Dateiendung an URL fügen" deaktiviert hatte, als die Seite schon seit längerer Zeit am laufen war. Einer der vielen SEO Tipps riet dazu, keine Endungen zu verwenden (html, php usw.) also habe ich ohne groß nachzudenken, das einfach deaktiviert. Da sich dadurch aber ein anderes Problem ergab, habe ich nach ein paar Tagen wieder zurückgestellt. Ich glaub deshalb ist nun jede Seite auch ohne .html Suffix erreichbar. In dieser Zeit hat Google natürlich längst ein paarmal vorbei geschaut und nun ist einiges doppelt im Index...

Verdammt, das ist echt blöd. Wie könnte ich dem ganzen Herr werden, ich hab' leider garkeine Idee... :cry:

Hier übrigens der Inhalt meiner htaccess

Code: Alles auswählen

RewriteCond %{HTTP_HOST} !^(www|img|js|css)\.spotcatch\.net$ [NC]
RewriteRule ^(.*)$ http://www.spotcatch.net/ [R=301,L]
RewriteRule ^cms(.*)$ / [R=301,L]
RewriteRule ^home-mainmenu-1\.html$ / [R=301,L]
RewriteRule ^ueber-mich/64.html$ /ueber-mich.html [R=301,L]
RewriteRule ^component/content/frontpage$ / [R=301,L]
RewriteRule ^component/content/frontpage\.html$ / [R=301,L]
RewriteRule ^reiseberichte/236-malaysien.html$ http://www.spotcatch.net/reiseberichte/236-malaysia.html [R=301,L]
RewriteRule ^reiseberichte/236-malaysien-reiseblog.html$ http://www.spotcatch.net/reiseberichte/236-malaysia.html [R=301,L]

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteRule ^index\.php$ http://%{HTTP_HOST}/ [R=301,L,NC]

RewriteCond %{QUERY_STRING} option=com_content&view=frontpage&Itemid=26$
RewriteRule ^(.*)$ http://www.spotcatch.net/maingallery.html? [R=301,L,NC]

RewriteCond %{REQUEST_URI} !^/component/content/article/231.html$
RewriteRule (.*)231\.html$ /component/content/article/231.html [R=301,L,NC]
Wär wirklich sehr dankbar für eure Hilfe.

/edit
chris21 hat geschrieben:

Code: Alles auswählen

RewriteCond %{REQUEST_URI} ^/(.*)/$
RewriteRule ^(.*)/$ http://www.spotcatch.net/$1.html [R=301,L]
RewriteCond %{REQUEST_URI} !^/(.+)\.php$
RewriteCond %{REQUEST_URI} !^/(.+)\.html$
RewriteRule ^(.*)$ http://www.spotcatch.net/$1.html [R=301,L]
Führt übrigens zu -> spotcatch.net/.html

Verfasst: 04.04.2012, 07:52
von thomas_x3
Keine ne Idee? :-/

Verfasst: 04.04.2012, 07:58
von CyberNibbler
Vielleicht wäre es besser, wenn du dich mit dem Problem in einem Joomla-Forum meldest.

Verfasst: 04.04.2012, 08:04
von thomas_x3
Hab' ich schon versucht, bisher leider vergebens. Aber ich werd' dran bleiben.

Aber ich denke wenn die mod_rewrite Rule erstmal läuft, dann wär das eh keine so schlechte Lösung, oder? Oder ist es wichtig, dass z.b. die Kategorie "Länder Städte" als Verzeichnis dargestellt wird? Ich versteh da ehrlich gesagt die Zusammenhänge etwas zu wenig...

Verfasst: 04.04.2012, 12:06
von chris21
/edit
chris21 hat Folgendes geschrieben:

Code:

RewriteCond %{REQUEST_URI} ^/(.*)/$
RewriteRule ^(.*)/$ https://www.spotcatch.net/$1.html [R=301,L]
RewriteCond %{REQUEST_URI} !^/(.+)\.php$
RewriteCond %{REQUEST_URI} !^/(.+)\.html$
RewriteRule ^(.*)$ https://www.spotcatch.net/$1.html [R=301,L]

Führt übrigens zu -> spotcatch.net/.html
Komisch.

Dann probier mal:

Code: Alles auswählen

RewriteCond %{REQUEST_URI} ^/(.+)/$
RewriteRule ^(.*)$ http://www.spotcatch.net/%1.html [R=301,L]
RewriteCond %{REQUEST_URI} !^/(.+)\.php$
RewriteCond %{REQUEST_URI} !^/(.+)\.html$
RewriteRule ^(.*)$ http://www.spotcatch.net/$1.html [R=301,L]
Den Block hinter der zweiten Zeile

Code: Alles auswählen

RewriteRule ^(.*)$ http://www.spotcatch.net/ [R=301,L] 
in Deine .htaccess einfügen.

PS: Link oben wie gewünscht maskiert.

Verfasst: 04.04.2012, 12:56
von thomas_x3
chris21 hat geschrieben: Link oben wie gewünscht maskiert.
Danke :wink:

Das Ganze scheint sich grad zu einer never ending Story zu entwickeln, hat aber den Vorteil, dass ich mit mod_rewrite grad warm werde. ^^

Ich glaub der Grund warum die Regel von dir - chris21 - noch nicht funktioniert ist, weil noch eine Zeile fehlt:

Code: Alles auswählen

RewriteCond %{REQUEST_URI} ^/(.*)/$
RewriteRule ^(.*)/$ http://www.spotcatch.net/$1.html [R=301,L]
-> RewriteCond %{REQUEST_URI} ^/.+
RewriteCond %{REQUEST_URI} !^/(.+)\.php$
RewriteCond %{REQUEST_URI} !^/(.+)\.html$
RewriteRule ^(.*)$ http://www.spotcatch.net/$1.html [R=301,L] 
Diese eine Zeile sollte, wenn ich das nun endlich richtig durchblickt habe, zusätzlich die Bedingung stellen, dass hinter der root Domain was kommen muss, was bei www.spotcatch.net ja nicht zutrifft. Das funktioniert nun auch soweit, das Umschreiben funktioniert.
Leider ist es trotzdem nicht verwendbar, da es mir nun alle Styles zerschiesst. :evil: ^^

Naja irgendwie ne spannende Sache, deshalb habe ich weiter dran rumgespielt und die o.g. Regeln wie folgt gepimpt:

Code: Alles auswählen

RewriteCond %{REQUEST_URI} ^/(.*)/$
RewriteRule ^(.*)/$ http://www.spotcatch.net/$1.html [R=301,L]
RewriteCond %{REQUEST_URI} ^/.+
RewriteCond %{REQUEST_URI} !^/(.+)\.css$
RewriteCond %{REQUEST_URI} !^/(.+)\.jpg$
RewriteCond %{REQUEST_URI} !^/(.+)\.js$
RewriteCond %{REQUEST_URI} !^/(.+)\.png$
RewriteCond %{REQUEST_URI} !^/(.+)\.xml$
RewriteCond %{REQUEST_URI} !^/(.+)\.swf$
RewriteCond %{REQUEST_URI} !^/(.+)\.php$
RewriteCond %{REQUEST_URI} !^/(.+)\.html$
RewriteRule ^(.*)$ http://www.spotcatch.net/$1.html [R=301,L]
Das ist schon besser, nun sieht die Seite halbwegs so aus wie sie sollte.
Trotzdem ist auch das nicht verwendbar, da die Flash Elemente auf der Seite noch immer nicht geladen werden, und, eigentlich noch schlimmer, die Performance ist mit diesen Regeln unter aller Sau.

0X

Verfasst: 04.04.2012, 13:04
von chris21
Mit mod_rewrite warm werden hilft immer:

Nochmal als Vereinfachung und wichtiges Wissen zu Regex Regeln: ein .* bedeutet: kein oder beliebige Zeichenkette. Ein .+ bedeutet: beliebige Zeichenkette, aber mindestens ein Zeichen.

Daher hatte ich im Post über Deinen eine Alternative drin, die Du anscheinend noch nicht getestet hast.

Diese Alternative bringe ich mal mit Deinen Änderungen zusammen und verbessere nebenbei die Performance durch Zusammenlegen einiger RewriteCond:

Code: Alles auswählen

RewriteCond %{REQUEST_URI} ^/(.+)/$
RewriteRule ^(.+)/$ http://www.spotcatch.net/%1.html [R=301,L]
RewriteCond %{REQUEST_URI} !^/(.+)\.(css|jpg|js|png|xml|swf|php|fla|html|txt)$
RewriteRule ^(.+)$ http://www.spotcatch.net/$1.html [R=301,L]