Z€ddix: htaccess mod rewrite

Hey Community,
ich habe einige Schwierigkeiten mit dem mod rewrite Modul.

Folgenden Code habe ich auf meinem Server in example.org/test/.htaccess stehen:

Options +FollowSymLinks  
RewriteEngine On  
  
RewriteCond %{HTTP_HOST} ^example.org$ [NC]  
RewriteRule ^(.*)$ http://www.example.org/test/$1 [L,R=301]  
  
RewriteCond %{REQUEST_FILENAME} !-f  
RewriteCond %{REQUEST_FILENAME} !-d  
RewriteRule ^(.*)$ http://www.example.org/test/index.php [L]

Mein Ziel ist einerseits die non-www auf www Umleitung, sowie anschließend schöne URLs.
Probleme ergaben sich zuerst damit, das die Website im Unterverzeichnis  "test" des Servers liegt. Diese habe ich glaube ich in den Griff bekommen. Nun habe ich aber ein Problem mit der Zahl der Parameter.

Zum Beispiel sollte eine URL so aussehen können:
http://www.example.org/test/
http://www.example.org/test/forum
http://www.example.org/test/forum/
http://www.example.org/test/forum/1
http://www.example.org/test/news/2010/09/10
http://www.example.org/test/list/99/abc/date/2/17/9

Alle diese URLs würde ich gerne auf http://www.example.org/test/index.php verlinken, wo sie dann per PHP und $_SERVER['REQUEST_URI'] ausgewertet werden sollen.

Nun schaffe ich es nur Links ohne einen weiteren Slash umzusetzen, aber keine weiteren. Welche Lösung gibt es dafür? Gibt es eventuell einen anderen Weg?

Grüße Zeddix

  1. Bin mit htaccess zwar nicht so 100% fit aber vielleicht hilfts Dir trotzdem.
    Ich verwende nen ISAPI Rewrite unter IIS und da sieht die RewriteRule so aus:

    RewriteRule  [1]*(?:.(?!(?:jpg|png|css|pdf)$)[-\w%.]*$)? /index.php?$1 [NS,I]

    Damit wird alles ausser Dateien mit den angegebenen Dateiendungen auf die index.php umgeleitet.

    Um zusätzlich noch alles auf www. zu legen müsste das vermutlich so aussehen:
    RewriteRule  [2]*(?:.(?!(?:jpg|png|css|pdf)$)[-\w%.]*$)? http://www.deineDomain.de/index.php?$1 [NS,I]

    Damit solltest Du eigentlich den Pfas als _GET-Parameter bekommen und musst ihn dann nurnoch auseinandernehmen und einzelnen Variablen/Array-Elementen zuordnen.

    Hoffe es hilft ein wenig.

    mfg
    Flann


    1. -\w/% ↩︎

    2. -\w/% ↩︎

    1. Danke für die Antwort Flanna,
      hab den Script sofort ausprobiert, hatte aber dann keine Zeit mehr zurückzuschreiben.
      Der Script erzeugt einen Error 500 - Internal server error. Ich bin mir ziemlich sicher, dass bei dem für die Organisation angemieteten Webspace kein ISAPI installiert ist. Was müsste man verändern um das gleiche mit mod_rewrite auf dem Apache zu erreichen?

      Danke Zeddix

      P.s: Ich werde mich mal versuchen über die Syntax Differenzen zwischen den Modulen schlau zu lesen.

      1. So, zur Vervollständigung.
        Ich habe mittlerweile den benötigten Scribt selbst schreiben können:

        Options +FollowSymLinks
        RewriteEngine On
        RewriteBase /

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

        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteCond %{REQUEST_FILENAME} !-l
        RewriteRule ^(.*)$ /test/index.php [QSA,L]

        DirectoryIndex index.php