35

Kurze Bitte um Hilfe mit RewriteEngine .htaccess

Kann mir mal bitte jemand kurz unter die .htaccess-Arme greifen (Max ist im Urlaub)?

Ich möchte per RewriteEngine in der .htaccess eine URL-Umleitung vornehmen, die alte URLs, die das Directory „blog“ beinhalten, auf eine Ebene höher umleitet.

Aus
http://www.spreeblick.com/blog/index.php?p=324 (und allen anderen Seiten-IDs auch)
soll
http://www.spreeblick.com/index.php?p=324
werden.

Das kann nicht so schwer sein, aber ich stelle mich zu blöde an.

Danke!

35 Kommentare

  1. 01

    Versuch mal das hier (EDIT):
    RewriteRule ^(blog)/(.*)\$ http://www.spreeblick.com/\$2 [R=301,L]

    Bin mir nicht 100% sicher, aber das könnte klappen ;)
    (Backlash vorm dollar weg, habe ich gemacht, weil er den sonst nicht anzeigt…)

  2. 02
    Torsten

    Geht das nicht so:

    Redirect /blog http://www.spreeblick.com

    edit: nee, Stuss…

  3. 03

    @maurice: Wofür steht denn die „301, L“?

    Ich versuch’s mal „¦

    Edit: Nee, geht nicht.

    Ich habe bisher:


    RewriteEngine On
    RewriteBase /

    Aber das Wichtigste fehlt „¦

  4. 04

    Hier mal mein Vorschlag. So funktionieren zumindest unsere Rules hier.

    RewriteRule ^/blog/(.*) http://spreeblick.com/$1 [L,R]

    Was das L,R bedeutet müsste ich auch nachlesen.

  5. 05

    grr. da gehört natürlich ein Dollarzeichen vor die 1 am Ende. Leider hats der Kommentar geschluckt und editieren geht auch nicht mehr.

    RewriteRule ^/blog/(.*) http://spreeblick.com/$$1 [L,R]

  6. 06

    @Karsten: Da steht ein Dollar, der wird aber nicht angezeigt (Finanzkrise jetzt schon im Code, haha!), obwohl ich alles in < code > Tags gepackt habe „¦

  7. 07
  8. 08
    Philip

    Wenn es permanent umgeleitet werden soll, reicht dieser Eintrag irgendwo in der .htaccess (klappt zumindest bei mir)

    RedirectPermanent /blog http://spreeblick.com/

  9. 09

    Dokumentation: Apache, SELFHTML. Vorschlag:

    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteRule ^/(blog)(.*)$ /$2 [R,L]
    </IfModule>

    (Nicht ausprobiert, bei Maurice fehlt mMn ein /)

  10. 10

    @Markus Ehrlich: Komisch, das geht auch nicht, obwohl’s richtig aussieht.

    @Philip: HA! Das geht! Na klar! Aber es ist nicht die „sauberste“ Lösung, oder? Soll mir erstmal egal sein, danke dir sehr (und auch allen anderen)! Ich teste gerne andere Vorschläge auch noch, an einen permanenten Redirect hab ich peinlicherweise nicht gedacht „¦

  11. 11

    @Johnny Haeusler: Mein Fehler war die Klammer -> Du müsstest das Dollar 1 durch Dollar 2 ersetzen. Dann sollte auch diese Lösung klappen.

  12. 12

    @stralau: Nee „¦ leider.

    @Markus Ehrlich: Nützt nix. Langsam frage ich mich, ob der Fehler woanders liegt. (Die permanente Lösung geht nach wie vor „¦)

  13. 13
    Torsten

    Verdammt, und ich war so nah dran…:-)

  14. 14
  15. 15
    Laurens

    Das R=301 steht für den Statuscode der bei der Weiterleitung mitgegeben wird (hier 301 = permanent),
    das L bedeutet, dass keine weiteren Regeln angewendet werden sollen (Last)

  16. 16

    Es sollte *nicht* die .htaccess im /blog-Ordner genommen werden, sondern die ein Verzeichnis höher. (Falls es daran hakelt)

    Und dann:

    RewriteRule ^/blog/(.*)$ /$1 [L]

    Also fast wie bei @stralau, nur mit einem Slash woanders und ohne das Redirect-Flag (R), das L verhindert, dass auf der geänderten URL noch andere Regeln angewendet werden.

    EDIT: Das muss natürlich *vor* den Einträgen von WordPress stehen.

  17. 17

    @Laurens: Danke!

    @Christian Schorn: .htaccess ist im Web-Root. Aber auch die Lösung funktioniert nicht. Dabei stimmt alles: Alles im Dir „blog“ mit allem danach soll auf Root, als nur /, verweisen „¦ und das auch anzeigen (L).

    Vielleicht doch ein anderer Fehler? Ich hatte auch das „RewriteBase /“ rausgenommen, ändert nix.

  18. 18
    tbo

    @Christian: ist da nicht ein „/“ zu viel? Wenn die Datei im übergeordneten Verzeichnis von blog/ liegt, sollte die Umleitung eigentlich so funktionieren:
    RewriteRule ^blog/(.*) /$1 [R=301,L]

  19. 19

    @tbo: Leider auch kein Erfolg. :(
    Da stimmt was nicht. Hier.

    Wir haben davor eine andere Umleitung, die läuft:
    RewriteRule ^toni(.*) http://spreeblick.com/category/toni-mahoni(Dollarzeichen)1 [R,L]

    Aber jeder Versuch, das auf das aktuelle Beispiel anzuwenden, misslingt.

  20. 20
    Jan(TM)

    Was sagt den die log Datei?

  21. 21

    Genau wie für Toni:

    RewriteRule ^blog/(.*) http://spreeblick.com/(Dollarzeichen)1 [R,L]

  22. 22

    @tbo: Wenn man in der Web-Root ist, ist der Slash immer da (habe gerade ein paar von meinen .htaccessen durchgesehen).

    @Johnny: wie wäre es denn stattdessen mit mit einem ganz normalen Redirect:

    Redirect 301 /blog http://spreeblick.com

    Das sollte es auch tun (Wenn AllowOverride All in der Konfigurationsdatei gesetzt ist, wovon ich jetzt mal ausgehe).

  23. 23

    @Sebastian: Dachte ich auch. Aber: Nee.

    @Jan(TM): Das hält mich jetzt schon viel zu lange von anderen Dingen ab „¦ :) Vlt. warte ich lieber auf Max, Log-Dateien auswerten war noch nie meine Stärke „¦

  24. 24

    @Christian Schorn: Jau, der geht (siehe auch @Philip:). Aber mich nervt das jetzt, dass es nicht auch anders geht. Weil: Muss doch!

  25. 25

    Despite the tons of examples and docs, mod_rewrite is voodoo. Damned cool voodoo, but still voodoo.

    Steht schon so auf der offiziellen Apache-Dokumentationsseite.

    Und @Philip muss ich irgendwie überlesen haben, sorry.

    EDIT: Link auf aktuelle Version der Doku geändert

  26. 26
    Philip

    @Johnny Haeusler: Also das sollte Google und Konsorten zumindest den richtigen Statuscode 301 zurückliefern, bin da jetzt aber auch kein crack, hatte nur mal die gleiche Problemstellung und diese Variante hat als einzige genau das gemacht, was ich wollte…

    http://httpd.apache.org/docs/1.3/mod/mod_alias.html#redirectperm

  27. 27

    Sollte so funktionieren:

    RewriteEngine On
    Redirect ^/blog/index.php?p=$ http://www.spreeblick.com/index.php?p=$1

    (optional die 301 weiterleitung:

    RewriteRule ^/blog/$ http://www.spreeblick.com/$1 [R=301,L]
    )

  28. 28

    Bei dem Link p=1, sollte es „Dollarzeichen1“ heißen, aber irgendwie wurde das nach dem Kommentieren automatisch entfernt.

  29. 29

    @pell: Der Dollar verschwindet, nicht nur bei uns „¦

    Es soll nur „blog“ entfernt werden, der Rest (index.php?p=x) muss bleiben, weil der wiederum auf die korrekten Permalinks weiterleitet. Sonst würden in deinem Vorschlag alle Artikel nach alten Permalinks einfach auf den Spreeblick-Start-Index verweisen, oder?

  30. 30

    @pell: Ah, ok, mit Dollar1, klaro. Probier ich (mach jetzt aber erstmal noch was ganz anderes „¦). Danke!

  31. 31
    Mobbit

    Willst du nicht einfach unter /blog eine index.php legen die ein header-redirect schickt?

  32. 32

    Ich nutze dafür ein kleines WP-plug: Redirection
    http://urbangiraffe.com/

    Vielleicht als Erstversorgung – bis Dr. Max wieder im Hause ist…

  33. 33
    Tobi

    Warum nimmst Du nicht einfach einen Alias in die httpd.conf auf?

    Alias /blog/ /

    Gruß,

    Tobias

  34. 34
  35. 35

Diesen Artikel kommentieren