Zum Inhalt springen

[Tutorial] Statische Dokumente generieren

Erstellt am 23. Mai 2003 · 58 Antworten · letzte Antwort am 28. Dezember 2007 · Seite 1 von 3

Tags: Frage

Jörg Roth ·

Typo3 - Statische Seiten erstellen

Viele stehen oft vor dem Problem, statische Seite mit Typo3 zu generieren. Um direkt ein paar Mißverständnisse (besonders bei neuen Anwendern) aus dem Weg zu räumen:

Statische Seiten werden physisch als .html-Seiten auf dem Server geschrieben.

Dazu sind im Vorfeld einige Schritte notwendig, damit dieser Prozess ermöglicht wird. Unter anderem muss die Funktion "simulateStaticDocuments" eingeschaltet sein.

1. Bereiten wir den Webserver vor
Der Apache ist am weitesten verbreitet, daher bezieht sich alles darauf.

- Öffne die httpd.conf im Verzeichnis /apache/conf/ mit einem Texteditor
- Suche den Abschnitt "Dynamic Shared Objects (DSO)"
- Suche die Zeile "# LoadModule rewrite_module modules/mod_rewrite.so"
- Entferne das "#"
- Suche die Zeile "# AddModule mod_rewrite.c"
- Entferne das "#"
- Suche den Abschnitt "<Directory "I:/Apache/htdocs">"
- Suche die Zeile "AllowOverride None"
- Ändere die Zeile in "AllowOverride All"

Was bewirkt das?
Die ReWrite Engine des Apache wird aktiviert. Diese steuern wir später über eine .htaccess an. Damit der Apache diese Dateien überhaupt ausliest und entsprechend ausführt, muss "AllowOverride" auf "All" stehen. Bei "None" werden die Dateien komplett ignoriert. Dies muss man nicht unbedingt für das komplette Verzeichnis machen, man kann auch spezifisch eines angeben oder über virtuelle Hosts den Eintrag vornehmen.

Der Webserver muss neu gestartet werden (Dienst/Prozess), damit die Änderungen aktiv sind.

2. Erstellen der .htaccess
Die Datei findest Du im Root Deines Typo3-Verzeichnisses. Benenne sie in ".htaccess" um (den _ entfernen).

- Öffne die Datei in einem Texteditor
- Ersetze den Inhalt komplett mit folgendem:

RewriteEngine On
RewriteBase /typo3
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^typo3$ typo3/index_re.php
RewriteRule ^([0-9]+)[.]([0-9]+).html$ index.php?id=$1&type=$2

Was passiert da?
Einschalten der Engine, Basisverzeichnis in dem sich Typo3 befindet, exkludieren des Typo3-Verzeichnisses und die eigentliche Umwandlungsfunktion.
Diese löst die von Typo3 simulierten statischen Dateinamen (22.0.html) in die funktionierende Form auf (index.php?id=22). Der zweite Parameter ist für Frames interessant. Wenn Du den Alias der Seite verwenden möchtest (oder dies zusätzlich zum kryptischen Namen ergänzen willst), musst Du den regulären Ausdruck ändern. Hilfe dazu findest Du z.b. bei www.php.net.

3. Typo3 einstellen
Die Vorarbeit ist geleistet. Jetzt schalten wir die Funktion in Typo3 ein.

- Öffne die Datei "localconf.php" im Verzeichnis "/typo3conf" mit einem Texteditor
- Füge folgende Zeilen hinzu:

$TYPO3_CONF_VARS["FE"]["simulateStaticDocuments"] = "1";
$TYPO3_CONF_VARS["FE"]["publish_dir"] = './publish/';

Das kannst Du auch im Install-Tool unter "All configuration" vornehmen. Die entsprechenden Felder sind im letzten Drittel der Seite.

4. Abschließende Arbeit
Geh nun ins Root des Verzeichnisses und erstelle dort ein Unterverzeichnis "publish". In dieses werden die statischen Seiten dann geschrieben.

Generieren der statischen Seiten:
- Schalte das Admin-Panel für das Frontend ein, in dem Du im Template der Seite unter "Setup" folgende Zeile hinzu fügst:

page.config.admPanel=1

"page" musst Du ggf. durch Deine Variable ersetzen (ich verwende immer "seite") 😉

Das Admin-Panel erscheint dann auf der Webseite, sobald Du Dich im Backend angemeldet hast. Klicke jetzt auf das "+" und anschließend auf "Veröffentlichen". Abschließend auf die Schaltfläche "Jetzt veröffentlichen".

Die statische Seite findest Du jetzt im Verzeichnis "publish".

Hinweis:
Das Publizieren mehrerer Seiten auf einmal funktioniert bei mir nicht korrekt (+1 Ebene ja, +2 Ebenen nein). Probier es selber mal aus. Meistens kommt folgende Fehlermeldung:

Cannot instantiate non-existent class: tx_indexedsearch_indexer in i:apachehtdocs 3t 3libclass.t3lib_div.php on line 1826

Ich hoffe, diese kleine Einführung hilft einigen Leuten weiter. Wenn Du Vorschläge zur Verbesserung oder Kritik hast, lass es mich wissen.

Jörg

veynern ·

Das Publizieren mehrerer Seiten auf einmal funktioniert bei mir nicht korrekt

Weiß jemand, welche php-Methode man anfassen muss, um diese Funktion ans laufen zu bringen? Habe schon den Quellcode durchgraben, kann die aber nicht finden.
Über diese Funktion könnte man doch die komplette Seite in statische HTML-Seiten pushen oder? Und dann nur noch den document_root in das angegebene Verzeichnis legen und dann könnte jede Suchmaschine mit der Seite was anfangen.

matt ·

Hallo,

die Anleitung ist echt super. Leider bleibt eine Frage:

Wie kriege ich mein komplettes Web in den Ordner "publish"?

Status: Das Veröffentlichen von einer Seite funktioniert mittlerweile einwandfrei. Jedoch werden "nur" die HTML Seiten aber keine zu den Seiten gehörenden Images, Scripte, Stylesheets publiziert. Das heißt, wenn ich die publizierte Seite öffne, fehlt alles bis auf das pure HTML. Diese Art der Veröffentlichung bringt anscheinend nichts. Was ganz gut funktioniert, ist das Veröffentlichen in das eigentliche Typo-Root-Verzeichnis. So stimmen auch die relativen Links zu Bildern, Stylesheets, etc. Das ganze hat den unschönen Nebeneffekt, dass sich im Root-Verzeichnis ein Chaos bildet.

Weiß jemand, wie man also die Seite mit allen dazugehörigen Elemten in einen eigenen Ordner publizeirt, der dann sozusagen das statsiche Web enthält?

Jörg Roth ·

Typo3 verfügt noch nicht über ein LPE, in dem auch die Verknüpfungen entsprechend aktualisiert werden. Ich habe mir das Skript bereits mal angeschaut - mehr aber auch nicht. Es sollte nicht so schwierig sein, eine Pfadanpassung beim Veröffentlichen vorzunehmen.

Das mit den Skripten wird aber weiterhin ein Problem sein.

Die Daten relativ zum "Publish"-Dir doppelt vorzuhalten schmeckt mir auch nicht, ist aber im Moment die einzige Option - oder wie bereits von Dir erwähnt das Chaos im root 😉

matt ·

Danke für die schnelle Antwort. Welche Daten müßte ich denn überhaupt relativ zum "publish"-dir vorhalten. Wo sind denn Bilder, Stylesheets, etc. versteckt. Mir fällt da nur der Ordner "fileadmin" ein. Würde es also reichen, diesen Ordner doppelt zu halten, oder müßte ich schon das ganze Typo-Verzeichnis mitnehmen?

Mit Typo 4 wird alles besser 😃 ???!!!

cracky ·

hi ppl!

ich habe nur einen einfachen webhost mit 75mb, unix+apache - kann aber aus diesem grund auch keine apache config datei ändern 🙁

Die RewriteEngine kann ich jedoch ansprechen - von daher also eigentlich kein Problem oder?

Was ich jetzt aber auch nicht versteheh:

1.) wieso brauche ich den Ordner publish??? Wieso muss ich die Seite nüberhaupt erstellen? Das sollte doch passieren wenn der User die Seite aufruft, wieso muss ich sie generieren?
2.) Ist das derselbe Weg wie es typo3.com/org benutzt?

thx, heli

michael_art ·

Kann man eigentlich auch Unterordner für Menuepunkte anlegen lassen?

z.B.
www.irgentwas.de/index.html

www.irgentwas.de/willkommen/index.html

www.irgentwas.de/news/index.html
www.irgentwas.de/news/newsarchiv.html

???

Zed412 ·

Hy Matt,

das mit den Bildern und dgl. sollte kein Problem sein. Du kannst einfach einen Symlink zum fileadmin "runterlegen".
Ich habs gerade probiert - funktioniert einwandfrei.

Auf der Shell:
ln -s /var/www/typo3/fileadmin/ fileadmin

Mittels ln -s legst Du einen symbolic symlink an.
/var/www/typo3/fileadmin/ ist das Verzeichnis, wo Dein Ordner /fileadmin/ liegt
fileadmin ist der Name für den Symlink

Just my two cents

Zed

Zed412 ·

Hy Jörg,

first - tolle Anleitung, ist sehr gut gelungen!

Jörg Roth schrieb

Die Daten relativ zum "Publish"-Dir doppelt vorzuhalten schmeckt mir auch nicht, ist aber im Moment die einzige Option - oder wie bereits von Dir erwähnt das Chaos im root 😉

Mittels Symlink kannst Du einen /fileadmin/ Ordner simulieren.
Also auf der Shell durch:
ln -s /var/www/typo3/fileadmin/ fileadmin

Somit greifst Du immer wieder auf den einen fileadmin Ordner zu.
Ist doch "sauber" oder? 🙂

lg

Zed

Patric ·

also ich weiss ned..... bin ja nun nicht mehr so neu bei Typo aber ich steh vor einem Rätsel:

Ich hab das genau nach Anleitung so gemacht. Die Links stimmen auch, sie werden als .html Dateien übersetzt..
Aber der publish Ordner ist und bleibt leer, jedesmal wenn ich auf einen Link klicke muss ich mich anmelden, und alles ist sehr sehr lahm. (Die Seite läuft auf ner SUN Enterprise keine 5 Meter von mir entfernt)

hat mir da jemand ein Tipp? Danke 😃

TheMomo ·

ich bin nach der Anleitung vorgegangen und es scheint auch alles gut zu klappen, danke erstmal.

Jetzt habe ich aber eine Verständnisfrage. Die html-Seiten werden im Ordner publish abgelegt, wie aber rufe ich sie auf? Bekomme immer, dass die Seiten nicht existieren. Wo ist mein Denkfehler?

Jörg Roth ·

Online oder lokal? Bitte sicherstellen, dass das Verzeichnis './publish' auch Schreibrechte besitzt (CHMOD 755/777). Die Seiten werden ja gemäß der ID und des Typs benannt (123.0.html). Ohne Frames steht immer die 0 da.

dfluess ·

Mein Ordner publish bleibt auch leer!

warum?? (Rechte sind gesetzt...)
Ich find auch nicht, wo ich die Seiten Erstellen lassen soll...
Wozu das und dieser Ordner, wenn das trotzdem funktioniert?
DEF

TheMomo ·

also, der Ordner hat die richtigen Rechte, ich sehe die Seiten ja auch, die abgelegt werden im Ordner. Nur wenn ich sie im Browser aufrufen will, klappt das nicht. Wie ist denn da eigentlich die korrekte syntax (nicht schlagen bitte), kann sein, ich seh den Wald vor lauter Bäumen nicht. :o

TheMomo ·

also, der Ordner hat die richtigen Rechte, ich sehe die Seiten ja auch, die abgelegt werden im Ordner. Nur wenn ich sie im Browser aufrufen will, klappt das nicht. Wie ist denn da eigentlich die korrekte syntax (nicht schlagen bitte), kann sein, ich seh den Wald vor lauter Bäumen nicht.

TheMomo ·
Zed412 schrieb

Hy Matt,

das mit den Bildern und dgl. sollte kein Problem sein. Du kannst einfach einen Symlink zum fileadmin "runterlegen".
Ich habs gerade probiert - funktioniert einwandfrei.

Auf der Shell:
ln -s /var/www/typo3/fileadmin/ fileadmin

Mittels ln -s legst Du einen symbolic symlink an.
/var/www/typo3/fileadmin/ ist das Verzeichnis, wo Dein Ordner /fileadmin/ liegt
fileadmin ist der Name für den Symlink

Just my two cents

Zed

Kapiere ich nicht, der legt dann zwar einen Ordner fileadmin in publish ab, aber ws soll das bewirken? #paralyzed#
Bei mir bewirkt es leider nichts.

@Jörg

Jetzt klappt es mit den statischen Seiten, komisch, habe nix geändert. Jetzt stellt sich mir halt die gleiche Frage bezüglich der Bilder wie bereits meinen Vorgängern. Aber das mit dem Symlink leuchtet mir nicht so ganz ein. :o

wiki ·

Hallo zusammen!

Bevor ich jetzt alles verschrotte und die gute alte Schreibmaschine wieder raushole ... 😢

Ich möchte

  1. Mit Typo3 statische Seiten erstellen lassen (u.a. für die optimierte Erfassung durch Suchmaschinen)

  2. Mit Hilfe des Aliasnamens aussagekräftige Namen für HTML-Dateien generieren lassen (u.a. für eine aussagekräftige Statistik)

Dazu habe ich vieles, vieles gelesen

Also: alles brav gelesen und auch brav umgesetzt.

Und trotzdem funktioniert es nicht richtig; d.h. es werden einerseits keine html-Dateien erzeugt und dann (logischerweise) nicht angezeigt (Error 404).

Jetzt gibt's mindestens 2 Möglichkeiten:

  1. ich bin zu doof

  2. mit dem ReWrite von Apache ist es nicht so wie es soll

  3. (oder sonst noch was, worauf ich gar noch nicht gekommen bin)

Auf Apache kann ich bei meinem Provider nicht direkt zugreifen und deshalb die Datei httpd.conf verändern. Aber ich habe ich die Konfiguration des Apache-Servers kontrolliert - das ist der Output:

APACHE_INCLUDE no value
APACHE_TARGET no value
Apache Version Apache/1.3.27
Apache Release 10327100
Apache API Version 19990320
...
Loaded Modules: mod_auth_passthrough, mod_php4, mod_log_bytes, mod_bwlimited, mod_frontpage, mod_ssl, mod_setenvif, mod_so, mod_auth, mod_access, mod_rewrite, mod_alias, mod_userdir, mod_actions, mod_imap, mod_asis, mod_cgi, mod_dir, mod_autoindex, mod_include, mod_status, mod_negotiation, mod_mime, mod_log_config, mod_env, mod_bandwidth, http_core

So wie ich das interpretiere, ist der ReWrite-Modus eingeschaltet. Wie steht es mit dem "AllowOverride All", das Jürg Roth erwähnt? Wie kann ich feststellen, ob das so gesetzt ist?

Hat jemand von Euch Cracks einen Tipp, wo ich noch schrauben muss?

Vielen Dank!
wiki

fwh ·

Hallo,

die Anleitung von Jörg Roth war eine große Hilfe - vielen Dank !

Allerdings (keine Kritik!) hat sie mich auf eine falsche Fährte geführt, denn ich hatte daraus geschlossen, ich müsse nun jede Seite, die als .html erscheinen soll, vorher extra veröffentlichen. Ich hätte den Titel "Statische Dokumente generieren" mal wörtlich nehmen sollen (mein Fehler), denn ich wollte zunächst nur (wie wohl die meisten Leser), daß mir Typo3 suchmaschinenfreundliche Seiten erzeugt.
Wenn man nicht die Absicht hat z.B. ein Web als html irgendwo hin zu exportieren (bzw. aus anderen mir unbekannten Gründen), kann man Punkt 4 der Anleitung weglassen, auch wenn es für mich sehr informativ war das alles mal nachzuvollziehen (erstmal das Admin-Panel in Gang setzen etc.). Es erschien mir auch widersprüchlich mit statischen Seiten arbeiten zu müssen, wobei doch die Vorteile der dynamischen Generierung in Abhängigkeit von den Besucheraktionen (kontextsensitive Ausgabe nennt man das wohl) dann ja unter den Tisch fallen würden.
Also nochmals, dank der Anleitung von Jörg Punkt 1-3 funktioniert bei mir alles einwandfrei, aber den Ordner 'publish' habe ich wieder gelöscht als auch die publish-dir-Anweisung, da ich die ganze Sache mit den Veröffentlichungen derzeit nicht brauche. Möglicherweise muß ich später damit experimentieren, wenn ich auch die englischsprachigen Seiten indexieren lassen möchte (...?&L=1).

In Confixx habe ich eine Weiterleitung eingerichtet, so daß ich unmittelbar in den Typo3-Ordner verweise. Daher habe ich die RewriteBase-Anweisung in der .htaccess löschen können.
Desweiteren funktionierten einige Unterlinks nicht, z.B. die des erweiterten Kalenders oder der Grafik-Gallerien. Auch hier half ein Eingriff in die .htaccess, sodaß ich am Ende wieder bei der Ursprünglichen gelandet bin.

Was habe ich nun unter´m Strich gemacht, damit Typo3 (bzw. genaugenommen Apache) auf html endende URL´s ausgibt (SuSE 8.2+Confixx)?

1. /etc/httpd/httpd.conf [geändert] :

<Directory "/home/www">
    ...
    AllowOverride All
    ...
</Directory>

2. .../typo3conf/localconf.php [hinzugefügt] :

$TYPO3_CONF_VARS["FE"]["simulateStaticDocuments"] = "1";

3. _.htaccess -> .htaccess [umbenannt]

LoadModule rewrite_module modules/mod_rewrite.so
und
AddModule mod_rewrite.c
sind als Kernpunkt dieser Übung natürlich zu überprüfen, waren in meiner Apache-Grund-Konfiguration aber bereits aktiviert.

Viele Grüße
Detlev