php.de

Zurück   php.de > Webentwicklung > Server, Hosting und Workstations

Server, Hosting und Workstations Server-Konfigurationsdateien (.htaccess/httpd.conf) und Arbeiten auf Serverebene

Antwort
 
LinkBack (1) Themen-Optionen Thema bewerten
Alt 03.02.2008, 16:30  
Benutzer
 
Registriert seit: 02.06.2006
Beiträge: 53
TailerD
Standard htaccess reguläre Ausdrücke - Ausdruck wird angehängt

Hallo

es geht also um die regulären Ausdrücke in der .htaccess Datei. Ich dachte für meine derzeitige Anfoderung hätte ich das verstanden aber bei der Anpassung im Link wird nach dem Erfolg, die zuvor erstellte Regel angehängt.

Zum besseren Verständnis es gibt ne Artikelauswahl :

- erste Ebene (1.Hauptkategorie) --> http://www.domain.de/egal/1_Hauptkategorie.html
| --zweite Ebene (1.1 Unterkategorie) --> http://www.domain.de/egal/1_Hauptkategorie/1_1.html
| ---dritte Ebene (1.1.1 Unterkategorie) --> http://www.domain.de/egal/1_Hauptkat...1_1/1.1.1.html
| ---dritte Ebene (1.1.2 Unterkategorie)-->

Auszug aus der .htaccess
Code:
RewriteRule ^(.*).html$ /egal/index.php?mo=h1&pf2=$1 [L]
RewriteRule ^(.*)/(.*).html$ /egal/index.php?mo=h2&pf2=$2&pf3=$3 [L]
RewriteRule ^(.*)/(.*)/(.*).html$ /egal/index.php?mo=h3&pf2=$4&pf3=$5&pf1=$6 [L]
RewriteRule ^(.*)/(.*)/(.*)/(.*).html$ /egal/index.php?mo=h4&pf2=$7&pf3=$8&pf1=$9&pf4=$10 [L]
Solange ich die ersten Ebene auswähle funktioniert es. In der Status leiste des Browsers wird die jeweils richtige URL für die Auswahl angezeigt.
Sobald ich dann einen angeklickt habe, aus der zweiten Ebene, wird sofort danach die erste Ebene angehängt.

Also so ist gut
http://www.domain.de/eagl/1_Hauptkategorie/1_2.html

aber so siehts in der Statusleiste d Browsers nach dem Klick aus http://www.domain.de/egal/1_Hauptkat...gorie/1_2.html
obwohl der ja vorher ok war also auch aktuell in der Url richtig ist.

Ich glaub ja das liegt an den RewriteRules regeln, weil die Auswahl ohne die Regeln geht, aber ich weis nicht was ich anders machen muss, damit es auch mit den Regeln geht.

Würd mich freuen, wenn jemand sich die Zeit nehmen könnte mir zu helfen, weil das ist irgendwie depri...
TailerD ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 03.02.2008, 18:28  
CIX88
Gast
 
Beiträge: n/a
Standard

Um Gottes Willen
Bin zwar kein Freund von entlos vielen Unterverzeichnissen, aber du solltest erstmal .* mit .+ ersetzen.
Ansonsten ist domain.de////2_Hauptkategorie.html auch gültig, und das kann ich mir nicht vorstellen.

Jeder Inhalt der runden Klammern stellt eine Gruppierung dar.
1. Klammer = $1
2. Klammer = $2
...
und das in jeder Zeile neu!!!

RewriteRule ^(.*)/(.*)/(.*)/(.*).html$ /egal/index.php?mo=h4&pf2=$7&pf3=$8&pf1=$9&pf4=$10 [L]

Wo du hier $10 herholst, ist mir schleierhaft.
Das Ding hat nur 4 Gruppierungen, also kann in dieser Zeile $n max. nur 4 sein.
  Mit Zitat antworten
Alt 03.02.2008, 20:35  
Benutzer
 
Registriert seit: 02.06.2006
Beiträge: 53
TailerD
Standard

Ja ok nur für die jeweilige Regel gelten die Variablen also nur für diese Regel. HAb ich wieder geändert. Für jede Regel max 4 Danke. Das war ein Fehler. Naja der will das halt so mit den Unterverzeichnissen.

und statt dem * ein + ok.

Was meinst du mit
Zitat:
Zitat von CIX88
Ansonsten ist domain.de////2_Hauptkategorie.html auch gültig, und das kann ich mir nicht vorstellen.
Ne ich mir auch nicht.
Also mit der Gültigkeit, also ich meine, ich dachte mir dabei das die Regel nur angewendet wird wenn der Link in der Gesamtheit übereinstimmt.

Aber ich glaub, meinstu so ist das besser: also das nur eine Regel einzeln überprüft wird, statt 4 Regeln nur eine.

Code:
RewriteRule ^([^/]+[^/]+[^/]+[^/]+)\.html$ /egal/index.php?pf2=$1&pf3=$2&pf1=$3&pf4=$4 [L]
Die Variablen ersetzen den Ausdruck in der Folge n
Dieses mo=..im Link brauch ich eigendlich bzw. kommt dann sowieso weg bei Umstellung des Links auf html.

Gilt denn dann die Regel auch wenn zum Beispiel &pf4=$4 noch nicht vorkommt ? Also deswegen hab ich das Dach gemacht. Aber ich kann das grad nicht prüfen.

Irgendwie komisch.
TailerD ist offline   Mit Zitat antworten
Alt 03.02.2008, 22:26  
CIX88
Gast
 
Beiträge: n/a
Standard

Schau dir mal in Ruhe www.modrewrite.de an, das erspart jedenfalls erstmal viel Zeit und Nerven.
Denn auch dein letztes Beispiel stimmt hinten und vorne nicht.
Es hilft aber nicht, wenn sich jemand hier die Finger wund tippt, wenn die Grundlagen noch nicht verstanden sind - das ist aber die Basis.
Also Grundlagen im Sinne von:
- wann setze ich ein + oder *
- wann setze ich ( und )
usw. usw. usw.
  Mit Zitat antworten
Alt 03.02.2008, 23:00  
Benutzer
 
Registriert seit: 02.06.2006
Beiträge: 53
TailerD
Standard

Ok. Dann schau ich da mal.
TailerD ist offline   Mit Zitat antworten
Alt 06.02.2008, 14:48  
Benutzer
 
Registriert seit: 02.06.2006
Beiträge: 53
TailerD
Standard

Zitat:
Zitat von TailerD
Ok. Dann schau ich da mal.
Zwei Tage lang kein Php, keine regulären Ausdrücke, kein Computerbildschirm im Gesicht ... und mit neuer Energie an ein neues Thema, ran an die Tasten.... Jetzt gehts.

Eine wirklich gute Seite, mit guten Tutorials. Jetzt machts wieder Spass. Wiedermal besten Dank, auch an dieses Forum.
TailerD ist offline   Mit Zitat antworten
Alt 06.02.2008, 17:41  
CIX88
Gast
 
Beiträge: n/a
Standard

Haste es also hinbekommen ja ?
Kannst ja ein Feedback geben
  Mit Zitat antworten
Alt 06.02.2008, 19:22  
Benutzer
 
Registriert seit: 02.06.2006
Beiträge: 53
TailerD
Standard

Ja also das sieht jetzt so aus bei mir unter localhost.

Code:
<IfModule mod_rewrite.c>

#aktivieren das benötigte Modul
RewriteEngine On
#root
RewriteBase /

RewriteRule ^/([A-Za-z0-9_]*)\.html$ /index.php?mo=h1&pf2=$1 [L]
RewriteRule ^/([A-Za-z0-9_]+)/([A-Za-z0-9_]*)\.html$ /index.php?mo=h2&pf2=$1&pf3=$2 [L]
RewriteRule ^/([A-Za-z0-9_]+)/([A-Za-z0-9_]+)/([A-Za-z0-9_]*)\.html$ /index.php?mo=h5&pf2=$1&pf3=$2&pf1=$3 [L]
RewriteRule ^/([A-Za-z0-9_]+)/([A-Za-z0-9_]+)/([A-Za-z0-9_]+)/([A-Za-z0-9_]*)\.html$ /index.php?mo=h4&pf2=$1&pf3=$2&pf1=$3&pf4=$4 [L]
</IfModule>
*=Variable per get
+= verbindet die Zeichen zu Text
^=Textanfang in der Browseradressleiste
$=Textende in der Browseradressleiste
/= eine der vielen möglichen Trennungen
. sollte ecaped werden, weil der auch anderen Fkt hat
[L] = wenn zutrifft keine andere mehr prüfen

JA also ich hab mich aber zu früh gefreut. Also bei mir unter z.B. http://localhost/Hauptkategorie.html gehts so wie oben.

Aber nicht mehr bei Hosteurope.
Da liegen die Dateien in einem anderen Verzeichnis.

Die .htaccess im root Verzeichnis.
Die RewriteRule dort sieht so aus
^/([A-Za-z0-9_]*)\.html$ /Ordner/index.php?mo=h1&pf2=$1 [L]

Der Aufruf über den Browser erfolgt so http://www.domain.com/Ordner/Hauptkategorie.html sein.

Da steht aber immer
Objekt nicht gefunden.
Der angeforderte URL konnte auf dem Server nicht gefunden werden. Der Link auf der verweisenden Seite scheint falsch oder nicht mehr aktuell zu sein. Bitte informieren Sie den Autor dieser Seite über den Fehler
.

Für mich nicht sehr hilfreich. Versteh ich nicht. Will aber..
Kannst du mich oder eine anderer erlösen von diesen Qualen?
TailerD ist offline   Mit Zitat antworten
Alt 06.02.2008, 20:42  
CIX88
Gast
 
Beiträge: n/a
Standard

Hmmm, wenn es im root liegt vielleicht mal so:
^/Ordner/([A-Za-z0-9_]*)\.html$ /Ordner/index.php?mo=h1&pf2=$1 [L]
oder einfach
^Ordner/([A-Za-z0-9_]*)\.html$ Ordner/index.php?mo=h1&pf2=$1 [L]
  Mit Zitat antworten
Alt 06.02.2008, 21:03  
Benutzer
 
Registriert seit: 02.06.2006
Beiträge: 53
TailerD
Standard

Nee leider nicht.

HAb auch versucht wenn alle anderen Regeln ausgeschlossen sind. Aber irgendwas ist noch falsch.
TailerD ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

LinkBacks (?)
LinkBack to this Thread: http://www.php.de/server-hosting-und-workstations/45436-htaccess-regulaere-ausdruecke-ausdruck-wird-angehaengt.html
Erstellt von For Type Datum
Linktest - Zwicker-Systems This thread Refback 27.10.2008 10:43

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
htaccess reguläre ausdrücke, reguläre ausdrücke htaccess, rewriterule reguläre ausdrücke, reguläre ausdrücke rewriterule, htaccess zeichen, .htaccess reguläre ausdrücke, htaccess alle zeichen, reguläre ausdrücke .htaccess, htaccess regulärer ausdruck, htaccess zeichen ersetzen, htaccess ausdrücke, mod_rewrite reguläre ausdrücke, htaccess regular expressions, rewriterule regulärer ausdruck, regulärer ausdruck htaccess, htaccess ersetzen, rewriterule .htaccess leerzeichen werden durch - ersetzt, reguläre ausdrücke in htaccess, htaccess url ersetzen, reguläre ausdrücke htacess

Alle Zeitangaben in WEZ +2. Es ist jetzt 21:45 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.