mod_rewrite mit htaccess Problem mit Unterordnern

  • Hallo,

    habe für meine Website mod_rewrite verwendet, stehe aber vor dem Problem, dass Unterordner falsch dargestellt werden.

    D.h.: Ich habe z.B. noch eine Website in einem Ordner laufen. Diese übernimmt allerdings das Stylesheet von Root/ , also dem Hauptverzeichnis, wo die eigentliche Website liegt.
    Meine .htaccess sieht wie folgt aus:

    PHP
    RewriteEngine On
    RewriteCond %{HTTP_HOST} !^www. [NC]
    RewriteCond %{HTTP_HOST} !^.*\..*\..* [NC]
    
    
    RewriteRule (.*) http://www.%{HTTP_HOST}/$1 [R=301,L]
    RewriteRule (.*),(.*).html$ /index.php?id=$1 [L]


    Eigentlich müsste man noch ein RewriteEngine Off schreiben, aber mit dem funktioniert die Website gar nicht mehr.

    Hoffe ihr kennt euch da etwas besser aus und könnt mit weiterhelfen!

    Danke.
    Eric

    Einmal editiert, zuletzt von Ericfischer (5. August 2011 um 13:13)

  • Du musst die Stylesheets mit absoluten pfaden einbinden, ist am besten zu erreichen wenn man eine konstante wie WEBROOT definiert und dann z.B: sowas schreibt:

    PHP
    <?php
    define("WEBROOT", "http://www.example.org/");
    ?>
    
    
    <style type="text/css" rel="stylesshet" href="<?php echo WEBROOT; ?>/styles/global.css">

    Der, der weiß dass er nichts weiß, weiß mehr als der, der nicht weiß, dass er nichts weiß.

    Wer nach etwas fragt, geht grundsätzlich das Risiko ein, es auch zu bekommen!

  • Ich glaube wir haben uns missverstanden.

    Wenn ich eine Website in einem Ordner habe, die auf "style.css" zeigt, aso relativ... diese befindet sich im gleichen Ordner, dann bindet er die Style CSS aus dem Root ein.

    test\index.html
    text\style.css
    \style.css

    index.html zeigt auf \style.css

    Ich möchte keine absoluten Pfade angeben. Die .htaccess ist falsch konfiguriert... da ist irgendwo ein Fehler, den ich nicht kenne.

  • Ich kanns zwar auch nicht ganz nachvollziehen, aber müsste die htaccess nicht so lauten:

    Apache Configuration
    RewriteEngine On
    RewriteCond %{HTTP_HOST} !^www. [NC]
    RewriteCond %{HTTP_HOST} !^.*..*..* [NC]
    RewriteRule (.*) http://www.%{HTTP_HOST}/$1 [R=301,L]
    RewriteCond %{HTTP_HOST} !^www. [NC]
    RewriteCond %{HTTP_HOST} !^.*..*..* [NC]
    RewriteRule (.*),(.*).html$ /index.php?id=$1 [L]

    Da eine RewriteCond immer nur für die 1. nachfolgende RewriteRule gilt - nicht für beliebig viele danach. Dadurch leitest Du momentan alle Aufrufe auf die index.php um. Enthalten die URLs wirklich ein ","? ("(.*),(.*)")

  • Vielen Dank.
    Mit deiner Korrektur scheint es jetzt zu funktionieren.

    Ja, ich habe die Seiten-ID vor ein Komma gesetzt. z.B.: /01,Herzlich-Willkommen.html

    Nochmal ein RewriteEngine Off benötige ich nicht?

  • An der funktionalität ändert das nichts. Wie das genau mit dem Server aussieht und ob der es lieber hätte wenn da noch RewriteEngine Off steht, kann ich dir nicht sagen.

    Der, der weiß dass er nichts weiß, weiß mehr als der, der nicht weiß, dass er nichts weiß.

    Wer nach etwas fragt, geht grundsätzlich das Risiko ein, es auch zu bekommen!

  • Ich nehme an, dass wenn man RewriteEngine Off am Ende schreibt, dass davor alle Angaben wieder "entfernt" werden.
    Zumindest war das jetzt beim Testen so.

    Danke nochmal für eure Antworten, jetzt gehts erstmal wieder richtig.