mod_rewrite Hilfe bei Rewriterule

  • Guten Tag,
    ich versuche die URLs meines Projekts wie filgt umzuschreiben:

    Code
    ...fhdsfsfs.de/artikel/
    ...fhdsfsfs.de/modules/artikel/public/


    und

    Code
    ...fhdsfsfs.de/admin/artikel/
    ...fhdsfsfs.de/modules/artikel/private/


    So weit bin ich bisher mit meiner Rewrite Rule, komme aber gerade nicht weiter.

    Beim Aufruf von

    Code
    ...fhdsfsfs.de/artikel/


    bekomme ich richtigerweise die Datei:

    Code
    ...fhdsfsfs.de/modules/artikel/public/index.php

    Beim Aufruf von

    Code
    ...fhdsfsfs.de/artikel/index.php


    bekomme ich aber:

    Code
    [B]Internal Server Error[/B]
    
    
     The server encountered an internal error or misconfiguration and was unable to complete your request.
     Please contact the server administrator,  admin@localhost and inform them of the time the error occurred, and anything you might have done that may have caused the error.
     More information about this error may be available in the server error log.
     Additionally, a 500 Internal Server Error error was encountered while trying to use an ErrorDocument to handle the request.
      Apache/2.2.8 (Win32) DAV/2 mod_ssl/2.2.8 OpenSSL/0.9.8g mod_autoindex_color PHP/5.2.5 Server at localhost Port 80

    Falls wer Zeit und Lust hat... ich kann ein Paar Tips gebrauchen...

  • Zitat


    RewriteRule (.*) ./modules/$1/public/

    Bist du des Wahnsinns? Damit sprichst du ALLE Links deiner Seiten an :D
    Wenn du nun also ...http://fhdsfsfs.de/modules/artikel/public/index.php aufrufst, trifft die Regel, und er versucht nach

    Code
    ...fhdsfsfs.de/modules/artikel/index.php/public/index.php


    aufzurufen. Ich schätz mal, die Datei gibts bei dir nicht, wa ? ;)

    Du wirst dir also nen ne Struktur einfallen lassen müssen, auf die Richtigkeit des Links zu testen und nur den relevanten Teil rausschneiden.

    Gruß,
    Jojo


    Einmal editiert, zuletzt von jojo87 (17. November 2008 um 16:16)

  • Wenn du wirklich etwas komplexere Prüfungen durchführen möchtest, kannst du auch alles ( .* ) auf eine php-Datei umleiten und dort mit $_SERVER['REQUEST_URI'], $_SERVER['HTTP_HOST'] und $_SERVER['QUERY_STRING'] auf die Url zugreifen.
    In diesem Fall ginge es aber auch einfach so:
    RewriteRule ^artikel/(.*)$ modules/public/artikel/$1

  • Also das soll ja nicht nur für arktikel so sein. ;)
    (Ersetze "artikel" durch "modulname".)

    Aber ich will kein komplettes Routing über eine Datei, welche dann die entsprechenenden Sachen einbindet oder (noch schöner) dorthin weiterleitet.

    Ich will die Dateien in den Verzeichnissen /modulname/public bzw /modulname/private schon direkt aufrufen.

    Apache Configuration
    RewriteRule ^artikel/(.*)$ modules/public/artikel/$1


    Das wäre ja quasi das gleiche wie ein Alias in der Config vom Apache.
    (wobei die Verzeichnissstruktur nicht ganz so ist wie ichs meinte... :P)

    Komme ich denn so der Sache näher(?):

    Apache Configuration
    RewriteRule ^(.*)/(.*)$ modules/$1/public/$2


    (keine Zeit mehr das jetzt noch zu checken)