• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

RewriteRule mit Bedingung

TecEye

New member
Hy Leute, nach langer Zeit suche ich wieder einmal Rat bei der besten Community ever :)

Ich verwende folgendes script in meiner .htaccess um meine URLs SEO tauglich zu machen
Code:
RewriteEngine On
RewriteRule (.*)\.html$ /index.php?goto=$1

in $1 ist der Titel drin der mir wiederum aus der DB die richtige Seite gibt, alles andere mach ich mit Variablen in Ajax.

Jetzt hab ich aber eine Immobilienverwaltung mit drin und zu den Detailseiten soll man per direkten Link reinkommen.

Ich möchte dies quasi als "Ordner" in der URL haben.

Momentan ist es so: www.domain.de/immobilien-liste.html

zu den detailseiten soll es so sein: www.domain.de/haus-am-see-duesseldorf/immobilien-details.html

wie kann ich die bedingung in der .htaccess ändern, um eine zweite variable $artikel zu erhalten.
Aber halt NUR wenn es einen "Ordner" gibt?
 
Ich würde das ja in PHP machen. Also $_GET["goto"] überprüfen, ob ein "/" drin ist und dann an der Stelle auseinanderschneiden.

Aber es ist auch mit einer RewriteRule möglich. Solle ungefähr so aussehen:
Code:
RewriteEngine On
RewriteRule ([^/]*)/(.*)\.html$ /index.php?goto=$1&articel=$2 [L]
RewriteRule (.*)\.html$ /index.php?goto=$1 [L]
- ungetestet.
 
Hab es so gemacht wie du gesagt hast, die seite kommt auch, also der inhalt aber die pfade stimmen nicht mehr von der css datei usw, als ob der browser denkt das er einen Ordner höher ist, kann das sein?
 
Natürlich denkt der Browser, dass er jetzt in einem anderen Ordner ist. Der hat ja keine Information über irgendwelche RewriteRules.
 
und wie sag ich ihm dass dem nicht so ist?

- - - Aktualisiert - - -

Fehlt da nicht ein RewriteCon also eine bedingung? wenn kein Order also Artikel dann benutze RewriteRule 2?
 
Also der korrekte Einsatz ist folgender:

Das muss es können

1) domain.de/123456/ -> domain.de/index.php?orga=123456&page=0
2) domain.de/123456/test.dat -> domain.de/index.php?orga=123456&page=test
3) domain.de/ -> domain.de/index.php?orga=0&page=0
4) domain.de/test.dat -> domain.de/index.php?orga=0&page=test.dat

Eigener Ansatz ist RewriteRule
Code:
RewriteEngine On
RewriteRule ^([\w]+)/$ /index.php?orga=$1&page=0 [QSA,L]
RewriteRule ^([\w]+)/?(.*)\.dat$ /index.php?orga=$1&page=$2 [QSA,L]
RewriteRule ^(.*)\.dat$ /index.php?orga=0&page=$2 [QSA,L]
RewriteRule ^$ /index.php?orga=0&page=0 [QSA,L]

Ist das soweit korrekt? Aber da muss ja nochwas zwischen um die jeweiligen Bedingungen einzufügen. oder wofür ist RewriteCont da?
 
Zuletzt bearbeitet:
Die Dritte ist auf jeden Fall falsch, da in der RegExp nur ein Teil gematched wird - also muss im Replace hinten das $2 zu einem $1 werden.
Sonst sehen sie nicht schlecht aus. Ob sie funktionieren kannst du ja selber testen.

RewriteCond sind für mehrere Bedingungen und/oder speziellere Bedinungen da. Hier brauchst du sie nicht.
 
Zurück
Oben