Ingo Turski: mod_rewrite Umleitung

Hi,

der Themenbereich passt vielleicht nicht ganz, aber vielleicht noch am ehesten.

Ich versuche vergeblich, eine Umleitung mittels mod_rewrite einzurichten.

Anforderung: /Verzeichnis/
Ergebnis: /Verzeichnis/Unterverzeichnis/

Entweder die Umleitung fuinktioniert nicht oder verkehrt oder es gibt einen interneal Server Error. So schwer kann das doch aber nicht sein, oder?

Wie gesagt soll die Umleitung nur greifen bei Aufruf des Verzeichnisses ohne weitere Angabe und dann die index-Datei im Unterverzeichnis angesprochen werden.

freundliche Grüße
Ingo

  1. Hallo Ingo!

    Anforderung: /Verzeichnis/
    Ergebnis: /Verzeichnis/Unterverzeichnis/

    Entweder die Umleitung fuinktioniert nicht oder verkehrt oder es gibt einen interneal Server Error. So schwer kann das doch aber nicht sein, oder?

    Was denkst Du, warum die alten Verzeichnisse meiner alten Webseiten, die nun auf old.atomic-eggs.com sind, alle "/old_irgendwas/" heißen. Es ist mir nie gelungen, weder ein redirect (ob Match oder Permanent), noch ein rewrite zu machen, wenn ein einziger Name der selbe war. Sprich:

    atomic-eggs.com/forum auf old.atomic-eggs.com/forum zu "ändern"...

    am Ende habe ich aufgegeben und neue Name mit old (*g*) vergeben (und aus /forum/ wurde /old_forum/).

    Deswegen freue ich mich über Deine Frage (auch wenn ich jetzt nichts mehr ändern werde), weil es für die Zukunft weiterer Umleitungen/Rewritungen sicher interessant sein könnte, wenn die richtigen Antworten kommen ;)

    freundliche Grüße
    Ingo

    Viele Grüße aus Frankfurt/Main,
    Patrick

    --

    _ - jenseits vom delirium - _
    <hatehtehpehdoppelpunktslashslashwehwehwehpunktatomicminuseggspunktcomslash>
    1. hallo Patrick,

      es kommt darauf an, ob du nur .htaccess benutzen kannst oder direkt was in die httpd.conf schreiben darfst. Wenn du direkten Zugriff auf die httpd.conf hast, kannst du auch einen Alias formulieren, und alles ist gelöst.

      Grüße aus Berlin

      Christoph S.

      --
      Visitenkarte
      ss:| zu:) ls:& fo:) va:) sh:| rl:|
      1. Hallo Christoph!

        es kommt darauf an, ob du nur .htaccess benutzen kannst oder direkt was in die httpd.conf schreiben darfst. Wenn du direkten Zugriff auf die httpd.conf hast, kannst du auch einen Alias formulieren, und alles ist gelöst.

        Leider kann ich nur .htacces editieren, ich habe keinen dedicated server bei meinem Provider. Die beschriebene Zeile führte jedenfalls zu einer Art Endlosschleife (oder 500, habe beides erlebt, als ich diese Veruche machte).

        Viele Grüße aus Frankfurt/Main,
        Patrick

        --

        _ - jenseits vom delirium - _
        <hatehtehpehdoppelpunktslashslashwehwehwehpunktatomicminuseggspunktcomslash>
        1. hallo Patrick,

          Leider kann ich nur .htacces editieren, ich habe keinen dedicated server bei meinem Provider. Die beschriebene Zeile führte jedenfalls zu einer Art Endlosschleife (oder 500, habe beides erlebt, als ich diese Veruche machte).

          Tatsächlich kann ich dein Problem nachvollziehen, wenn die angeforderte URL auf ein namensgleiches Verzeichnis zeigt wie die gewünschte Umleitung. In einem solchen Fall scheint es tatsächlich nur so zu gehen, wie du es beschrieben hast - daß nämlich das Verzeichnis, auf das umgeleitet werden soll, einen anderen Namen trägt. Das Problem kenne ich schon eine Weile, habe mich aber nie intensiv um Kenntnis der Begründung dafür bemüht und werde das jetzt wohl nachholen müssen.

          Grüße aus Berlin

          Christoph S.

          --
          Visitenkarte
          ss:| zu:) ls:& fo:) va:) sh:| rl:|
          1. Hallo Christoph!

            Tatsächlich kann ich dein Problem nachvollziehen, wenn die angeforderte URL auf ein namensgleiches Verzeichnis zeigt wie die gewünschte Umleitung.

            Ich muss allerdings meine Antwort an Ingo revidieren. Beim _RedirectMatch_ ist es nicht möglich gewesen. Beim RedirectPermanent sehr wohl, da gehen allerdings keine RegExps, und mann muss deswegen alle Dateien des Verzeichnisses einzeln redirecten:

            RedirectPermanent /scr/gironde/t01.htm http://www.atomic-eggs.com/scr/gironde/t01.html
            RedirectPermanent /scr/gironde/t02.htm http://www.atomic-eggs.com/scr/gironde/t02.html
            u
            s
            w
            .
            .
            .
            .
            .
            .
            .
            .

            Das (oder Ähnliches) würde nicht gehen:

            RedirectMatch ^/scr/gironde/(.*) http://www.atomic-eggs.com/scr/gironde/$1

            Viele Grüße aus Frankfurt/Main,
            Patrick

            --

            _ - jenseits vom delirium - _
            <hatehtehpehdoppelpunktslashslashwehwehwehpunktatomicminuseggspunktcomslash>
            1. Hallo, ja!

              Das (oder Ähnliches) würde nicht gehen:

              RedirectMatch ^/scr/gironde/(.*).htm http://www.atomic-eggs.com/scr/gironde/$1.html

              Viele Grüße aus Frankfurt/Main,
              Patrick

              --

              _ - jenseits vom delirium - _
              <hatehtehpehdoppelpunktslashslashwehwehwehpunktatomicminuseggspunktcomslash>
              1. hallo Patrick,

                Das (oder Ähnliches) würde nicht gehen:
                RedirectMatch ^/scr/gironde/(.*).htm http://www.atomic-eggs.com/scr/gironde/$1.html

                "Ähnliches" würde vermutlich doch funktionieren, mir mangelt es auf die Schnelle allerdings an einem Beispiel. Was du hier machen willst, ist die Ersetzung aller "htm" durch "html" - aber bei Ingos Frage ging es nicht um Dateinamen(serweiterungen), sondern darum, ein ganzes Verzeichnis anstelle eines anderen anzusteueren, gleichgültig, was im Verzeichnis liegt.

                Naja, jedenfalls habe ich ihn so verstanden.

                Wichtig ist meines Erachtens, daß die häufiger anzutreffende Verwirrung, wann denn nun mod_rewrite angezogen werden muß und wann Rewrite ausreicht, aufgelöst wird.

                Grüße aus Berlin

                Christoph S.

                --
                Visitenkarte
                ss:| zu:) ls:& fo:) va:) sh:| rl:|
                1. Hi,

                  Verwirrung, wann denn nun mod_rewrite angezogen werden muß und wann Rewrite ausreicht,

                  DAS ist allerdings verwirrend ...

                  cu,
                  Andreas

                  --
                  Warum nennt sich Andreas hier MudGuard?
                  Schreinerei Waechter
                  O o ostern ...
                  Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
            2. Hi,

              Ich muss allerdings meine Antwort an Ingo revidieren. Beim _RedirectMatch_ ist es nicht möglich gewesen. Beim RedirectPermanent sehr wohl, da gehen allerdings keine RegExps, und mann muss deswegen alle Dateien des Verzeichnisses einzeln redirecten:

              RedirectPermanent /scr/gironde/t01.htm http://www.atomic-eggs.com/scr/gironde/t01.html
              RedirectPermanent /scr/gironde/t02.htm http://www.atomic-eggs.com/scr/gironde/t02.html

              Geht leider nicht; die Idee hatte ich auch schon.
              Und den Server kann ich - außer über die .htaccess - auch nicht konfigitieren.

              Wie gesagt wäre mir eine interne Umleitung zwar lieber, aber zur Not würde ich auch einen Redirect nehmen. Nur wenn ich:
              Redirect /Verzeichnis/ http://ingo-webdesign.de/Verzeichnis/Unterverzeichnis/
              angebe, dann matched das auch auf Anforderungen des Unterverzeichnisses und führt zu einer Schleife:
              /Verzeichnis/Unterverzeichnis/ => /Verzeichnis/Unterverzeichnis/Unterverzeichnis/
              => /Verzeichnis/Unterverzeichnis/Unterverzeichnis/Unterverzeichnis/
              etc. :-(

              Vielleicht noch zur Erklärung: Ich habe ein Programm mit einer ./Anleitung, von der aus der Link zur Startseite zum übergeordneten Verzeichnis führt, also ../, wo normalerweise eine PHP-Datei ist. Für die Demo gibt es diese Datei aber nicht und es soll dieser Link nun auf eine extra angelegte ./Anleitung/index.html umgeleitet werden.
              Narürlich könnte ich auch eine Index-Datei im übergeordneten Verzeichnis erstellen und diese aus dem ZIP des Programmpakets jeweils entfernen, aber genau das wollte ich mir ersparen.

              freundliche Grüße
              Ingo

              1. hallo Ingo,

                wenn ich:
                Redirect /Verzeichnis/ http://ingo-webdesign.de/Verzeichnis/Unterverzeichnis/
                angebe, dann matched das auch auf Anforderungen des Unterverzeichnisses und führt zu einer Schleife

                Das ist das von Patrick bereits angesprochene Problem der Namensgleichheit - vermute ich. Was hindert dich denn, /verzeichnis/unterverzeichnis auf dem Server umzubenennen?

                Grüße aus Berlin

                Christoph S.

                --
                Visitenkarte
                ss:| zu:) ls:& fo:) va:) sh:| rl:|
                1. Hallo Christoph!

                  Das ist das von Patrick bereits angesprochene Problem der Namensgleichheit - vermute ich. Was hindert dich denn, /verzeichnis/unterverzeichnis auf dem Server umzubenennen?

                  Wie gesagt, ein Redirect geht, auch bei Namensgleichheit, wenn ich jede einzelne Datei notiere (siehe voriges Posting von mir). Ein RedirectMatch, mit oder ohne RegExp, führt dagegen zu einer Endlosschleife (oder vielleicht PingPong Effekt?: ich führe dich von /verzeichnis/ zu /verzeichnis/ zu /verzeichnis/ zu /verzeichnis/ usw..).

                  Am Ende habe ich das bei allen Dateien von Stefans Reisebericht gemacht, das sind ja nur 38 Dateien mit Namen à la t01.html, t0101.html, relativ schnell hineinkopiert. Für das alte Atomic Eggs Forum mit fast 300 Dateien, wollte ich mir die Arbeit nicht machen und habe daher die Verzeichnisse umbenannt, um RedirectMatch einsetzen zu können. Ausschnitte:

                  REDIRECTPERMANENT-BLOCK

                  ###### REDIRECTED HTML FILES ######

                  RedirectPermanent /scr/gironde/index.htm http://www.atomic-eggs.com/scr/gironde/index.html
                  RedirectPermanent /scr/gironde/t01.htm http://www.atomic-eggs.com/scr/gironde/t01.html
                  RedirectPermanent /scr/gironde/t02.htm http://www.atomic-eggs.com/scr/gironde/t02.html
                  u
                  s
                  w für alle 38 Dateien

                  REDIRECTMATCH PERMANENT-BLOCK

                  RedirectMatch permanent ^/ad2000/(.*) http://advent-2000.atomic-eggs.com/$1
                  RedirectMatch permanent ^/forum(.*) http://old.atomic-eggs.com/old_forum$1
                  u
                  s
                  w für alle Verzeichnisse

                  Ich kann nur über .htaccess solche Anweisungen geben, vielleicht gäbe es, hätte ich Zugang zu den Konfigurationsdateien, tatsächlich eine Möglichkeit. Jedenfalls waren Versuche mit rewrite-Bedingungen in der .htaccess ebenso erfolglos, was das Umleiten dieser Dateien angeht. Einen Spammer mit fester IP (der noch nichts gemerkt hat) konnte ich mit einer Rewrite-Bedingung dagegen abfangen, er bekommt regelmäßig einen 403 geliefert.

                  Viele Grüße aus Frankfurt/Main,
                  Patrick

                  --

                  _ - jenseits vom delirium - _
                  <hatehtehpehdoppelpunktslashslashwehwehwehpunktatomicminuseggspunktcomslash>
                  1. Hallo Patrick,

                    Ich bin gerade ziemlich verwirrt von Deinen Ausführungen, deswegen nochmal von vorne: Soweit ich es verstanden habe, willst du bestimmte alte URLs auf neue weiterleiten. Richtig? Ok, daher meine Frage: Wie sehen die alten URLs aus (in der Adresszeile)? Wie sehen die neuen URLs aus? Welches Muster besitzen die alten Dateien / die neuen Dateien? Und: Wo liegt Deine .htaccess oder konfigurierst Du den Server im VirtualHost-Container?

                    Viele Grüße,
                    Christian

                    --
                    "I have always wished for my computer to be as easy to use as my telephone; my wish has come true because I can no longer figure out how to use my telephone." - Bjarne Stroustrup
                    1. Hallo Christian!

                      Ich bin gerade ziemlich verwirrt von Deinen Ausführungen, deswegen nochmal von vorne:

                      Ja, ich versuche es so knapp wie möglich. Es geht um zwei Sachen.

                      1. Ich habe im Frühjahr eine Subdomain "old" erstellt, damit ich dorthin die bisherigen, alten Verzeichnisse und Dateien des "alten" Atomic Eggs abstelle, um später die Struktur:

                      neue Dateien auf www.atomic-eggs.com
                      alte Dateien auf old.atomic-eggs.com

                      zu haben, und dachte mir, ich könnte dann einfach redirecten, damit alte URIs aus Suchmaschinenseiten oder hier aus dem Forumsarchiv doch noch zur gewünschten Seite führen.

                      Also z.B. beim Aufruf von:

                      http://www.atomic-eggs.com/forum/messages/xxx.html sollte man "landen" auf:
                      http://old.atomic-eggs.com/forum/messages/xxx.html

                      Dito für alle Verzeichnisse die von "www" auf "old" gewandert sind.

                      Leider führt die Namensgleichheit bei einem RedirectMatch in dieser Form:

                      RedirectMatch permanent ^/forum(.*) http://old.atomic-eggs.com/forum$1

                      zu einer Endlosschleife. Daher musste ich die Verzeichnisse auf old.atomic-eggs.com alle umbenennen in old_$name

                      Ich werde es jetzt zwar nicht mehr ändern, würde mich jedoch sehr freuen, wenn es eine andere Lösung gäbe (evtl. mit mod_rewrite, ähnlich wie Du es Ingo erklärt hast), damit ich für evtl. zukünftige Fälle gewappnet bin. Vielleicht hat es in der Tat mit dem ^ zu tun?

                      2. Nach der Änderung vom Tabellenlayout auf CSS bei "Stefan en Gironde" hatte ich die Dateiendungen von .htm auf .html geändert und hatte das gleiche Problem  - und ich weiß, dass ich mehrere Möglichkeiten versucht habe. Am Ende habe ich alle 38 Dateien einzeln redirected:

                      RedirectPermanent /scr/gironde/index.htm http://www.atomic-eggs.com/scr/gironde/index.html
                      RedirectPermanent /scr/gironde/t01.htm http://www.atomic-eggs.com/scr/gironde/t01.html
                      RedirectPermanent /scr/gironde/t02.htm http://www.atomic-eggs.com/scr/gironde/t02.html

                      Hier sind im Unterschied zu weiter oben die Dateien auf der gleichen Subdomain, im gleichen Verzeichnis - es geht hier nur um die neuen Dateiendungen. Zumindest für dieses Problem gibt es vermutlich eine bessere Lösung.

                      Wo liegt Deine .htaccess oder konfigurierst Du den Server im VirtualHost-Container?

                      Ich kann nur .htaccess editieren, und es gibt eine im Root-Verzeichnis. Jede Subdomain hat auch seine eigene .htaccess im jeweiligen Verzeichnis (/home/foo/root/old_html, /home/foo/root/selfspezial, etc.).

                      Viele Grüße aus Frankfurt/Main,
                      Patrick

                      --

                      _ - jenseits vom delirium - _
                      <hatehtehpehdoppelpunktslashslashwehwehwehpunktatomicminuseggspunktcomslash>
                      1. Hallo Patrick,

                        Leider führt die Namensgleichheit bei einem RedirectMatch in dieser Form:

                        RedirectMatch permanent ^/forum(.*) http://old.atomic-eggs.com/forum$1

                        zu einer Endlosschleife.

                        Lass mich raten: Bei Dir sind die Subdomains nur Unterverzeichniss und deswegen wird die .htaccess auch verarbeitet, wenn die Subdomain aufgerufen wird? ;-)

                        Mit Redirect* kannst Du das nicht lösen, mit mod_rewrite schon (alternativ Deinen Provider bitten, Dir getrennte Verzeichnisse für Hauptdomain und Subdomains zu geben).

                        Lösung wäre:

                        RewriteEngine On  
                        RewriteBase /  
                        RewriteCond %{HTTP_HOST} ^www\.atomic-eggs\.com$  [OR]  
                        RewriteCond %{HTTP_HOST} ^atomic-eggs\.com$  
                        RewriteRule ^forum(.*)$ http://old.atomic-eggs.com/forum$1 [R=301,QSA]
                        

                        Damit stellst Du sicher, dass nur, wenn eine Anfrage auf dem Original-Host reinkommt (die RewriteCond-Zeilen) die Anfrage auch umgeleitet wird.

                        Ich werde es jetzt zwar nicht mehr ändern, würde mich jedoch sehr freuen, wenn es eine andere Lösung gäbe (evtl. mit mod_rewrite, ähnlich wie Du es Ingo erklärt hast), damit ich für evtl. zukünftige Fälle gewappnet bin. Vielleicht hat es in der Tat mit dem ^ zu tun?

                        Mit dem ^ nicht wirklich; auch wenn Du beachten musst, dass Du hier (wie Ingo auch) ^forum schreiben musst und nicht ^/forum, da mod_rewrite auf .htaccess-Ebene sich nur noch kümmert, was nach dem letzten / des Verzeichnisses kommt, indem Du Dich gerade befindest. Redirect* dagegen arbeitet immer auf URL-Ebene.

                        1. Nach der Änderung vom Tabellenlayout auf CSS bei "Stefan en Gironde" hatte ich die Dateiendungen von .htm auf .html geändert und hatte das gleiche Problem

                        Ja, da lag es daran, dass Du vmtl. RedirectMatch genutzt hast, dem regulären Ausdruck jedoch nicht gesagt hast, dass er nach dem Stringende (bei regulären Ausdrücken ist das Zeichen für Stringende ein $-Zeichen) suchen soll. Lösung:

                        RedirectMatch permanent ^/scr/gironde/(.*)\.htm$ http://www.atomic-eggs.com/scr/gironde/$1.html

                        Viele Grüße,
                        Christian

                        --
                        "I have always wished for my computer to be as easy to use as my telephone; my wish has come true because I can no longer figure out how to use my telephone." - Bjarne Stroustrup
                        1. Hallo Christian!

                          RedirectMatch permanent ^/scr/gironde/(.*)\.htm$ http://www.atomic-eggs.com/scr/gironde/$1.html

                          Damit hast Du geholfen, meine .htaccess 37 Zeilen leichter zu machen (38 gelöscht, obige eingefügt)! Vielen Dank!

                          Ja, da lag es daran, dass Du vmtl. RedirectMatch genutzt hast, dem regulären Ausdruck jedoch nicht gesagt hast, dass er nach dem Stringende (bei regulären Ausdrücken ist das Zeichen für Stringende ein $-Zeichen)

                          Das $ kenne ich von RegExps in Perl, ich denke ich hätte das notiert, vielleicht aber auch nicht oder ich vermute, dass ich den Punkt nicht maskiert hatte oder sonst einen Fehler im RegExp hatte.

                          RewriteEngine On

                          RewriteBase /
                          RewriteCond %{HTTP_HOST} ^www.atomic-eggs.com$  [OR]
                          RewriteCond %{HTTP_HOST} ^atomic-eggs.com$
                          RewriteRule ^forum(.*)$ http://old.atomic-eggs.com/forum$1 [R=301,QSA]

                            
                          Das funktioniert auch prima. Da ich die old\_$name-Verzeichnisse nun über ein halbes Jahr "drin" habe, ändere ich jetzt nichts, aber getestet habe ich es, in dem ich in old\_html (mein Unterverzeichnis, das Root ist für old.atomic-eggs.com) ein Verzeichnis /forum/ angelegt habe und Deine Rewrite-Anweisungen in die .htacces unter public\_html reinkopiert habe. Das funktioniert, nun kann ich es beim nächsten Mal gleich richtig machen.  
                            
                          Nun, denke nicht, ich habe damals nicht recherchiert, auch Ingo unterstelle ich, dass er genug gesucht hat, bevor er seine Frage gepostet hat, nur... wo findet man so was, zum Beispiel diese Flags (?) wie R=301,QSA???  
                            
                          R=301 steht das für Code 301 (moved permanently)?  
                            
                          Ich habe nach Redirect-Methoden gesucht, habe auch einige Beispiele mit mod\_rewrite gelesen, da werden, wenn Flags vorkommen, auch diese erklärt, aber nur dann, eine Übersicht konnte ich bisher nicht finden.  
                            
                          Ja. Eine andere Möglichkeit habe ich nicht. Ich kann Subdomains nur über das "Personal Control Panel" einrichten, frag Thomas J.S., falls er nicht gewechselt hat, ist er immer noch beim gleichen Provider wie ich, und so sieht die Maske aus:  
                            
                          Add A New Subdomain to atomic-eggs.com:  
                          Subdomain Name:|      |.atomic-eggs.com  
                          Document Root: /public\_html/|      |  
                            
                          Wie man sieht, werden nur Unterverzeichnisse vom Root vorgeschlagen. Zwar kann ich mittels FTP-Programms auch oberhalb von public\_html Verzeichnisse anlegen, kenne aber keine Möglichkeit, diese für das Erstellen von Subdomains zu benutzen.  
                            
                          Nochmals vielen Dank, Christian (wieder was gelernt)...  
                            
                            
                          Viele Grüße aus Frankfurt/Main,  
                          Patrick
                          
                          -- 
                          ![](http://www.atomic-eggs.com/clubsig.gif)  
                            
                          \_ - jenseits vom delirium - \_  
                            
                          <hatehtehpehdoppelpunktslashslashwehwehwehpunktatomicminuseggspunktcomslash>
                          
                          1. Hallo Patrick,

                            wo findet man so was, zum Beispiel diese Flags (?) wie R=301,QSA???

                            Also die Flags zu mod_rewrite sind in der Apache-Dokumentation zu finden, hier mal die 1.3er-Doku verlinkt:
                            http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html#RewriteRule (etwas runterscrollen, dann gibt's ne Liste mit möglichen Flags für RewriteRule). Allerdings sind für das Verständnis einiger Flags ein etwas tiefergehendes Verständnis der Request-Verarbeitung des Apache notwendig.

                            Bei QSA bin ich mir übrigens gar nicht sicher, ob das hier überhaupt gebraucht wird, vermutlich nicht, aber schaden tut es auf jeden Fall nicht.

                            R=301 steht das für Code 301 (moved permanently)?

                            Ja. R ist Redirect und Du kannst entweder [R] angeben, das heißt dann mit "302 Moved Temporarily" weiterleiten oder [R=code] (solange Code vom Typ 3xx ist, sonst klappt's nicht!), dann wird dieser HTTP-Statuscode verwendet.

                            Viele Grüße,
                            Christian

                            --
                            "I have always wished for my computer to be as easy to use as my telephone; my wish has come true because I can no longer figure out how to use my telephone." - Bjarne Stroustrup
                            1. Hallo Christian!

                              http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html#RewriteRule

                              Danke für den Link. Soweit war ich in der Tat nicht gekommen, bei meinen Recherchen.

                              Viele Grüße aus Frankfurt/Main,
                              Patrick

                              --

                              _ - jenseits vom delirium - _
                              <hatehtehpehdoppelpunktslashslashwehwehwehpunktatomicminuseggspunktcomslash>
                          2. Hi,

                            Add A New Subdomain to atomic-eggs.com:
                            Subdomain Name:|      |.atomic-eggs.com
                            Document Root: /public_html/|      |

                            Wie man sieht, werden nur Unterverzeichnisse vom Root vorgeschlagen.

                            Du setzt an der faschen Stelle an. Setze die Domain in ein Verzeichnis unterhalb von /public_html/ und die Subdomain in ein anderes Verzeichnis.

                            freundliche Grüße
                            Ingo

                            1. Hallo Ingo!

                              Du setzt an der faschen Stelle an. Setze die Domain in ein Verzeichnis unterhalb von /public_html/ und die Subdomain in ein anderes Verzeichnis.

                              Meinst Du z.B. /public_html/www/ und /public_html/old/ ?
                              Wie gesagt, oberhalb von /public_html/ kann ich keine Subdomains einrichten.

                              Viele Grüße aus Frankfurt/Main,
                              Patrick

                              --

                              _ - jenseits vom delirium - _
                              <hatehtehpehdoppelpunktslashslashwehwehwehpunktatomicminuseggspunktcomslash>
                              1. Hi,

                                Meinst Du z.B. /public_html/www/ und /public_html/old/ ?

                                genau das. Dann sind die Verzeichnisse unabhängig voneinander und die Subdomain auch nicht mehr über ein Unterverzeichnis der Hauptdomain aufrufbar.

                                freundliche Grüße
                                Ingo

  2. hallo Ingo,

    Anforderung: /Verzeichnis/
    Ergebnis: /Verzeichnis/Unterverzeichnis/

    Man braucht nicht für alles immer gleich mod_rewrite. Besonders in diesem Fall würde ich erst einmal mit
      Redirect /verzeichnis /verzeichnis/unterverzeichnis
    experimentieren.

    Grüße aus Berlin

    Christoph S.

    --
    Visitenkarte
    ss:| zu:) ls:& fo:) va:) sh:| rl:|
    1. hi,

      noch ein Nachsatz: wenn du unmittelbaren Zugriff auf den Server hast, kannst du auch in der DocumentRoot einen SymLink setzen, der eben auf /verzeichnis/unterverzeichnis zeigt. Dann ist es völlig wurscht, ob mod_rewrite überhaupt in der Modul-Liste geladen ist. Es muß unter "Options" lediglich "FollowSymLinks" aktiviert werden.

      Grüße aus Berlin

      Christoph S.

      --
      Visitenkarte
      ss:| zu:) ls:& fo:) va:) sh:| rl:|
  3. Hallo Ingo,

    der Themenbereich passt vielleicht nicht ganz, aber vielleicht noch am ehesten.

    Nein, am ehesten passt Server. ;-)

    Ich versuche vergeblich, eine Umleitung mittels mod_rewrite einzurichten.

    Anforderung: /Verzeichnis/
    Ergebnis: /Verzeichnis/Unterverzeichnis/

    Entweder die Umleitung fuinktioniert nicht oder verkehrt oder es gibt einen interneal Server Error. So schwer kann das doch aber nicht sein, oder?

    Naja, ohne Quellcode kann ich Dir nicht sagen, was Du falsch gemacht hast.

    Wie gesagt soll die Umleitung nur greifen bei Aufruf des Verzeichnisses ohne weitere Angabe und dann die index-Datei im Unterverzeichnis angesprochen werden.

    In der zentralen Serverkonfiguration kannst Du mittels

    RewriteEngine On  
    RewriteRule ^/Verzeichnis/$ /Verzeichnis/Unterverzeichnis/
    

    den Request umschreiben oder per

    RewriteEngine On  
    RewriteRule ^/Verzeichnis/$ /Verzeichnis/Unterverzeichnis/ [R]
    

    weiterleiten (evtl. [R=301]).

    In eine .htaccess in /Verzeichnis könntest Du stattdessen

    RewriteEngine On  
    RewriteBase /Verzeichnis  
    RewriteRule ^$ Unterverzeichnis/
    

    schreiben (evtl. noch mit [R] oder [R=301] hinten dran).

    Jetzt alles ungetestet, sollte aber klappen.

    Viele Grüße,
    Christian

    --
    "I have always wished for my computer to be as easy to use as my telephone; my wish has come true because I can no longer figure out how to use my telephone." - Bjarne Stroustrup
    1. Hi,

      In der zentralen Serverkonfiguration kannst Du mittels

      RewriteEngine On

      RewriteRule ^/Verzeichnis/$ /Verzeichnis/Unterverzeichnis/

      
      >   
      > den Request umschreiben  
        
      genau das möchte ich. Nur leider funktioniert das nicht - es passiert rein gar nichts.  
      Es handelt sich zwar um weiter verschachtelte Verzeichnisse, aber das Prinzip dürfte ja dasselbe sein und es müsste sich so dann auch /dir1/dir2/dir3/dir4/dir5/ nach /dir1/dir2/dir3/dir4/dir5/dir6/ umschreiben lassen.  
        
      Ich habe den ziemlich langen Pfad extra aus der Adreßzeile rauskopiert, um Tippfehler auszuschließen und die RewriteEngine ist auch an, da eine nachfolgende Rule greift.  
        
      
      > In eine .htaccess in /Verzeichnis  
      
      da soll ja wie gesagt nichts drin sein. D.h. ohne Umschreibung bekomme ich einen 403.  
        
      freundliche Grüße  
      Ingo
      
      -- 
      [[barrierefreie Webseitenerstellung](http://www.1ngo.de/web/) » [Suchmaschinenoptimierung](http://www.1ngo.de/web/seo.html) | [em?](http://www.1ngo.de/web/em.html)] ([Hommingberger Gepardenforelle](http://www.1ngo.de/hommingberger-gepardenforelle/);-)
      
      1. Hallo Ingo,

        RewriteEngine On

        RewriteRule ^/Verzeichnis/$ /Verzeichnis/Unterverzeichnis/

        
        > >   
        > > den Request umschreiben  
        >   
        > genau das möchte ich. Nur leider funktioniert das nicht - es passiert rein gar nichts. Es handelt sich zwar um weiter verschachtelte Verzeichnisse, aber das Prinzip dürfte ja dasselbe sein und es müsste sich so dann auch /dir1/dir2/dir3/dir4/dir5/ nach /dir1/dir2/dir3/dir4/dir5/dir6/ umschreiben lassen.  
          
        Ich fürchte, solange Du nicht konkret sagst, welches Verzeichnis Du wie genau umschreiben willst (konkrete Namen) und konkret nennst, welche Konfiguration Du wie probiert hast, können wir Dir wohl nicht helfen.  
          
        Eine einzige Sache kannst Du noch so probieren: Das [PT]-Flag. Gerade wenn es um DirectoryIndex-Sachen usw. geht, muss das Rewrite-Modul evtl. die anderen Module nochmal "anstupsen", damit das korrekt funktioniert.  
          
        Viele Grüße,  
        Christian  
        
        -- 
        "I have always wished for my computer to be as easy to use as my telephone; my wish has come true because I can no longer figure out how to use my telephone." - Bjarne Stroustrup
        
        1. Hi,

          Ich fürchte, solange Du nicht konkret sagst, welches Verzeichnis Du wie genau umschreiben willst (konkrete Namen) und konkret nennst, welche Konfiguration Du wie probiert hast, können wir Dir wohl nicht helfen.

          Die Namen sind doch eigentlich egal.
          Aber ich habe mal einen ganz einfachen Test angelegt unter http://ingo-webdesign.de/Verzeichnis/Unterverzeichnis/
          Funktioniert aber nicht; auch nicht mit dem PT-Flag, dass ich testweise mal angehängt habe.
          freundliche Grüße
          Ingo

          1. Hallo Ingo,

            Die Namen sind doch eigentlich egal.
            Aber ich habe mal einen ganz einfachen Test angelegt unter http://ingo-webdesign.de/Verzeichnis/Unterverzeichnis/
            Funktioniert aber nicht; auch nicht mit dem PT-Flag, dass ich testweise mal angehängt habe.

            Zum einen: Wenn Du .htaccess verwendest, dann musst Du leicht andere RewriteRules angeben, als in der Serverkonfiguration; ferner ist RewriteBase empfehlenswert (wenn auch nicht unbedingt nötig bei serverrelativen URIs).

            Zum anderen: Wo genau liegt Deine .htaccess? Diese muss entweder im Document-Root oder in /Verzeichnis liegen; in /Verzeichnis/Unterverzeichnis wird sie (wenn ein Request auf /Verzeichnis reinkommt) gar nicht beachtet (logisch - woher soll der Apache denn auch wissen, dass die zuständig sein könnte?).

            Wenn Du die .htaccess ins Document-Root setzt, wäre folgender Inhalt notwendig:

            RewriteEngine On  
            RewriteBase /  
            RewriteRule ^Verzeichnis/$ /Verzeichnis/Unterverzeichnis/ [PT]
            

            Wenn Du sie in /Verzeichnis setzt, folgender:

            RewriteEngine On  
            RewriteBase /Verzeichnis  
            RewriteRule ^$ /Verzeichnis/Unterverzeichnis/ [PT]
            

            Viele Grüße,
            Christian

            --
            "I have always wished for my computer to be as easy to use as my telephone; my wish has come true because I can no longer figure out how to use my telephone." - Bjarne Stroustrup
            1. Hallo Christian!

              RewriteEngine On

              RewriteBase /
              RewriteRule ^Verzeichnis/$ /Verzeichnis/Unterverzeichnis/ [PT]

              
              >   
              > Wenn Du sie in /Verzeichnis setzt, folgender:  
              >   
              > ~~~apache
              
              RewriteEngine On  
              
              > RewriteBase /Verzeichnis  
              > RewriteRule ^$ /Verzeichnis/Unterverzeichnis/ [PT]
              
              

              Würde das in den hier beschriebenen Fällen auch helfen (also von www.example.org/dir/ auf subdomain.example.org/dir/ - und im Gironde-Beispiel auch)?

              Viele Grüße aus Frankfurt/Main,
              Patrick

              --

              _ - jenseits vom delirium - _
              <hatehtehpehdoppelpunktslashslashwehwehwehpunktatomicminuseggspunktcomslash>
            2. Hi,

              Zum einen: Wenn Du .htaccess verwendest, dann musst Du leicht andere RewriteRules angeben, als in der Serverkonfiguration; ferner ist RewriteBase empfehlenswert (wenn auch nicht unbedingt nötig bei serverrelativen URIs).

              Das verstehe ich zwar so jetzt nicht...

              Zum anderen: Wo genau liegt Deine .htaccess?

              Ich hatte auf der Beispielseite nicht ohne Grund /.htaccess geschrieben. ;-)

              Wenn Du die .htaccess ins Document-Root setzt, wäre folgender Inhalt notwendig:

              RewriteEngine On

              RewriteBase /
              RewriteRule ^Verzeichnis/$ /Verzeichnis/Unterverzeichnis/ [PT]

              Bis auf RewriteBase / stand das exakt so drin.  
              Ich habe das jetzt hinzugefügt, aber es tut sich leider immer noch nichts.  
                
              Die nachfolgende Regel:  
              ~~~apache
              RewriteCond %{HTTP_HOST} ^www\.ingo-webdesign\.de$ [NC]  
              RewriteRule ^(.*)$ http://ingo-webdesign.de/$1 [R=301,L]
              

              wird allerdings ausgeführt.

              Fall es hilft, habe ich mal phpinfo() auf der Beispielseite ausgeben lassen.

              freundliche Grüße
              Ingo

              1. Hallo Ingo,

                Zum einen: Wenn Du .htaccess verwendest, dann musst Du leicht andere RewriteRules angeben, als in der Serverkonfiguration; ferner ist RewriteBase empfehlenswert (wenn auch nicht unbedingt nötig bei serverrelativen URIs).
                Das verstehe ich zwar so jetzt nicht...

                Lies Dir mal die Rewrite-Dokumentation beim Apache gründlich durch.

                RewriteEngine On

                RewriteBase /
                RewriteRule ^Verzeichnis/$ /Verzeichnis/Unterverzeichnis/ [PT]

                
                > Bis auf RewriteBase / stand das exakt so drin.  
                  
                Nein, hast Du nicht, wenn man Deiner HTML-Seite Glauben schenken darf, dann steht dort  
                  
                `RewriteRule ^/Verzeichnis/$ /Verzeichnis/Unterverzeichnis/ [PT]`{:.language-apache}  
                  
                drin. Da ist nach dem ^ noch ein / - und gerade den darfst Du bei .htaccess-Rewrite-Regeln nicht verwenden (das ist gerade die Subtilität, die ich bei "zum einen" gemeint habe).  
                  
                Viele Grüße,  
                Christian  
                
                -- 
                "I have always wished for my computer to be as easy to use as my telephone; my wish has come true because I can no longer figure out how to use my telephone." - Bjarne Stroustrup
                
                1. Hi,

                  Da ist nach dem ^ noch ein / - und gerade den darfst Du bei .htaccess-Rewrite-Regeln nicht verwenden (das ist gerade die Subtilität, die ich bei "zum einen" gemeint habe).

                  Ohje... Vielen Dank, genau das war's gewesen.

                  freundliche Grüße
                  Ingo

  4. hi,

    Wie gesagt soll die Umleitung nur greifen bei Aufruf des Verzeichnisses ohne weitere Angabe und dann die index-Datei im Unterverzeichnis angesprochen werden.

    Also ausschließlich für
    /verzeichnis/
    aber nicht für
    verzeichnis/blah.htm
    oder verzeichnis/jodel/
    ?

    Dann nimm doch einfach
    DirectoryIndex unterverzeichnis/index.htm   //oder .wasauchimmer
    (in /verzeichnis/.htaccess)

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. Hi,

      Also ausschließlich für
      /verzeichnis/
      aber nicht für
      verzeichnis/blah.htm
      oder verzeichnis/jodel/
      ?

      das Verzeichnis ist leer.

      (in /verzeichnis/.htaccess)

      und soll es auch bleiben.

      freundliche Grüße
      Ingo