mod_rewrite Problem

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • mod_rewrite Problem

    Hi! Versuche mich gerade an einem mod_rewrite.

    Bis jetz ist es sehr simpel.
    Ich möchte von http:://localhost/cms/index.php?site=news zu http://localhost/cms/news.html.

    Hier mal die Ordnerstruktur:
    cms
    -.htaccess
    -index.php
    -news.php
    -blog.php

    Die .htacces:
    RewriteEngine On
    RewriteRule ^([^/]*)\.html$ /index.php?site=$1 [L]

    Die index.php

    Quellcode

    1. <html>
    2. <head><head>
    3. <body>
    4. <?php
    5. $site = $_GET['site'];
    6. if (!isset($site)) {
    7. $site = "news";
    8. }
    9. include $site . ".php";
    10. ?>
    11. <a href="news.html">News</a>
    12. <a href="blog.html">Blog</a>
    13. </body>
    14. </html>
    Alles anzeigen


    Die news.php bzw. die blog.php:

    Quellcode

    1. <?php
    2. echo "Ich bin die Newsdatei/Blogdatei!
    3. ?>


    Wenn ich http://localhost/cms/news.html aufrufe, öffnet sich die news.php nicht (bzw. ich werde zur xampp Startseite weitergeleitet);
    Ich benutze XAMPP auf WinXP.
    Der mod_rewrite war bei mir standartmäßig eingeschaltet (wenn man ihn so aktiviert, wie hier beschrieben: driefmeier.de/artikel/mod_rewrite-unter-xampp-aktivieren/).
  • Hast du mal geguckt, ob du überhaupt mod_rewrite besitzt? Bzw. dein Anbieter?
    Falls nicht, mach mal eine info Datei mit

    Quellcode

    1. <?php
    2. echo php_info();
    3. ?>


    Wenn du die Datei nun auf dem Webserver aufrufen, musst du im Abschnitt "apache", im dem Unterpunkt "Loaded Modules" nach "mod_rewrite" suchen. Falls nicht, wird es nicht unterstützt -> das Rätsel ist gelöst
    Ich würde dir im übrigen dazu raten, den Code sicherer zu machen, indem du nur vorhandene/erlaubte Seiten includierst, das könntest du mit einem Array welches diese Seiten als Inhalt besitzt ganz einfach prüfen.
    Ansonsten wenigstens so etwas:

    Quellcode

    1. <?php
    2. $site = trim($_GET['site']);
    3. if (!strlen($site)) {
    4. $site = "news";
    5. }
    6. if (!preg_match('#index#i', $site) && strlen($site) > 3) {
    7. include $site . ".php";
    8. }
    9. ?>