RewriteRules von Wordpress erweitern

gamerphil
Moin,

ich habe hier ne Wordpress-Seite, deren Permalinkstruktur auf
Zitat:
Day and name http://domain.de/wp/2010/05/08/sample-post/

umgestellt wurde.

Habe aber ein eigenes Script per Seitentemplate eingebunden, dass auf eine GET-Variable zugreift:
http://domain.de/wp/überseite/unterseite/?blah=xyz

Dies würde ich gerne per htaccess in
http://domain.de/wp/überseite/unterseite/xyz
umwandeln.

Habe leider nicht so den Schimmer davon und wollte euch nun mal um Vorschläge bitten. Die aktuelle .htaccess sieht so aus:
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /main2/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /main2/index.php [L]
</IfModule>
# END WordPress


Danke schon mal,
Phil
one
code:
1:
2:
3:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^http://domain.de/wp/überseite/unterseite/xyz
RewriteRule (.*) http://domain.de/wp/überseite/unterseite/xyz/$1 [R=301,L]


Das muss in in Ordner wo das Script liegt. Dieses sollte gleichfalls einen eigenen Ordner haben.

Edit by me
Nee, ich glaub das ist Murks. Probier halt mal. D
gamerphil
Die Seitentemplates können soweit mir bekannt keinen eigenen Ordner haben. Die liegen immer im Templateordner.

Die Sache ist die, dass ich nicht weisst wie dieses xyz an diese bestimmte GET variable angefügt wird. also aus dem xyz muss ja nur ?blah=xyz werden...

Scheiss htaccess da immer.
one
Das ist nicht unbedingt .htaccess. Sowas kann man auch per php regeln.
gamerphil
Ja das stimmt. Könnte ich mir auch mal überlegen. Gute Idee.
Merialos
code:
1:
2:
3:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^domain\.de/wp/ueberseite/unterseite/+([^.]+)$ [NC]
RewriteRule ^(.*)$ /index.php?blah=$1 [L,NC]


Irgendwie so, hab's nicht getestet D
one
Eine direkte Umschubsung ist recht einfach in php zu regeln.

Guckste: www.dau.cc

code:
1:
2:
3:
if(isset($_SERVER["REQUEST_URI"]) && !stristr($_SERVER["REQUEST_URI"],'index.php')) {
  header('Location: /hmportal.php');
}


Der Vorteil daran ist, dass .htaccess immer Zeit beim Aufrufen braucht.
gamerphil
Das von Merialos sieht logisch aus und werde ich gleich mal testen. Die Umleitung über PHP ist mir in dem Fall zu doof D

BTW: one in der Location Anweisung im header stehen laut Definition immer absolute URIs ;)

Edit by Phil
Was ich in dem Zusammenhang recht gut finde ist das Mod-Rewrite Cheat Sheet
one
Bei einer .htaccess solltest du auf jeden Fall immer darauf achten, dass genug Arsch unter der Hose ist (RAM), wenn sie zu gross wird. Sie kann die Ladezeiten erheblich verlangsamen.
gamerphil
Bisher bekomme ich nur Internal Server Erros, daher mal ne Frage ob ich das so überhaupt machen kann.

Bevor die Wordpress Umschreibungen greifen, woltle ich den überseite/unterseite/xyz String in überseite/unterseite/?blah=xyz umschreiben und dieser soll dann von Wordpress bearbeitet werden.
Hintergrund ist der, dass ich verhindern will das auf den ersten String die Wordpress Routinen schon greifen, da ich dann ne 404 Meldung bekomme, da Wordpress eine Unterseite zur Unterseite vermutet. Daher muss die Verarbeitung vorher erfolgen.

Die RewriteRule darf daher kein L hinten angehängt bekommen, da ja die weitere Umschreibung erfolgen soll.

Was ich probiert hatte:
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /main2/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
#RewriteRule ^ueberseite/unterseite/(.*)/?$ ueberseite/unterseite/?blah=$1
RewriteRule . /main2/index.php [L]
</IfModule>
one
Zitat:
Original von gamerphil am 08. Mai 2010, 16:41 Uhr
Die RewriteRule darf daher kein L hinten angehängt bekommen, da ja die weitere Umschreibung erfolgen soll.


Du willst also .htaccess mit was anderem verknüpfen? Vergiss es. L

Wordpress im Handling ist eh Müll erster Kajüte. Schmeiss es einfach weg.
gamerphil
Nein will ich nicht nach der ersten RewriteRule kommt die von Wordpress erstellte einfach noch hinten an.
one
Dann kannst du die von WP doch auch einfach löschen und in die neue mit einbauen. !?
gamerphil
Ich habe eben mal im Wordpress Forum angefragt. Vielleicht wissen die da als Experten eher Bescheid.

Edit by phil
Im Prinzip lautet meine Rewrite Rule nun so:
RewriteRule ^schedule/soccer/(.+)$ /schedule/soccer/?spiel=$1
Das Ding ist nur, dass die daraus erzeugte URl nun wieder umgeschrieben muss. Nämlich muss sie über /main2/index.php gejagt werden, wie es auch die Wordpress Rule macht. Allerdings benutzt die Rule von Wordpress die ursprüngliche URI und nicht die neue. Ist halt nur die Frage wie ich die neue URI nun verwenden kann.