Zur Navigation

alle Unterseiten die es nicht gibt auf die Startseite umleiten

1 UMatt (Gast)

Hallo Jörg, Hallo Forum

als erstes auch von mir ein großes Lob - hab schon einiges durch das lesen hier gelernt aber mein Problem ist noch nicht gelöst.

Ich habe eine Domain gekauft und die URLs haben sich komplett geändert.
Es gibt viele unterschiedliche alte dynamische URLs wie beispielsweise:

www.domain.com/index.php?id=53
www.domain.com/?products
www.domain.com/product.php?sub=box
usw..

Ich möchte hier keine individuellen Redirects anlegen, sondern würde gerne mittels htaccess Datei pauschal alle Unterseiten die es nicht gibt (wie die 3 beispiel oben) auf die Startseite umleiten.

Aktuell sieht meine htacces wie folgt aus:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^domain.com$ [NC]
RewriteRule ^(.*)$ http://www.domain.com/$1 [R=301,L]

Die Umleitung von nicht dynamischen Webseiten auf die Startseite klappt, aber wenn immer ein ? drin ist wird der Content der Startseite gezogen und nicht umgleietet.

Joomla 1.5.18 mit sef404 im Einsatz ;)

Hoffe du hast da eine Lösung.

21.03.2013 23:48

2 Jörg Kruse

Die Umleitung von nicht dynamischen Webseiten auf die Startseite klappt

Und wie sieht der Code für diese Umleitung konkret aus? die Zeilen in der .htaccess Datei sorgen ja nur für eine Weiterleitung zur www. Subdomain und das nicht zur Startseite sondern zur jeweiligen Unterseite

22.03.2013 15:20

3 Umatt (Gast)

Hierzu verwenden wir eine modifizierte "sh404sef.inc.php" des Sh404SEF Plugins.

Wir haben hier folgendes eingefügt:

/********************* 301 redirect to frontpage *******************/
if (!headers_sent()) {
header("Location: /"); /* Redirect browser */
header("Status: 301 Moved Permanently", true, 301);
exit; /* make sure the code below is not executed */
}
/********************* END 301 redirect to frontpage *************/
if (!sh404SEF_PAGE_NOT_FOUND_FORCED_ITEMID) {

22.03.2013 15:55

4 Umatt (Gast)

Dies funktioniert für alle nicht dynamischen URLs wunderbar und es wird auf die Startseite umgeleitet.

Aber ich benötige das noch zusätzlich für alle nicht existierenden dynamischen URLs dass die auch auf die Startseite umgeleitet werden.

22.03.2013 16:03

5 Jörg Kruse

Wenn ich es richtig verstanden habe, kümmert sich sh404sef.inc.php also nur um (nicht existierende) statische URLs?

Bei nicht existierenden dynamischen URL wird dagegen einfach die Startseite der Joomla-Installation angezeigt.

Die Schwierigkeit steckt nun in der Frage, was "nicht existierend" ist. Der Webserver kann hier nur auf reale Dateien prüfen. Die Index-Datei ist aber ja wahrscheinlich vorhanden, also lässt sich diese Beispiel-URL nicht als "nicht existierend" identifizieren:

www.domain.com/index.php?id=53

Alternativ könntest du in der .htaccess Datei alle URLs, die einen Query String enthalten, auf die Startseite weiterleiten. Das könnte vielleicht so funktionieren (ungetestet):

RewriteCond %{THE_REQUEST} \?
RewriteRule .* http://%{HTTP_HOST}/ [R=301,L]

Das setzt aber voraus, dass deine Joomla-Installation vollständig ohne dynamische URLs auskommt. Was womöglich nicht der Fall ist?

22.03.2013 17:03 | geändert: 22.03.2013 17:04

6 Umatt (Gast)

Also Dynamische URLs gibts nur im Admin Bereich - auf der public Webseite sind alle URLs .html dateien oder verzeichniss.

Bekomme wenn ich denen Code einbinde:
Fehler 310 (net::ERR_TOO_MANY_REDIRECTS): Zu viele Umleitungen.
Aus www.domain.com/index.php?id=53 wird dann: http://www.domain.com/?id=53 und nicht http://www.domain.com

Hab vorhin noch was bei meiner Suche entdeckt und zwar:
RewriteCond %{QUERY_STRING} ^\w+$
RewriteRule ^$ http://www.domain.com/? [R=301,L]

Dies funktioniert aber nur bei manchen URLs wie bsp
http://www.domain.com/?asdf > wird redirected
http://www.domain.com/?as-df > wird nicht redirect ... versteh aber nicht warum da eine Bindestrich ein Unterschied macht.

Wirklich verstehen tue ich das Thema irgendwie immer weniger ...

Hast noch eine Idee?

22.03.2013 19:04

7 Jörg Kruse

Probier mal das hier:

RewriteCond %{THE_REQUEST} \?[^\s]+
RewriteRule .* http://%{HTTP_HOST}/? [R=301,L]

Also Dynamische URLs gibts nur im Admin Bereich

Wie sehen die URLs denn dort aus - gibt es da ein eigenes Unterverzeichnis?

22.03.2013 19:25

8 Umatt (Gast)

Ja der Adminbereich liegt per default im Verzeichnis /administrator

Also wenn ich deinen Code einbaue dann funktionieren die redirects alle wunderbar, ABER

- Die Formatierung der Webseite ist futsch, keine CSS Formatierung mehr.
- Ich kann mich im Admin Bereich noch einloggen, aber darin nix machen. Der Beitragsmanager mit der URL http://www.domain.com/administrator/index.php?option=com_content geht nimmer und ich lande auf der domain-root.

Könnte man für die RewriteCond einzelne Verzeichnisse ausschließen? Oder Alternativ nur dann die Rule anwenden wenn die Dynamische URL mit ? direkt im Root, also "nicht in einem Verzeichnis ist ?

Bin optimistisch dass Du das hin bekommst ;)

23.03.2013 00:08

9 Jörg Kruse

Ja der Adminbereich liegt per default im Verzeichnis /administrator

Dazu kannst du eien Ausnahme definieren:

RewriteCond %{THE_REQUEST} \?[^\s]+
RewriteCond %{REQUEST_URI} !^/administrator
RewriteRule .* http://%{HTTP_HOST}/? [R=301,L]

- Die Formatierung der Webseite ist futsch, keine CSS Formatierung mehr.

Dann werden vielleicht (dynamische) URLs von CSS-Dateien weitergeleitet? liegen diese in einem eigenen Verzeichnis? dazu könntest du dann auch eine Ausnahme definieren.

23.03.2013 07:37 | geändert: 23.03.2013 07:38

10 Umatt (Gast)

Hi Jörg

Jau das sieht sehr gut aus.

Wenn ich das Verzeichnis exclude geht der Admin Bereich wieder.
Hab dann noch einen exclude für das Templates Verzeichnis eingebaut und dann passt das Layout auch wieder.

Denke es macht sinn dass ich pauschal dort alle default Verzeichnisse von Joomla eintrage um sicher zu sein.

Aber es geht - wow - super vielen Dank !!!
Alle dynamischen URLs werden weitergeleitet.

23.03.2013 10:59

Beitrag schreiben (als Gast)

Die Antwort wird nach der Überprüfung durch einen Moderator freigeschaltet.





[BBCode-Hilfe]