Ergebnis 1 bis 9 von 9

Thema: URL umschreiben per htaccess

  1. #1
    Contao-Nutzer
    Registriert seit
    18.08.2011.
    Beiträge
    68

    Standard URL umschreiben per htaccess

    Hi,
    habe da ein kleines Problem, habe eine Homepage auf Contao umgezogen und nun das Problem das es zuvor mehrere URLs für eine Seite gab.
    Die waren "www.meineDomain.de/meineseite.html" und "www.meineDomain.de/meineseite-2.html" oder "www.meineDomain.de/meineseite-13.html" ....

    Nun möchte ich alle Seiten die diese Nummern haben umschreiben auf die URL ohne Nummer, da es nun mit Contao keine Doppelbelegen der URLs mehr gibt, nur noch die URL ohne Bindestrich und die Nummer.
    Da aber noch im WWW diese fehlerhaften Links vorhanden sind brauch ich diese Umleitung.

    Heißt, immer wenn eine URL mit ....meineSeite-NUMMER.html aufgerufen wurde, soll diese umgeleitet werden auf ...meineSeite.html

    Hoffe mir kann jemanden helfen.

    Danke

  2. #2
    Contao-Nutzer
    Registriert seit
    14.03.2012.
    Ort
    Berlin
    Beiträge
    225

    Standard

    Hi,

    entweder machst du es direkt über die .htaccess Datei, oder du nimmst diese Erweiterung, womit du es direkt über das Backend machen kannst: https://github.com/psi-4ward/redirect4ward

    Grüße

  3. #3
    Contao-Nutzer
    Registriert seit
    18.08.2011.
    Beiträge
    68

    Standard

    Danke für den Tipp.
    Habe es auch schon installiert und eingerichtet.

    Wenn mir jemand jetzt noch bei einem Eintrag für die htaccess Datei helfen würde wäre das super. Da mein Vorgänger so ca. 100 und mehr doppelte URLs angelegt und diese auch verlinkt hat, ist das etwas zu viel um diese alle mit dem Modul anzulegen.
    Da das Schema der URLs immer das selbe ist "-Zahl.html", wäre es mit einem Eintrag, der den Bindestrich und die Zahl vor dem .html entfernt, in der htaccess getan.

    Danke

  4. #4
    Contao-Nutzer
    Registriert seit
    14.03.2012.
    Ort
    Berlin
    Beiträge
    225

    Standard

    Dann dürftest du aber keine Seiten in Contao erzeugen, die am Ende des Aliases einen Bindestrich und eine Nummer haben. Diese würden sonst auch umgeleitet werden. Oder du beschränkst die Regel auf eine bestimmte Unterseite.
    Ich weiß jetzt nicht genau, wie die Regel in der htaccess aussehen muss, aber mit folgendem regulären Ausdruck solltest du weiter kommen: http://regexr.com?37ua8

  5. #5
    Alter Contao-Hase Avatar von bizon
    Registriert seit
    16.06.2010.
    Beiträge
    1.123

    Standard

    Probiere das mal
    Code:
    RewriteEngine on
    RewriteRule ^meineSeite(-[0-9]+)\.html$ /meineSeite.html [R=301,L]

  6. #6
    Contao-Nutzer
    Registriert seit
    18.08.2011.
    Beiträge
    68

    Standard

    Hi,
    habe nun folgenden Eintrag in der htaccess gemacht:

    RewriteRule ^([a-zA-Z]+)-\d+(\.html) $1$2 [R=301,L]

    zeigt aber keine Wirkung.

    Es handelt sich um verschiedene URLs, wie z.B.:
    .../Ordner/unterOrdner/page-4.html
    .../Ordner/page-53.html
    .../page-6.html

    Was alle gemeinsam habe ist das alle auf Bindestrich Zahl vor dem .html enden.
    Und es gibt und soll auch keine URLs mehr geben die mit Bindestrich Zahl .html enden sollen.

    Danke

  7. #7
    Alter Contao-Hase Avatar von bizon
    Registriert seit
    16.06.2010.
    Beiträge
    1.123

    Standard

    Zitat Zitat von BlackP
    RewriteRule ^([a-zA-Z]+)-\d+(\.html) $1$2 [R=301,L]
    zeigt aber keine Wirkung.
    Kann ich nicht glauben. Das sollte funktionieren, jedenfalls wenn die Datei im Root-Verzeichnis liegt. Dass die umzuschreibende Datei auch in einem Unterordner liegen kann, hast du uns im ersten Post nicht mitgeteilt.

    Ich hab die Version von jk1 noch etwas modifiziert, falls die Dateinamen auch vor dem zu entfernenden Teil noch Zahlen, Binde-oder Unterstriche enthalten.
    Eintragen in der .htaccess direkt nach der RewriteBase.

    Code:
    ##
    # Schreibt meineSeite-1.html oder meineSeite-12345.html um zu meineSeite.html
    # Zeile 1 - wenn die Datei im Root-Verzeichnis liegt
    # Zeile 2 - wenn die Datei in einem Unterverzeichnis liegt
    ##
    RewriteRule ^([a-zA-Z0-9+_\-]+)-\d+(\.html) $1$2 [R=301,L]
    RewriteRule ^(.*)/([a-zA-Z0-9_\-]+)-\d+(\.html) $1/$2$3 [R=301,L]
    EDIT: Korrektur einer Maskierung, dadurch den Code um eine Zeile verkürzt
    Geändert von bizon (10.01.2014 um 13:00 Uhr)

  8. #8
    Contao-Nutzer
    Registriert seit
    18.08.2011.
    Beiträge
    68

    Standard

    TOP
    super, Danke es funktioniert.

    Hatte ursprünglich den Eintrag weiter unten in der htaccess nicht direkt nach dem RewriteBase, vielleicht hat es daran gelegen.
    Auf jeden fall funktioniert es jetzt super.

    Hat jemand noch eine Empfehlung wo man die htaccess Techniken gut erklärt bekommt und erlernen kann.

    Danke nochmal an alle!

  9. #9
    Alter Contao-Hase Avatar von bizon
    Registriert seit
    16.06.2010.
    Beiträge
    1.123

    Standard

    Die Anweisungen für die htacess in meinem letzten Post konnte ich um eine Zeile reduzieren.

    Wie so oft, setzt sich auch das KnowHow für die .htaccess aus verschiedenen Techniken zusammen:

    1. Die Apache Direktiven, die du auf der Apache Website nachlesen kannst
    2. und aus sogenannten Regulären Ausdrücken, die man z.B auch in PHP anwendet. Ein nettes Tutorial dazu ist hier.
    Geändert von bizon (10.01.2014 um 13:12 Uhr)

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •