Du befindest Dich im Archiv vom ABAKUS Online Marketing Forum. Hier kannst Du Dich für das Forum mit den aktuellen Beiträgen registrieren.

Frage zu htaccess Anweisung

Ajax, Hijax, Microformats, RDF, Markup, HTML, PHP, CSS, MySQL, htaccess, robots.txt, CGI, Java, Javascript usw.
Neues Thema Antworten
hansmaiser
PostRank 4
PostRank 4
Beiträge: 173
Registriert: 19.04.2004, 12:07

Beitrag von hansmaiser » 19.12.2006, 11:45

Hallo,

was bewirkt diese Anweisung:

RewriteRule ^neu(.*)$ index.php?d=neu

Wird der Aufruf von www.domain.de/neu auf www.domain.de/index.php?d=neu weitergeleitet? Müsste das funktionieren?

Woran könnte es liegen, dass es nicht funktioniert?

Anzeige von ABAKUS

von Anzeige von ABAKUS »

SEO Consulting bei ABAKUS Internet Marketing
Erfahrung seit 2002
  • persönliche Betreuung
  • individuelle Beratung
  • kompetente Umsetzung

Jetzt anfragen: 0511 / 300325-0.


haha
PostRank 9
PostRank 9
Beiträge: 1065
Registriert: 03.04.2006, 18:08
Wohnort: Bi Hamborg

Beitrag von haha » 19.12.2006, 12:24

hansmaiser hat geschrieben:was bewirkt diese Anweisung:

RewriteRule ^neu(.*)$ index.php?d=neu

Wird der Aufruf von www.domain.de/neu auf www.domain.de/index.php?d=neu weitergeleitet?
Nein, es wird für alle URLs, die mit neu beginnen (!) und sich im Verzeichnis, in dem die betreffende .htaccess liegt, befinden, die URL index.php?d=neu aufgerufen.
NB: Der Browser bekommt davon nichts mit, das ist keine echte, externe Weiterleitung, sondern eine interne.
Woran könnte es liegen, dass es nicht funktioniert?
Erstmal muss das Modul mit RewriteEngine eingeschaltet und ihm anschließend mit RewriteBase die Basis-URL mitgeteilt werden. Danach kann man RewriteRule und, so nötig, RewriteCond benutzen.

hansmaiser
PostRank 4
PostRank 4
Beiträge: 173
Registriert: 19.04.2004, 12:07

Beitrag von hansmaiser » 19.12.2006, 12:33

Ok, wie würde denn die Anweisung aussehen, wenn ich www.domain.de/neu auf www.domain.de/index.php?d=neu intern (nicht sichtbar) umleiten lassen wollte?

RewriteEngine On
RewriteBase /
RewriteRule ^neu(.*)$ index.php?d=neu

So funzt es nicht...

haha
PostRank 9
PostRank 9
Beiträge: 1065
Registriert: 03.04.2006, 18:08
Wohnort: Bi Hamborg

Beitrag von haha » 19.12.2006, 12:49

hansmaiser hat geschrieben:RewriteEngine On
RewriteBase /
RewriteRule ^neu(.*)$ index.php?d=neu

So funzt es nicht...
Das Wort "funzen" solltest Du besser aus Deinem Sprachschatz streichen. Es ist keine brauchbare Fehlerbeschreibung, sondern nur eine Aufforderung, dass man Dir weitere Informationen aus der Nase zu ziehen soll.

Der Block sollte auf /neu ansprechen, auch wenn (.*) überflüssig ist (weil es auch auf /neuwertig, /neuegurken oder /neu/oder/alt/ anspricht) und ^neu$ richtiger wäre.

Variante 1: Erscheint statt index.php?d=neu die Meldung, dass /neu nicht gefunden wurde, probiere es erstmal nur mit neu und füge nacheinander ^ und $ hinzu. Prüfe weiterhin, ob Du auf index.php?d=neu direkt zugreifen kannst.

Variante 2: Erscheint die Fehlermeldung "Internal Server Error", musst Du Dich an Deinen Hoster wenden.

Variante 3: Erscheint irgendeine andere Seite, funken andere Rewrite- oder Redirect-Anweisungen dazwischen.

Anonymous

Beitrag von Anonymous » 19.12.2006, 12:56

Das kannst Du mit einem 301 Redirect machen und solltest Du auch tun, wenn sich Deine URLs geändert haben. Hier mal ein Beispiel kurz aus einer .htaccess kopiert:

Code: Alles auswählen

RewriteEngine On
Redirect 301 /gallery.html  http://rutenmuehle.com/gallery,1.htm 
Zuletzt geändert von Gast am 19.12.2006, 13:22, insgesamt 1-mal geändert.

hansmaiser
PostRank 4
PostRank 4
Beiträge: 173
Registriert: 19.04.2004, 12:07

Beitrag von hansmaiser » 19.12.2006, 12:57

Ok, hab ich versucht.

Es funktioniert mit

RewriteRule neu(.*)$ index.php?d=neu

Dieses ^ stört anscheinend... Naja hauptsache es funktioniert jetzt ;-)

Vielen Dank Haha!!

hansmaiser
PostRank 4
PostRank 4
Beiträge: 173
Registriert: 19.04.2004, 12:07

Beitrag von hansmaiser » 19.12.2006, 13:26

Ok, jetzt funktionieren die URLS ohne Parameter. Jedoch stimmen die URLS mit Parameter nicht...

Hier ein Bsp:

RewriteRule artikel(.*)_(.*)$ index.php?d=artikel&id=$1

Die angezeigte URL sieht so aus

www.domain.de/artikel18_test

Eigentlich müsste doch intern www.domain.de/index.php?d=artikel&id=18 aufgerufen werden oder? Wenn die interne URL direkt aufrufe wird der Artikel angezeigt, ansonsten nicht.

Ist in der Rule ein Fehler oder warum wird nicht richtig umgeleitet?

haha
PostRank 9
PostRank 9
Beiträge: 1065
Registriert: 03.04.2006, 18:08
Wohnort: Bi Hamborg

Beitrag von haha » 19.12.2006, 16:06

hansmaiser hat geschrieben:Es funktioniert mit

RewriteRule neu(.*)$ index.php?d=neu

Dieses ^ stört anscheinend
Merkwürdig. Das ^ markiert den Beginn des Textes, das $ das Textende; das Muster ^neu$ bedeutet also "Textanfang, Zeichen n, e, u, Textende". So gesehen müsste ^neu$ auf neu passen. Irgendwas stört da.

Probiere doch nochmal ^/neu$ oder versuche es mit ^.neu$, ^..neu$ usw (ein Punkt steht für ein einzelnes, beliebiges Zeichen), um herauszufinden, wieviel da noch vor dem neu steht.
^.*neu$ müsste übrigens auch funktionieren, ist aber genauso unschön wie neu$ .

Aus letztlich dem gleichen Grund solltest Du in jedem Fall den Klammerteil am Ende rausnehmen. Dein jetziges Muster neu(.*)$ passt nämlich auf alles, was irgendwo das Wörtchen neu enthält, einmal weil vorne die Anfangsmarke ^ fehlt (es kann also noch beliebiger Text vor neu kommen), einmal weil zwischen neu und Endmarke $ die beiden Zeichen .* stehen, die für eine beliebige Menge (*) beliebiger Zeichen (.) stehen.
RewriteRule artikel(.*)_(.*)$ index.php?d=artikel&id=$1

Die angezeigte URL sieht so aus

www.domain.de/artikel18_test

Eigentlich müsste doch intern www.domain.de/index.php?d=artikel&id=18 aufgerufen werden oder?
Sehe ich auch so und tut's bei mir auch so. Irgendwo scheint bei Dir der Wurm drin zu sein, weil ^neu$ ja auch schon nicht auf neu passt.

Da Du mehrere Regeln zu haben scheinst, solltest Du am Besten alles auskommentieren bis auf RewriteEngine, RewriteBase und die zu prüfende RewriteRule/RewriteCond-Kombination. Auf diese Weise kannst Du zumindest ausschließen, dass es zu Überschneidungen kommt.

Beachte auch, dass die RewriteRule-Zeilen meist mit [L] enden sollten, um die weitere Verarbeitung abzubrechen (siehe Anleitung).

Antworten
  • Vergleichbare Themen
    Antworten
    Zugriffe
    Letzter Beitrag