Was ist neu?

Statische Inhalt mittels mod_rewrite - wie funzt das?

erotexter.com

- Premium Member -
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!
 

DerDennis

Neues Mitglied
Das ist recht einfach:

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


Viele Grüße,

Dennis
 

PornoDussel

- Premium Member -
@ 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.


Ich habe festgestellt, daß viele PHP Programmierer kein Plan von mod-rewrite haben, obwohl sogar ich mod-rewrite halbwegs verstehe.
Das liegt wohl vor allem daran, dass mode_rewrite ein Modul von Apache ist und daher nicht unbedingt was mit PHP zutun hat.


Das ist recht einfach:

RewriteEngine on
RewriteRule ^seite-([0-9]+).html$ index.php?page=$1
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]
 

erotexter.com

- Premium Member -
@ 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.
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?

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]
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?
 

PornoDussel

- Premium Member -
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)
 

erotexter.com

- Premium Member -
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.
Also indiziert Goggel inzwischen auch .php-Dateien mit zusätzlichen Parametern ohne Murren, solange ich da keine ewig lange Zeichenkette dranhängen hab?
 

PornoDussel

- Premium Member -
Also indiziert Goggel inzwischen auch .php-Dateien mit zusätzlichen Parametern ohne Murren, solange ich da keine ewig lange Zeichenkette dranhängen hab?
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.
 

DerDennis

Neues Mitglied
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.
Das stimmt so. Allerdings macht sich das erst bei ziemlich starken Trafficzahlen überhaupt bemerkbar, meiner meinung nach...
 

PornoDussel

- Premium Member -
Das stimmt so. Allerdings macht sich das erst bei ziemlich starken Trafficzahlen überhaupt bemerkbar, meiner meinung nach...
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...
 

ryker

Neues Mitglied
Huhu,

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...
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
 

Neue Themen

Oben