Momenteel ben ik een een website met een groot aantal pagina's aan het omzetten van frames naar dynamisch.
Het gaat om een grote hoeveelheid pagina's, dus wil ik het zo simpel mogelijk oplossen.
Ik heb het als volgt aangepakt
Het htaccess bestand heb ik voorzien van de volgende rewrite regel:
Daarmee zorg ik ervoor dat ik elke pagina die voorheen los in een frame werd ingeladen doorverwijst naar frame.php.
Dus een request www.mijndomein.nl/pietje.html haalt op de achtergrond zijn data op uit www.mijndomein.nl/frame.php?page=pietje.html
In frame.php heb ik de volgende code die vervolgens de opgevraagde pagina include()
Ik maak daar gebruik van een parser. http://simplehtmldom.sourceforge.net/
Hij leest eerst de gehele pagina pietje.html in en echoot vervolgens alleen wat er tussen de body tags staat.
Alles werkt in eerste instantie naar behoren zolang je allereerste bezoek langs www.mijndomein.nl/index.php is geweest
Van daaruit kun je alle linkjes prima doorklikken en laadt hij alles prima in.
Echter als ik een verse browser open en direct www.mijndomein.nl/pietje.html opvraag, dan krijg ik:
Fatal error: Call to a member function find() on a non-object in simple_html_dom.php on line 879
Ik kan dan alle linkjes afgaan, maar ik krijg elke keer dezelfde error, tenzij dat ik weer naar home (www.mijndomein.nl) klik en vandaar uit verder klik.
De allereerste request moet een keer langs de index.php in de root folder zijn geweest wil het dus werken.
Terwijl er in index.php geen objecten aangemaakt worden, dat gebeurd alleen in frame.php
Het gaat om een grote hoeveelheid pagina's, dus wil ik het zo simpel mogelijk oplossen.
Ik heb het als volgt aangepakt
Het htaccess bestand heb ik voorzien van de volgende rewrite regel:
code:
1
2
3
| Options +FollowSymlinks RewriteEngine on RewriteRule ^(.*)\.html$ frame.php?page=$1\.html [NC] |
Daarmee zorg ik ervoor dat ik elke pagina die voorheen los in een frame werd ingeladen doorverwijst naar frame.php.
Dus een request www.mijndomein.nl/pietje.html haalt op de achtergrond zijn data op uit www.mijndomein.nl/frame.php?page=pietje.html
In frame.php heb ik de volgende code die vervolgens de opgevraagde pagina include()
code:
1
2
3
4
5
6
7
8
| $file = basename($_GET['page']); if (file_exists($file)) { require_once("simple_html_dom.php"); $html = new simple_html_dom(); $html->load_file($_GET['page']); $e = $html->find("body",0); echo $e->innertext; } |
Ik maak daar gebruik van een parser. http://simplehtmldom.sourceforge.net/
Hij leest eerst de gehele pagina pietje.html in en echoot vervolgens alleen wat er tussen de body tags staat.
Alles werkt in eerste instantie naar behoren zolang je allereerste bezoek langs www.mijndomein.nl/index.php is geweest
Van daaruit kun je alle linkjes prima doorklikken en laadt hij alles prima in.
Echter als ik een verse browser open en direct www.mijndomein.nl/pietje.html opvraag, dan krijg ik:
Fatal error: Call to a member function find() on a non-object in simple_html_dom.php on line 879
Ik kan dan alle linkjes afgaan, maar ik krijg elke keer dezelfde error, tenzij dat ik weer naar home (www.mijndomein.nl) klik en vandaar uit verder klik.
De allereerste request moet een keer langs de index.php in de root folder zijn geweest wil het dus werken.
Terwijl er in index.php geen objecten aangemaakt worden, dat gebeurd alleen in frame.php
[ Voor 6% gewijzigd door kinderpindakaas op 16-07-2011 22:56 ]