Seite 1 von 1

Mod_Rewrite mit Smarty und reg. Exp.

Verfasst: 24.11.2005, 20:02
von 13pixelchen
Hi,

Könnte jemand so lieb sein, und mir mal auf die Sprünge helfen? Mod_Rewrite, und OOP sind die zwei letzten großen Geheimnisse, die ich zur Zeit zu lüften versuche. Und die Seite soll aber noch dieses Jahr online gehen. Sagt mir, ob das überhaupt so machbar ist, wie ich es mir vorstelle.

Nutzen will ich mod_rewrite für die eine Richtung und reguläre Ausdrücke zusammen mit dem Smarty Ausgabefilter (https://smarty.php.net/manual/de/advanc ... ilters.php) für die Andere, damit ich auch jede URL erwische. Performance ist relativ egal, weil die Inhalte eh für ne Stunde gecacht werden.

Folgende URL-Beispiele. Gleichbedeutende stehen im Block. In SuMa-freundlichen String umgeschrieben werden soll:

https://www.domain.net/
https://www.domain.net/index.php
https://www.domain.net/index.php?seite=portal

https://www.domain.net/index.php?seite=impressum

https://www.domain.net/index.php?star=vorname-nachname
https://www.domain.net/index.php?star=v ... seite=vita

https://www.domain.net/index.php?star=v ... eite=links

Wie gehe ich da am Besten ran? Das htaccess, welches nicht-www auf www. umleitet steht schon drin. Kann mir jemand einen Tipp geben, wie ich da am Besten rangehe? //edit: Ich hab mir gedacht, am Ende könnte sowas rauskommen:

https://www.domain.net/vorname-nachname/links oder ist das schlecht fürn PR, weil der ja Verzeichnisweise abnimmt?

Verfasst:
von

Mod_Rewrite mit Smarty und reg. Exp.

Verfasst: 24.11.2005, 23:21
von 13pixelchen
Versuch 1:

Code: Alles auswählen

RewriteEngine on

RewriteCond %{HTTP_HOST} !^www.domain.net$ 
RewriteRule ^(.*)$ http://www.domain.net/$1 [L,R=301]

RewriteCond   %{REQUEST_FILENAME}   !-d [NC]
RewriteCond   %{REQUEST_FILENAME}   !-f [NC]

RewriteCond   %{REQUEST_URI}         !^/index\.php [NC]
RewriteRule   ^([^/]+)$              /index.php?seite=$1 [NC]
RewriteRule   ^(.+-[^/]+)$           /index.php?star=$1 [NC]
RewriteRule   ^(.+-[^/]+)/([^/]+)$   /index.php?star=$1&seite=$2 [NC,L]
Geht nur teilweise, alle Bildlinks und CSS-Bildlinks gehen nicht mehr. Die zweiten Doppelzeilen sollen den Zugriff auf existierende Dateien dennoch erlauben. Klappt aber nicht so ganz.

Mod_Rewrite mit Smarty und reg. Exp.

Verfasst: 25.11.2005, 17:13
von 13pixelchen
Ich zahle dafür.

//edit: nu hat sichs ja erledigt.

Verfasst:
von

Mod_Rewrite mit Smarty und reg. Exp.

Verfasst: 25.11.2005, 23:14
von 13pixelchen
Das Forum sponnte. Also, hat sich in dieser Richtung gelöst. So sieht es jetzt aus:

Code: Alles auswählen

RewriteEngine on 

RewriteCond %{HTTP_HOST} !^www.domain.net$ 
RewriteRule ^(.*)$ http://www.domain.net/$1 [R=301,L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond   %{REQUEST_URI}             !^/index\.php 
RewriteRule   ^([^/]+)\.htm$                 /index.php?seite=$1 [L] 
RewriteRule   ^(.+-[^/]+)\.htm$              /index.php?star=$1 [L] 
RewriteRule   ^(.+-[^/]+)/([^/]+)\.htm$      /index.php?star=$1&seite=$2 [L]
und so sieht der Versuch aus, das als preg_replace vom Script generieren zu lassen, dass er alle href ersetzt. Bis "href" stimmts dann auch, der Rest ist Fremd und stimmt so natürlich nicht.

Code: Alles auswählen

$tpl_output = preg_replace&#40;'/<a\s+&#40;.*&#41;href=&#91;\'\"&#93;&#40;&#91;^\'\"&#93;*&#41;\&a?m?p?;?&#40;&#91;^\'\"&#93;*&#41;&#91;\'\"&#93;/i','<a $1href="$2+an+$3"', $tpl_output&#41;;