• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

mod_rewrite regexp

Status
Für weitere Antworten geschlossen.

Frank

Neues Mitglied
Halloo Community,
Ich versuche nun schon seit einer halben Stunde einen Regexp für mod_rewrite zu basteln, der folgendes erledigt:

/G-STAR/news/ wird zu G-STAR/index.php?page=news

bzw halt dann /G-STAR/guestbook/ wird zu G-STAR/index.php?page=guestbook usw.

Leider schaffe ich das nicht. Wäre dankbar für hilfe
 
PHP:
$str = "/G-STAR/guestbook/";
$new = preg_replace('/^\/(.*)\/(.*)\/$/i', '$1/index.php?page=$2', $str);
echo $new;
So?

Edit: ACh mod_rewrite xD nich gesehn
 
Zuletzt bearbeitet:
Hallo,

geht mit:
Code:
RewriteEngine on
RewriteBase  /G-STAR/

RewriteRule ^([a-zA-Z]+)/?$ index.php?page=$1
Damit werden nur Aufrufe behandelt, die G-STAR als obersten Ordner haben. Der Ordner danach wird als Parameter $1 an index.php?page= angehängt. (Der / am Ende ist optional.) Die index.php wird aus dem Ordner G-STAR aufgerufen.

N43
 
das Funktioniert leider nicht
404 Objekt nicht gefunden!

Ich habe inzwischen eine andere 'Lösung' gefunden. Lösung in ' da sie nicht wirklich Funktioniert.

zwar kann ich G-STAR/news aufrufen und es ist so wie es sein soll, aber bei G-STAR/news/ funktioniert esn icht mehr.

Hier mein Code
Code:
RewriteEngine on
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^(.*)$ index.php?page=$1&%{QUERY_STRING} [L]

Thx

PS Ich sollte noch erwähnen dass die .htaccess im Ordner G-STAR liegt

Edit

Ok ich kann mich teilweise korrigieren. Dein RegExp funktioniert super. Da ich vergessen hatte zu erwähnen dass die Datei schon im Ordner G-STAR liegt, musste ich deine RewriteBase löschen
Aber auch bei dir funktioniert ein solcher aufruf G-STAR/news/ (mit / am ende) nicht. Zwar wird die Seite angezeigt aber das Stylesheet wird nicht mehr eingebunden.
 
Abend,

Ok ich kann mich teilweise korrigieren. Dein RegExp funktioniert super. Da ich vergessen hatte zu erwähnen dass die Datei schon im Ordner G-STAR liegt, musste ich deine RewriteBase löschen
Aber auch bei dir funktioniert ein solcher aufruf G-STAR/news/ (mit / am ende) nicht. Zwar wird die Seite angezeigt aber das Stylesheet wird nicht mehr eingebunden.


Bindest du das Stylesheet über 'nen relativen oder absoluten Pfad ein? Weil durch 'nen / am Ende hält der Browser news/ ja für ein Verzeichnis.


N43
 
das stylesheet wird über einen relativen Pfad eingebunden.

Kann mir vorstellen dass es mit einem absoluten Pfad funktioniert, allerdings habe ich eigentlich nicht so viel lust, alles absolut anzugeben, aber wenns sein muss...

Danke euch auf jedenfall schoneinmal, das Mod_Rewrite funktioniert auf jedenfall schoneinmal :)
 
ich habe meine style sheets in meinem neuen CMS im ordner images/css/....css
das war für mich auch erst ein problem das ich dan relativ leicht gelöst habe

Code:
RewriteRule ^/css/(.*)/?$ images/css/$1.css

nebenbei n tip mit dem man sich das leben n bissel leichter machen kann und was wesentlich recourcen schonender ist da htaccess jedesmal wieder neu geladen wird ;)

Code:
RewriteRule ^/(.*)/(.*).html$ index.php?site=$1
RewriteRule ^/(.*)/(.*)_(.*)/(.*).html$ index.php?site=$1&$2=$3
RewriteRule ^/(.*)/(.*)_(.*)/(.*)_(.*)/(.*).html$ index.php?site=$1&$2=$3&$4=$5
RewriteRule ^/(.*)/(.*)_(.*)/(.*)_(.*)/(.*)_(.*)/(.*).html$ index.php?site=$1&$2=$3&$4=$5&$6=$7

so kann man als programmierer wesentlich leichter arbeiten, muss nicht andauernd die htaccess ändern und spart zudem recourcen... obwohl die links dadurch n bissel komisch aussehen z.b.

www.google.de/news/id_234/action_show/test_news.html

aber es hat trotsdem die gleiche wirkung auf suchmaschienen, wenn man es richtig anstellt :P ;)

nachteiel man muss int felder in PHP weiter parsen aber man könnte ja auch einen einfachen regex einbauen z.b. für a-zA-Z0-9_
diese zeichen sollten ja eigentlich jedem reichen :P

auf gutes gelingen und das du nciht so unsauber wirst wie ich :-D
 
Hallo,

man kann auch die Parameter und deren Reihenfolge festlegen, dann muss man sie nicht im Dateinamen mit übergeben. Sieht dann nicht ganz so unschön aus.


N43
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben