forum@modrewrite.de
RegistrierenSuchenFAQMitgliederlisteBenutzergruppenLogin
Neue Antwort erstellen Seite 1 von 2
Gehe zu Seite 1, 2  Weiter
Ordner aus URL eliminieren
Autor Nachricht
Antworten mit Zitat
Beitrag Ordner aus URL eliminieren 
Ich leg mir gerade die Karten.
Ich möchte aus einer URL example.de/ordner/unterordner den ordner entfernen, so dass die URL permanent umgeleitet wird auf example.de/unterordner

Meine htaccess-Datei im root der Domain sieht so aus:
Code:

  RewriteCond %{HTTP_HOST} ^www\.example\.de$ [NC]
  RewriteRule ^(.*)$ http://example.de/$1 [R=301,L]
 
  RewriteRule ^ordner/(.*)$ /$1 [R=301,L]

Die ersten beiden Zeilen tun was sie sollen, die dritte Zeile aber nicht. Wo ist der Fehler?

Benutzer-Profile anzeigen Private Nachricht senden
Antworten mit Zitat
Beitrag  
Ich bin zwar kein Profi.

Aber ich vermute das [L] in der 1ten Regel verhindert die Ausführung der 2ten Regel:

Zitat:

[L] Last | Bearbeitung abschliessen, keine weiteren Regeln anwenden.


Probier es mal so:
Code:

  RewriteCond %{HTTP_HOST} ^www\.example\.de$ [NC]
  RewriteRule ^(.*)$ http://example.de/$1 [R=301]
 
  RewriteRule ^ordner/(.*)$ /$1 [R=301,L]


Benutzer-Profile anzeigen Private Nachricht senden
Antworten mit Zitat
Beitrag  
Danke für den Tipp, das hatte ich übersehen.
Nur, wenn ich das [L] rausnehme, funktioniert die ganze Seite nicht mehr.

Also ist die zweite RewriteRule falsch.
Ich hab sie jetzt erstmal ganz rausgenommen.

Vielleicht hat ja jemand noch nen Tipp...

Benutzer-Profile anzeigen Private Nachricht senden
Antworten mit Zitat
Beitrag  
Probier mal den / vor dem $1 weg zu lassen.

Bin leider auch nicht so bewandert mit modrewrite.

Benutzer-Profile anzeigen Private Nachricht senden
Antworten mit Zitat
Beitrag  
Das war's leider auch nicht.

Das [L] am Ende der ersten Regel muss meiner Meinung nach drin bleiben, da sonst die Condition doch auch für die zweite Regel gilt, oder?

Auf jeden Fall, mit [L] tut sich nix, ohne [L] läd die Seite ewig, die erste Regel funktioniert nicht mehr und man landet auf der 404-Seite.

Benutzer-Profile anzeigen Private Nachricht senden
Antworten mit Zitat
Beitrag  
Eine Condition gilt immer nur für die nachfolgende RewriteRule.

Durch [L] beendet er die Regelbearbeitung nach der RewriteRule hinter der es steht.
Bitte beachten, wenn du einen [R] oder [R=301] verwendest, beginnt er auch mit der Regelbearbeitung wieder von vorne (dadurch entstehen oftmals Endlosschleifen Wink )

In deinem Bespiel solltest du noch eine Regel hinzufügen, die den Aufruf example.de/unterordner intern auf example.de/ordner/unterordner umleitet, falls du die dateien auf deinem webserver nicht verschoben hast:

Code:

RewriteCond %{HTTP_HOST} ^www\.example\.de$ [NC]
RewriteRule ^(.*)$ http://example.de/$1 [R=301]

RewriteRule ^ordner/(.*)$ /$1 [R=301,L]

RewriteRule ^unterordner/(.*)$ http://example.de/ordner/unterordner/$1 [L]


Hoffe das hilft.

Gruß Jan

Benutzer-Profile anzeigen Private Nachricht senden
Antworten mit Zitat
Beitrag  
Internetmafia hat Folgendes geschrieben:
In deinem Bespiel solltest du noch eine Regel hinzufügen, die den Aufruf example.de/unterordner intern auf example.de/ordner/unterordner umleitet, falls du die dateien auf deinem webserver nicht verschoben hast

Auf dem Webserver liegen die Dateien immer noch im ordner "ordner", dieser ist aber jetzt der Root von example.de
Die Weiterleitung habe ich beim Provider eingerichtet.

Es handelt sich um eine Drupal-Instalation.
Der Unterordner ist nicht Teil der Ordnerstruktur auf dem Server, sondern nur der URL.

Es gibt unterschiedliche Kategorien auf der Seite:
example.de/news
example.de/musik
usw.

Früher war die URL:
example.de/ordner/news
example.de/ordner/musik
usw.

Wenn ich es richtig verstanden habe, ist die erste Kondition nur für die erste Regel.
Damit habe ich alle Links vom www befreit.

Jetzt also ne neue Kondition (alle Anfragen an example.de/ordner/***) und ne neue Regel (dauerhaft Umleiten nach example.de/***) angelegt...

Noch jemand ne Idee?
Merci

Benutzer-Profile anzeigen Private Nachricht senden
Antworten mit Zitat
Beitrag  
Hallo Krabbe,

dann sollte diese Regel eigentlich schon reichen:

Code:

# Wenn Aufruf example.de/ordner/irgendwas dann dauerhaft umleiten auf example.de/irgendwas
RewriteRule ^ordner/(.*)$ http://example.de/$1 [R=301,L]


Eine Condition wird dabei nicht benötigt.

Gruß Jan

Benutzer-Profile anzeigen Private Nachricht senden
Antworten mit Zitat
Beitrag  
Internetmafia hat Folgendes geschrieben:
dann sollte diese Regel eigentlich schon reichen:

Tut sie leider nicht, aber zumindest zerschießt es mir nicht mehr die "normalen" Anfragen.
Aber bei Aufruf von example.de/ordner/news lande ich immer noch auf der 404-Seite und in der Adresszeile im Browser steht weiterhin der /ordner/ in der URL...

So langsam ist es mir egal. Dann landen die Leute eben auf der Fehlerseite... die ist ja auch ganz hübsch Wink
Aber verstehen würde ich es gerne.

Benutzer-Profile anzeigen Private Nachricht senden
Antworten mit Zitat
Beitrag  
Code:

RewriteRule ^/ordner/(.*)$ http://example.de/$1 [R=301,L]


Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Antworten mit Zitat
Beitrag  
kartoffelkopf hat Folgendes geschrieben:
Code:

RewriteRule ^/ordner/(.*)$ http://example.de/$1 [R=301,L]


Hat es damit funktioniert?

Gruß Jan

Benutzer-Profile anzeigen Private Nachricht senden
Antworten mit Zitat
Beitrag  
Internetmafia hat Folgendes geschrieben:
kartoffelkopf hat Folgendes geschrieben:
Code:

RewriteRule ^/ordner/(.*)$ http://example.de/$1 [R=301,L]


Hat es damit funktioniert?

Gruß Jan

Nein, leider immer noch nicht... **haare rauf**

Benutzer-Profile anzeigen Private Nachricht senden
Antworten mit Zitat
Beitrag  
krabbe hat Folgendes geschrieben:
Internetmafia hat Folgendes geschrieben:
kartoffelkopf hat Folgendes geschrieben:
Code:

RewriteRule ^/ordner/(.*)$ http://example.de/$1 [R=301,L]


Hat es damit funktioniert?

Gruß Jan

Nein, leider immer noch nicht... **haare rauf**


Dann poste nochmal alle Rewrite-Rules die Du hast oder schau mal ins Accesslog des Webservers, welche Webseiten tatsaechlich aufgerufen oder nicht gefunden werden.

Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Antworten mit Zitat
Beitrag  
kartoffelkopf hat Folgendes geschrieben:
Dann poste nochmal alle Rewrite-Rules die Du hast oder schau mal ins Accesslog des Webservers, welche Webseiten tatsaechlich aufgerufen oder nicht gefunden werden.


Hier sind sie:
Code:

<IfModule mod_rewrite.c>
  RewriteEngine on

  RewriteCond %{HTTP_HOST} ^www\.example\.de$ [NC]
  RewriteRule ^(.*)$ http://example.de/$1 [R=301,L]
 
  RewriteRule ^/ordner/(.*)$ http://example.de/$1 [R=301,L]
 
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_URI} !=/favicon.ico
  RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
</IfModule>


Benutzer-Profile anzeigen Private Nachricht senden
Antworten mit Zitat
Beitrag  
krabbe hat Folgendes geschrieben:
kartoffelkopf hat Folgendes geschrieben:
Dann poste nochmal alle Rewrite-Rules die Du hast oder schau mal ins Accesslog des Webservers, welche Webseiten tatsaechlich aufgerufen oder nicht gefunden werden.


Hier sind sie:
Code:

<IfModule mod_rewrite.c>
  RewriteEngine on

  RewriteCond %{HTTP_HOST} ^www\.example\.de$ [NC]
  RewriteRule ^(.*)$ http://example.de/$1 [R=301,L]
 
  RewriteRule ^/ordner/(.*)$ http://example.de/$1 [R=301,L]
 
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_URI} !=/favicon.ico
  RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
</IfModule>


Also bei mir funktioniert das ordner-Rewrite. Einige Kleinigkeiten sind noch falsch:

Code:

<IfModule mod_rewrite.c>
  RewriteEngine on

  RewriteCond %{HTTP_HOST} ^www\.example\.de$ [NC]
  RewriteRule ^(.*)$ http://example.de/$1 [R=301,L]
 
  RewriteRule ^/ordner/(.*)$ http://example.de/$1 [R=301,L]
 
  RewriteCond %{REQUEST_FILENAME} !-f [OR]
  RewriteCond %{REQUEST_FILENAME} !-d [OR]
  RewriteCond %{REQUEST_URI} !=/favicon.ico
  RewriteRule ^(.*)$ /index.php?q=$1 [L,QSA]
</IfModule>


Bei OR wird das explizite AND ausgeschlossen. Ohne dem / vor index.php gibt es Error 400 (Bad Request), wenn nicht irgendwo / als DocumentRoot definiert ist.

Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:
Neue Antwort erstellen Seite 1 von 2
Gehe zu Seite 1, 2  Weiter
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.