• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

.htaccess ordner aus pfad entfernen

Space Vampire

Senior HTML'ler
Ich habe ja schon mal angedeutet, dass modrewrite mir das Hirn verflüssigt.
Ich komm da einfach nicht klar mit.

Ich möchte einen Ordner aus dem Pfad entfernen.
URL lautet:
domain.de/unterordner/alle_verfügbaren_seiten.html
In der Adressleiste angezeigt werden soll:
domain.de/alle_verfügbaren_seiten.html
Zum Ziel führen sollen aber beide Anforderungen

Ich probier da nun schon seit zwei Stunden dran herum und produziere entweder nichts oder interne Serverfehler.
Alle Versuche kann ich leider nicht mehr nachhalten aber das war mein Letzter
Code:
RewriteEngine on 
RewriteRule ^unterordner/(.*) /$1 [L,R=301]

Könnte mir dabei bitte jemand behilflich sein, mir meinen Fehler aufzeigen und mir eine Seite empfehlen, wo die Regeln für Dummies erklärt werden?
Danke
 
Werbung:
Auf der linken Seite steht die URL, die man eingibt; und auf der rechten die URL auf die umgeleitet werden soll.
Und nach der linken URL kommt noch ein $

Code:
RewriteRule ^(.*)$ /unterordner/$1 [L,R=301]
 
Das war rein funktional schon mal hilfreich. Danke.
Dann wird der Ordner im Pfad aber immer noch angezeigt. Ich möchte aber, dass er nicht mehr angezeigt wird.
 
Werbung:
htaccess sorgt nicht dafür, dass man
domain.de/unterordner/alle_verfügbaren_seiten.html
eingibt und dann in der Adressleiste
domain.de/alle_verfügbaren_seiten.html
steht


sondern, dass bei der Eingabe von
domain.de/alle_verfügbaren_seiten.html
domain.de/unterordner/alle_verfügbaren_seiten.html
aufgerufen wird, ohne dass sich in der Adressleiste was ändert


(Ich hoffe dass das einigermaßen verständlich war)
 
...ohne dass sich in der Adressleiste was ändert...
Genau das war leider nicht der Fall.
Es wurde mit deinem beispiel oben 1:1 umgeleitet mit anzeige des umgeleiteten Pfades.
Aber das ist egal.
Dein Beispiel hat mir weit genug geholfen, dass ich mir eine andere Lösung stricken konnte, mit der ich zufrieden bin.
 
alogheo schrieb:
htaccess sorgt nicht dafür, dass man
domain.de/unterordner/alle_verfügbaren_seiten.html
eingibt und dann in der Adressleiste
domain.de/alle_verfügbaren_seiten.html
steht

Mit R=301 (externe Weiterleitung) eigentlich schon.

Der Code aus dem ersten Post sollte eigentlich auch klappen. Ist vielleicht wieder so ein Caching-Fehler. (Beim Werkeln an mod_rewrite muss ich im Firefox immer per Web Developer Toolbar den Cache deaktivieren.)

Wie hast du es denn jetzt gelöst?
 
Werbung:
Nicht ganz so elegant wie ich eigentlich wollte aber akzeptabel.
Das Problem war:
Arbeitsverzeichnis: space-vampire.de/magic-workshop/
Nach Alias-Bestellung wurde daraus: magic-workshop.de/magic-workshop/
Also sehr unschön.
Dummerweise kursierten schon Links in den diversen Social Networks, weil meine Freundin wieder nicht warten konnte, bis ich fertig bin.
Deswegen wollte ich die Umleitung.
Gelöst hab ich es jetzt damit, dass alle Linkanfragen in den Arbeitsordner per htaccess umgeletet werden in den neuen Ordner
magic-workshop.de/mw/
HTML:
RewriteRule ^(.*)$ /mw/$1 [L,R=301]
Auch keine Ideallösung...aber eine mit der ich leben kann.
 
Hm. Ich sehe eigentlich keinen Grund, warum das nicht „ideal“ lösbar sein sollte. So ganz klar ist mir aber noch immer nicht, was worauf umgeleitet werden soll. Sorry.
 
Das mag daran liegen, dass ich zu Anfangs garnicht umleiten wollte, sondern gedacht habe, man könne per mod rewrite dafür sorgen, dass ein Ordner aus der Adresszeile herausgekürzt wird.
Dass das so nicht funktioniert, habe ich erst durch diesen thread begriffen und dazu auch gleich noch etwas von der Funktionsweise ;)
Mit dem neuen Begriffsvermögen habe ich mir dann die Umleitung gebastelt, die als Alternative durchaus akzeptabel ist
 
Werbung:
...So ganz klar ist mir aber noch immer nicht, was worauf umgeleitet werden soll...
Jetzt hab ich gerade ein wenig zeit, etwas genauer zu werden.
Vielleicht hast du dann noch eine bessere Lösung parat, als die, mit der ich mich nun arrangiert habe.

Ich habe einen Webspace mit mehreren Domain-Aliasen.
Im Web-Root befindet sich ausschließlich eine Datei zur Zuweisung der einzelnen Domains.
Wird Domain1.de angefragt wird nach Domain1.de/ordner1/ weitergeleitet
Wird Domain2.de angefragt wird nach Domain2.de/ordner2/ weitergeleitet, usw...

Nun hatte ich in den letzten Wochen für meine Freundin eine neue Website gebaut.
Während ich daran gearbeitet habe, bafand sich diese Website in einem Unterordner meines oben genannten Webspaces.
Eine neue Domain für diese Website war die ganze Zeit noch nicht bestellt.

Meine Freundin hatte die Anweisung, vor der Veröffentlichung noch keine Links in den Arbeitsordner zu verbreiten, da wir noch nicht beschlossen hatten, was nach der Fertigstellung mit der website passiert. Ein neuer Alias für den bestehenden Webspace oder ein eigener Webspace. In letzterem fall wären die bereits verbreiteten Links dann tot.
Leider hat sie sich mal wieder nicht zügeln können und es doch gemacht.

Nach der Fertigstellung stand ich dann da mit der neuen Domain und einem Verzeichnis gleichen Namens. Was in der Adresszeile extrem doof aussieht
Code:
www.magic-workshop.de/magic-workshop/

Wie ich in meinem Eingangsposting sagte, komme ich mit mod rewrite und insbesondere mit regex wenig bis garnicht klar.
Ich hatte angenommen, dass man per mod rewrite den Ordner magic-workshop einfach maskieren könnte, so dass er zwar ganz normal abgefragt und zugegriffen wird, aber in der Adresszeile nicht erscheint.
Gleichzeitig sollten URLs ohne besagtem Ordner aber ebenfalls die richtige Datei finden.
An eine Umleitung hatte ich zu dem Zeitpunkt also garnicht gedacht.

Nach dem kleinen Exkurs hier wurde mir aber klar, dass das so offenbar nicht geht und habe mich stattdessen darauf verlegt, Anfragen die in den Ordner /magic-workshop/ gehen in den neuen Ordner /mw/ umzuleiten.
Ich hoffe das war nun verständlich genug :D

Mit der Lösung kann ich nun ganz gut leben, obwohl es nicht das war, was ich ursprünglich wollte.
 
Also, soll im Prinzip lediglich space-vampire.de/magic-workshop/* weitergeleitet werden auf magic-workshop.de/* (inklusive URL-Änderung im Browser)?
 
Das ist es ja.
Weiterleiten ist nicht das richtige Wort.
In einem Unterordner sollte es schon bleiben. Nur angezeigt werden soll dieser nicht.
 
Werbung:
Ich nehm mal Bezug auf den Eröffnungsbeitrag dieses Topics. Da steht

Code:
RewriteEngine on  
RewriteRule ^unterordner/(.*) /$1 [L,R=301]

Ist schonmal ein guter Anfang. Was man bedenken muss: dadurch das alles von /unterordner/* auf /* umgeleitet wird, ruft der Server quasi nochmal diesen Unterordner auf. Um das zu verhindern müsste man eine Ausnahmeregelung mittels RewriteCond schaffen.

Beispiel:
Du rufst eine URL IANA — Example domains auf. Die Datei index.html gibt es jedoch nicht, diese Datei gibt es aber immer Oberordner unter IANA — Example domains. Dann müsste die RewriteRule so definiert werden:

Code:
RewriteEngine on  
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^unterordner/(.*) /$1 [L,R=301]

Damit stellst Du sicher, dass die RewriteRule nur ausgeführt wird, wenn der aufgerufene Dateipfad + -name nicht existiert.

Andere Möglichkeit wäre auch eine RewriteCond mit Ausnahmeregelung für den Ordnernamen zu machen. Also quasi

Code:
RewriteCond %{REQUEST_FILENAME} unterordner

Dadurch würde das selbe passieren wie bei o.g. Regelung, es wäre nur anders als der Schalter -f nicht universell einsetzbar.
 
Danke.
Mal sehen ob ich da durchsteige. Die Syntax von RegEx verflüssigt mir echt das Hirn. Aber irgendwann muss ich das doch mal raffen.
 
Grundsätzlich: In welchem Verzeichnis etwas physisch auf dem Server gespeichert ist, ist aus Sicht der URL-Pfadstruktur erst mal irrelevant. Ein Request-URL [noparse]http://www.example.com/demo/test.php[/noparse] ist einfach ein Eingabeparameter für die Serveranwendung und kann problemlos zum Aufruf einer Datei /var/www/meine-seite/pages/page2.php führen.

threadi schrieb:
Ist schonmal ein guter Anfang. Was man bedenken muss: dadurch das alles von /unterordner/* auf /* umgeleitet wird, ruft der Server quasi nochmal diesen Unterordner auf. Um das zu verhindern müsste man eine Ausnahmeregelung mittels RewriteCond schaffen.

Das und das Beispiel danach verstehe ich nicht.

Code:
RewriteEngine on  
RewriteRule ^unterordner/(.*) /$1 [L,R=301]

Diese Regel wird doch nur dann ausgeführt, wenn der eingehende Pfad mit unterordner/ beginnt.

Ein Pfad [noparse]http://example.org/unterordner/bla.php[/noparse] würde zu [noparse]http://example.org/bla.php[/noparse]. Der Pfad in [noparse]http://example.org/bla.php[/noparse] (bla.php) beginnt aber nicht mit unterordner/ und ist deshalb für die Regel uninteressant.

Ich habe aber irgendwie schon den gesamten Thread über das Gefühl, dass die Geschichte unnötig verkompliziert wird. Das oder ich begreife das Problem nicht.

Im Doc-Root-Verzeichnis von space-vampire.de:

Code:
RewriteEngine on  
RewriteRule ^magic-workshop/(.*) http://magic-workshop.de/$1 [L,R=301]

Wieso reicht das denn nicht?
 
Werbung:
Das hatten wir noch nicht.
Werd ich aber morgen ausprobieren. Kann mir aufgrund mangelnden Verstänisses gerade nicht vorstellen, was die Regel bewirkt.
 
Wenn es um eine Domain Zuordnung geht, dann kannst du doch einfach diese auf den konkreten Unterordner verbiegen. Dazu brauchst du kein htaccess
 
Geht es ja nicht ausschließlich.
Hauptsächlich ging es um einen Pfadwechsel bei gleichzeitigem Erhalt aller bestehenden Verweise auf den alten Pfad.
 
Werbung:
Zurück
Oben