Statische Inhalt mittels mod_rewrite - wie funzt das?

Dieses Thema im Forum 'PHP' wurde von erotexter.com gestartet, 13 Juli 2009.

  1. erotexter.com - Premium Member -

    Mitglied seit:
    6 Juli 2009
    Erstellte Beiträge:
    4.119
    Zustimmungen:
    10
    Ich habe mal eine Frage dazu, wie man aus dynamischen Inhalten mittels PHP eine statische .html-Datei generieren lassen kann ...

    Also, wenn ich viele Einträge in einer Datenbank habe und die auf mehreren Seiten mittels PHP ausgeben lasse, dann habe ich folgendes in der Adresszeile stehen: index.php?page=1, index.php?page=2, etc.

    Nun möchte ich das aber gern in statische .html-Dateien umwandeln lassen, so daß dort stattdessen steht: seite-1.html, seite-2.html, etc.

    Ich glaube, mich erinnern zu können, daß dies erstens möglich ist und zweitens mittels mod_rewrite, allerdings bin ich kein PHP-Experte, deshalb wollte ich mal hier fragen, ob mir jemand helfen kann, vielleicht einen guten Link posten, wo das erklärt wird, oder vielleicht den dafür notwendigen Eintrag in der .htaccess gleich hier posten, wenn er nicht zu lang ist.

    Vielen Dank schon mal für Eure Hilfe!
  2. Lemon - Royal Clan Member -

    Mitglied seit:
    11 Juli 2009
    Erstellte Beiträge:
    427
    Zustimmungen:
    16
    Ich habe festgestellt, daß viele PHP Programmierer kein Plan von mod-rewrite haben, obwohl sogar ich mod-rewrite halbwegs verstehe.

    Tipp:
    Index @ modrewrite.de
  3. DerDennis Neues Mitglied

    Mitglied seit:
    9 Juli 2009
    Erstellte Beiträge:
    38
    Zustimmungen:
    0
    Das ist recht einfach:

    RewriteEngine on
    RewriteRule ^seite-([0-9]+).html$ index.php?page=$1


    Viele Grüße,

    Dennis
  4. PornoDussel - Premium Member -

    Mitglied seit:
    12 Juli 2009
    Erstellte Beiträge:
    270
    Zustimmungen:
    4
    @ Hannibal

    Das es in der Regel auch im http-Header steht, das es sich um eine PHP Datei handelt ist die bewusst? Google und Co. richten sich nach den Daten im http-Header.


    Das liegt wohl vor allem daran, dass mode_rewrite ein Modul von Apache ist und daher nicht unbedingt was mit PHP zutun hat.


    Mit dieser Variante sollte man aber vorsichtig sein. Vorallem wenn auch echte html Dateien im Verzeichnis sind, kann das ganz schön Serverlast verursachen. Meist ist es besser zu prüfen ob die angefragte Datei existiert und wenn nicht auf die index.php leiten um hier dann die id rauszufischen.


    So in etwa:

    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
  5. erotexter.com - Premium Member -

    Mitglied seit:
    6 Juli 2009
    Erstellte Beiträge:
    4.119
    Zustimmungen:
    10
    Und wie ist das, wenn ich in der .htaccess "AddType application/x-httpd-php .php .html" stehen habe und die Datei(en) als .html speichere?

    Das habe ich jetzt nicht ganz kapiert ... Wenn ich den von Dir geposteten Code in die .htaccess schreibe, werden automatisch meine index.php?page1, index.php?page=2 usw. in seite-1.html, seite-2.html umgewandelt?

    Oder muß ich Deinen Code vor den von DerDennis setzen?
  6. PornoDussel - Premium Member -

    Mitglied seit:
    12 Juli 2009
    Erstellte Beiträge:
    270
    Zustimmungen:
    4
    Ich sag mal so: Googel ist es völlig egal, ob PHP oder nicht - würde mir daher an deiner Stelle deshalb keinen Kopf machen.

    Im http-Head steht die Zeile:

    X-Powered-By

    Wenn ich es richtig im Kopf habe, kann man das mit expose_php in der php.ini steuern

    expose_php = OFF

    schaltet es aus.


    Wenn Du die automatisch umwandeln willst, ist der Code von Dennis der Richtige. Der hat aber den Nachteil, dass bei jeder Anfrage ein regulärer Ausdruck geprüft wird. Wenn du viel Traffic auf ner Seite hast, kann das zu Problemen führen.

    Bei meiner Variante wird nur geprüft ob eine Datei existiert – das muss Apache sowieso bei jeder Anfrage machen. Es erzeugt also praktisch weder CPU-Last noch verbraucht es Speicher ( bzw. ist hier zu vernachlässigen)
  7. erotexter.com - Premium Member -

    Mitglied seit:
    6 Juli 2009
    Erstellte Beiträge:
    4.119
    Zustimmungen:
    10
    Also indiziert Goggel inzwischen auch .php-Dateien mit zusätzlichen Parametern ohne Murren, solange ich da keine ewig lange Zeichenkette dranhängen hab?
  8. PornoDussel - Premium Member -

    Mitglied seit:
    12 Juli 2009
    Erstellte Beiträge:
    270
    Zustimmungen:
    4
    Naja... das mit den Parametern hat nicht unbedingt was mit PHP zu tun. Am sinnvollsten ist es, ausdruckstarke Dateinamen zu haben.

    Also statt:

    index.php?p=5

    ist

    page-5.php

    besser. Aber wirklich gut wäre ein Wort, das beschreibt, um was es geht. Das ist besser für den Nutzer und besser für Google:

    sexseite.php

    Ich würde an deiner stelle zu jeden Datensatz ein passenden Begriff schreiben und dann statt via where Id=5 über den Begriff ( where pageName='sexseite' ) beim SELECT gehen.
  9. Globi - Premium Member -

    Mitglied seit:
    13 Juli 2009
    Erstellte Beiträge:
    3.629
    Zustimmungen:
    703
  10. DerDennis Neues Mitglied

    Mitglied seit:
    9 Juli 2009
    Erstellte Beiträge:
    38
    Zustimmungen:
    0
    Das stimmt so. Allerdings macht sich das erst bei ziemlich starken Trafficzahlen überhaupt bemerkbar, meiner meinung nach...
  11. PornoDussel - Premium Member -

    Mitglied seit:
    12 Juli 2009
    Erstellte Beiträge:
    270
    Zustimmungen:
    4
    Meiner Meinung nach sollte man immer möglichst stabilen, ressourcenschonenden Code schreiben. Ganz gleich wie hoch das Trafficaufkommen ist. Es sei denn du willst testen, wie viel Geduld der durchschnittliche Internetnutzer hat...
  12. ryker Neues Mitglied

    Mitglied seit:
    14 Juli 2009
    Erstellte Beiträge:
    56
    Zustimmungen:
    2
    Huhu,

    da kann ich nur bedingungslos zustimmen. Allein schon vor dem Hintergrund, dass man sich viel Ärger und ggf. Arbeit spart, wenn man es gleich "richtig" macht.

    Gruß
    Christian

Dieses Thema weiterempfehlen: