├── blog ├── caja-1.png ├── caja-2.png ├── wayback1.png ├── nl-menu-nl.png ├── NL-menu-pywb.png ├── ddrescue-cd3.png ├── index-from-fs.png ├── nlmenu-homepage.png ├── wayback-timestamps.png ├── Eerste-Nederlandse-webindex-gered-van-CD-ROM-IP.md ├── Eerste-Nederlandse-webindex-gered-van-CD-ROM.md ├── Resurrecting-the-first-Dutch-web-index-opf.md └── Crawling-offline-web-content-the-NL-menu-case.md ├── doc ├── img │ ├── varwwwroot.png │ ├── nl-menu-pywb.png │ ├── apache-default.png │ └── caja-permissions.png ├── wget-tries.md ├── serving-static-website-with-Apache.md ├── crawl-website-to-WARC.md ├── qa-archived-site.md ├── missingrefs.csv └── diffdir.txt ├── README.md ├── scripts ├── scrapesite.sh ├── checkmissingitems.sh └── fixhtml.sh ├── landingpage └── index.html └── LICENSE /blog/caja-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KBNLresearch/nl-menu-resources/master/blog/caja-1.png -------------------------------------------------------------------------------- /blog/caja-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KBNLresearch/nl-menu-resources/master/blog/caja-2.png -------------------------------------------------------------------------------- /blog/wayback1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KBNLresearch/nl-menu-resources/master/blog/wayback1.png -------------------------------------------------------------------------------- /blog/nl-menu-nl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KBNLresearch/nl-menu-resources/master/blog/nl-menu-nl.png -------------------------------------------------------------------------------- /blog/NL-menu-pywb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KBNLresearch/nl-menu-resources/master/blog/NL-menu-pywb.png -------------------------------------------------------------------------------- /blog/ddrescue-cd3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KBNLresearch/nl-menu-resources/master/blog/ddrescue-cd3.png -------------------------------------------------------------------------------- /blog/index-from-fs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KBNLresearch/nl-menu-resources/master/blog/index-from-fs.png -------------------------------------------------------------------------------- /doc/img/varwwwroot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KBNLresearch/nl-menu-resources/master/doc/img/varwwwroot.png -------------------------------------------------------------------------------- /blog/nlmenu-homepage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KBNLresearch/nl-menu-resources/master/blog/nlmenu-homepage.png -------------------------------------------------------------------------------- /doc/img/nl-menu-pywb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KBNLresearch/nl-menu-resources/master/doc/img/nl-menu-pywb.png -------------------------------------------------------------------------------- /blog/wayback-timestamps.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KBNLresearch/nl-menu-resources/master/blog/wayback-timestamps.png -------------------------------------------------------------------------------- /doc/img/apache-default.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KBNLresearch/nl-menu-resources/master/doc/img/apache-default.png -------------------------------------------------------------------------------- /doc/img/caja-permissions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KBNLresearch/nl-menu-resources/master/doc/img/caja-permissions.png -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Contents of this repo 2 | 3 | This repo contains various resources and documentation related to the *nl-menu* recovery efforts. 4 | 5 | 6 | * [**doc**](./doc): documentation 7 | * [**scripts**](./scripts): scripts 8 | 9 | -------------------------------------------------------------------------------- /scripts/scrapesite.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Dropped -k (= --convert-links) flag 4 | # Dropped --adjust-extension flag 5 | # Scape all files using --input-file option 6 | # Dropped --mirror option 7 | 8 | # First add domain root to prevent problems in pywb 9 | echo "http://www.nl-menu.nl/" > urls.txt 10 | 11 | # Add root of Dutch and English language pages 12 | echo "http://www.nl-menu.nl/nlmenu.nl/" >> urls.txt 13 | echo "http://www.nl-menu.nl/nlmenu.en/" >> urls.txt 14 | 15 | # Add remaining files (and rewrite file paths as URLs) 16 | find /var/www/www.nl-menu.nl -type f | sed -e 's/\/var\/www\//http:\/\//g' >> urls.txt 17 | 18 | # Run wget using list as input 19 | wget --page-requisites \ 20 | --warc-file="nl-menu" \ 21 | --warc-cdx \ 22 | --output-file="nl-menu.log" \ 23 | --input-file=urls.txt 24 | -------------------------------------------------------------------------------- /scripts/checkmissingitems.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Lookup references to missing items 4 | 5 | dirISO=/var/www/www.nl-menu.nl/ 6 | dirWget=/home/johan/NL-menu/warc-wget-fromrootdir/www.nl-menu.nl/ 7 | filterString="Only in "$dirISO 8 | difFile="diffdir.txt" 9 | cdxFile="nl-menu.cdx" 10 | 11 | # Do difff on both dirs and filter files that are only in /var/www/ 12 | diff --brief -r $dirISO $dirWget | grep "$filterString" > $difFile 13 | 14 | # Iterate over difFile 15 | 16 | echo "fileName","countRef","countCdx" 17 | 18 | while read line; do 19 | # dir name 20 | tmp1="$(cut -d':' -f1 <<<"$line")" 21 | tmp2="$(cut -d' ' -f3 <<<"$tmp1")" 22 | dirName=${tmp2#$dirISO} 23 | # File name 24 | tmp3="$(cut -d':' -f2 <<<"$line")" 25 | fName=${tmp3#" "} 26 | # File name with file path 27 | fNamePath=$dirName/$fName 28 | #echo $fNamePath 29 | # Count number of references to file name + path 30 | refCount=$(grep -r -F $fNamePath $dirISO | wc -l) 31 | # Count number of references to file name + path in CDX 32 | cdxCount=$(grep -F $fNamePath $cdxFile | wc -l) 33 | echo $fNamePath,$refCount,$cdxCount 34 | done <$difFile 35 | -------------------------------------------------------------------------------- /scripts/fixhtml.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # This script modifies all HTML files that are part of the nl-menu site 4 | # to make it work when hosted on a new location. The script: 5 | # 6 | # 1. Sets the permissions of the whole tree to 644 7 | # 2. Fixes relative links 8 | # 3. Fixes Javascript redirects 9 | 10 | # Location on file system 11 | rootDir=/home/johan/NL-menu/nl-menu-kbresearch 12 | 13 | # Base directory on web server 14 | baseDir=/nl-menu/nl-menu 15 | 16 | # Old and new root domain (used for updating redirects) 17 | rootDomainOld=http://www.nl-menu.nl 18 | rootDomainNew=http://www.kbresearch.nl 19 | 20 | while IFS= read -d $'\0' -r file ; do 21 | # Rewrite relative links 22 | sed -i "s|/nlmenu.nl|$baseDir/nlmenu.nl|g" $file 23 | sed -i "s|/nlmenu.en|$baseDir/nlmenu.en|g" $file 24 | 25 | # Update references to original nl-menu domain (fixes JavaScript redirects to old domain) 26 | sed -i "s|$rootDomainOld|$rootDomainNew|g" $file 27 | done < <(find $rootDir -type f -regex '.*\.\(html\|shtml\)' -print0) 28 | 29 | # Copy index.html from nlmenu.nl dir to root dir 30 | cp $rootDir/nlmenu.nl/index.html $rootDir/index.html 31 | 32 | # Set permissions on directories to 755; files to 644 33 | find $rootDir -type d -exec chmod 755 {} \; 34 | find $rootDir -type f -exec chmod 644 {} \; 35 | -------------------------------------------------------------------------------- /landingpage/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | NL-menu resurrected 7 | 8 | 9 | 10 |
11 |

NL-menu resurrected

12 |

This is a reconstructed snapshot of NL-menu, which was the first Dutch web index. This snapshot was recovered from a CD-ROM with the contents of NL-menu, which was created shortly before the site closed down in early 2004.

13 | Go to NL-menu 14 |

Known issues

15 | 20 |

See also the blog: Resurrecting the first Dutch web index: NL-menu revisited

21 | Go to NL-menu 22 |

© 2018 KB | National Library of the Netherlands with help from Jekyll Bootstrap 23 | and Twitter Bootstrap

24 |
25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /blog/Eerste-Nederlandse-webindex-gered-van-CD-ROM-IP.md: -------------------------------------------------------------------------------- 1 | % Eerste Nederlandse webindex gered van CD-ROM 2 | % Johan van der Knijff 3 | 4 | Hoe zag het Nederlandse web er vóór 2004 uit? Welke websites waren toen populair? Welke van die sites zijn intussen verdwenen, en welke bestaan nog steeds? Net als de meeste andere nationale bibliotheken heeft de Koninklijke Bibliotheek (KB) een webarchief, waarin de belangrijkste websites van Nederland periodiek worden gearchiveerd. Omdat de KB pas in 2007 is begonnen met webarchivering, is het webarchief nu maar beperkt bruikbaar voor het beantwoorden van vragen over de vroege geschiedenis van het Nederlandse web. 5 | 6 | ## Webarcheologie 7 | 8 | Daarom is de KB recent begonnen met activiteiten op het gebied van *webarcheologie*. Van inmiddels verdwenen websites zijn soms nog offline informatiedragers te achterhalen, zoals CD-ROMs, harde schijven of floppy's. Met de informatie op deze dragers kunnen zulke sites dan gereconstrueerd worden, waarna we ze alsnog kunnen opnemen in het webarchief. 9 | 10 | ## NL-menu 11 | 12 | Een mooi voorbeeld hiervan is *NL-menu*. *NL-menu* was de eerste Nederlandse webindex, en werd in 1992 opgericht door SURFnet, universiteiten en de KB. Vanaf midden jaren '90 werd de site door de KB beheerd. In 2004 trok de KB de stekker uit *NL-menu*, waarna de site in vergetelheid is geraakt. 13 | 14 | ## Reconstructie van NL-menu 15 | 16 | Kort voor het einde in 2004, hebben de toenmalige beheerders de inhoud van *NL-menu* op drie afzonderlijke CD-ROMs gebrand. Hiermee hebben we geprobeerd een reconstructie te maken van de site zoals deze er in 2004 uitzag. 17 | 18 | De eerste stap hierbij was het uitlezen van de CD-ROMs. In eerste instantie leverden *alle* schijfjes hierbij leesfouten op. Geen verrassing, want zelfgebrande CD-ROMs zijn erg vergankelijk. Met speciale datarecoverysoftware lukte het de data van één CD-ROM volledig te redden. De resterende schijfjes (beide overigens goeddeels identiek aan de nog leesbare CD-ROM) waren dermate ver heen, dat ze voor ons doel niet meer bruikbaar waren. Door de geredde data uit te serveren met een webserver konden we een lokaal werkende reconstructie van de site maken. Hier hebben we vervolgens een "web crawler" computerprogramma op losgelaten, dat alle onderdelen die deel uitmaken van de site doorloopt, en deze wegschrijft in een vorm die kan worden ingelezen in het webarchief. 19 | 20 | ![](nlmenu-homepage.png) 21 | *Homepage van NL-menu* 22 | 23 | ## Unieke bron 24 | 25 | Met deze geslaagde reddingspoging is *NL-menu* veiliggesteld, en hebben (web)historici ook in de toekomst toegang tot deze unieke bron van informatie over de (relatief) vroege geschiedenis van het Nederlandse web. 26 | 27 | ## Meer informatie 28 | 29 | Meer informatie over de reddingspoging van *NL-menu* is te vinden in onderstaande blogposts: 30 | 31 | - Resurrecting the first Dutch web index: NL-menu revisited. Link: 32 | 33 | - Crawling offline web content: the NL-menu case. Link: 34 | 35 | Omdat het webarchief alleen toegankelijk is vanuit de leeszalen van de KB, hebben we ook een publiek toegankelijke versie van het gereconstrueerde *NL-menu* gemaakt: 36 | 37 | 38 | -------------------------------------------------------------------------------- /doc/wget-tries.md: -------------------------------------------------------------------------------- 1 | # Wget tries 2 | 3 | ## Attempt 1: mirror from Dutch homepage 4 | 5 | wget --mirror \ 6 | --page-requisites \ 7 | --warc-file="nl-menu" \ 8 | --warc-cdx \ 9 | --output-file="nl-menu.log" \ 10 | http://www.nl-menu.nl/nlmenu.nl/nlmenu.shtml 11 | 12 | Result: various files missing. 13 | 14 | ## Attempt 2: mirror from site root 15 | 16 | wget --mirror \ 17 | --page-requisites \ 18 | --warc-file="nl-menu" \ 19 | --warc-cdx \ 20 | --output-file="nl-menu.log" \ 21 | http://www.nl-menu.nl 22 | 23 | Result: same as attempt 1. 24 | 25 | ## Attempt 3: use --input-file with list of all URLs 26 | 27 | find /var/www/www.nl-menu.nl -type f | sed -e 's/\/var\/www\//http:\/\//g' > urls.txt 28 | 29 | wget --mirror \ 30 | --page-requisites \ 31 | --warc-file="nl-menu" \ 32 | --warc-cdx \ 33 | --output-file="nl-menu.log" \ 34 | --input-file=urls.txt 35 | 36 | Result: wget still busy after 45 minutes; looks like it is doing a recursive crawl for each single URL in the list. Terminated. 37 | 38 | ## Attempt 4: use --input-file with list of all URLs, but don't use --mirror 39 | 40 | find /var/www/www.nl-menu.nl -type f | sed -e 's/\/var\/www\//http:\/\//g' > urls.txt 41 | 42 | wget --page-requisites \ 43 | --warc-file="nl-menu" \ 44 | --warc-cdx \ 45 | --output-file="nl-menu.log" \ 46 | --input-file=urls.txt 47 | 48 | Result: all files that are part of ISO \are crawled, but when WARC is accessed in pywb is made up of 85864 individual captures. 49 | 50 | ## Attempt 5: create HTML file with hyperlinks to all URLS and use that as crawl root 51 | 52 | Create list of URLS; add "\<" and "\>" pre-and suffix to each line: 53 | 54 | find /var/www/www.nl-menu.nl -type f | sed -e 's/\/var\/www\//\n/g' > urls.txt 55 | 56 | Replace any whitespace characters with *%20* to avoid malformed URLs: 57 | 58 | sed -i 's/\ /%20/g' urls.txt 59 | 60 | Convert URL list to HTML which is placed at the root directory of the site: 61 | 62 | sudo pandoc -s urls.txt -o /var/www/www.nl-menu.nl/urls.html 63 | 64 | Run wget, using the above URL list as crawl root: 65 | 66 | wget --mirror \ 67 | --page-requisites \ 68 | --warc-file="nl-menu" \ 69 | --warc-cdx \ 70 | --output-file="nl-menu.log" \ 71 | http://www.nl-menu.nl/urls.html 72 | 73 | Result: 74 | 75 | Number of files scraped by wget (from dir tree created by wget): 76 | 77 | find /home/johan/NL-menu/warc-wget-fakecrawlroot/www.nl-menu.nl -type f | wc -l 78 | 79 | Result: 80 | 81 | 85655 82 | 83 | Number of files scraped by wget (from cdx file, counting lines with substring " 200 ", which should identify all sucessfully scraped files): 84 | 85 | grep " 200 " nl-menu.cdx | wc -l 86 | 87 | Result: 88 | 89 | 85657 90 | 91 | File count ISO image: 85644. 92 | 93 | Diff between directories: 94 | 95 | diff --brief -r /var/www/www.nl-menu.nl /home/johan/NL-menu/warc-wget-fakecrawlroot/www.nl-menu.nl/ | grep "Only in /var/www/" > diffdir.txt 96 | 97 | Result: 98 | 99 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: Copy of kbsurfnet_logo.gif 100 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: Copy of kbsurfnet_logo.gif 101 | 102 | -------------------------------------------------------------------------------- /blog/Eerste-Nederlandse-webindex-gered-van-CD-ROM.md: -------------------------------------------------------------------------------- 1 | % Eerste Nederlandse webindex gered van CD-ROM 2 | 3 | 4 | De website *NL-menu* was de eerste Nederlandse webindex. De site is in 1992 opgericht op initiatief van [SURFnet](https://en.wikipedia.org/wiki/SURFnet), de Nederlandse universiteiten en de KB. Vanaf midden jaren '90 werd de site volledig door de KB beheerd. In 2004 [stopte de KB met *NL-menu*](https://www.robcoers.nl/nl-menu-is-straks-niet-meer-leve-nl-menu/), waarna de site offline is gehaald. In 2006 is de domeinnaam *nl-menu.nl* verkocht aan een bedrijf dat de naam gebruikte voor een eigen webindex, die deels was gebaseerd op de oorspronkelijke *NL-menu* site. 5 | 6 | Het oorspronkelijke *NL-menu* is intussen in de vergetelheid geraakt. In het webarchief van het [Internet Archive](https://archive.org/) zijn nog wel behoorlijk wat [snapshots van *NL-menu* terug te vinden](https://web.archive.org/web/*/www.nl-menu.nl), maar deze zijn onvolledig, en bovendien niet representatief voor hoe de site er in werkelijkheid uitzag. Zo is [deze pagina](https://web.archive.org/web/20020603232609/http://www.nl-menu.nl:80/nlmenu.nl/fset/gz.html) een snapshot uit juni 2002: 7 | 8 | ![](wayback1.png) 9 | 10 | Linksboven is een [*Bing*](https://en.wikipedia.org/wiki/Bing_(search_engine)) zoekvenster te zien, maar omdat *Bing* pas in 2009 is opgericht kan de site er in 2002 onmogelijk uitgezien hebben zoals deze snapshot. De discrepantie is het gevolg van de manier waarop Internet Archive websites binnenhaalt en weergeeft. In dit geval is de pagina in 2002 niet volledig binnengehaald. Enkele ontbrekende elementen (o.a. de linker en rechter menuframes) zijn vervolgens pas 10 jaar later binnengehaald. De weergave van in Internet Archive is hierdoor een soort amalgaam van de pagina op verschillende tijdstippen, die nog maar weinig zegt over hoe de pagina er in werkelijkheid uitzag. 11 | 12 | Omdat de KB pas in 2007 is begonnen met webarchivering, is *NL-menu* ook niet te vinden in het [KB Webarchief](https://www.kb.nl/bronnen-zoekwijzers/databanken-mede-gemaakt-door-de-kb/webarchief-kb). Wel zijn er, kort voordat *NL-menu* in 2004 offline werd gehaald, drie CD-ROMs gebrand met daarop de inhoud van de site. 13 | 14 | *NL-menu* is van historisch belang, omdat het een unieke bron van informatie is over de (relatief) vroege geschiedenis van het Nederlandse web. We hebben daarom geprobeerd een reconstructie te maken van de site zoals deze er in het begin van 2004 bij lag. Het belangrijkste doel hiervan was om de site met terugwerkende kracht in het webarchief te kunnen opnemen. 15 | 16 | ## Uitlezen van de CD-ROMs 17 | 18 | De eerste stap hierbij was het uitlezen van de data van de CD-ROMs. Een probleem hierbij is dat (zelfgebrande) CD-ROMs bijzonder vergankelijk zijn. Het was dan ook geen verrassing dat *alle* schijfjes in eerste instantie leesfouten opleverden! Hierop hebben we een geprobeerd de schijfjes uit te lezen met een gespecialiseerde data-recovery tool ([*ddrescue*](https://www.gnu.org/software/ddrescue/)). Hiermee lukte het ons om de data van één van de CD-ROMs volledig te redden. Hiervoor was het wel nodig om *ddrescue* meerdere opeenvolgende keren te draaien, met in totaal vier verschillende CD-drives. De overige twee CD-ROMs bleken in een dermate slechte staat te zijn, dat ze voor een reconstructie van *NL-menu* niet meer te gebruiken waren. 19 | 20 | 21 | ## Reconstructie van de website 22 | 23 | De uitleesstap leverde een [ISO-image](https://nl.wikipedia.org/wiki/ISO_(bestandsindeling)) op dat een mappenstructuur bevat met alle bestanden van de *NL-menu* site. Voor een reconstructie van de site zoals deze er oorspronkelijk uitzag is nog een extra stap nodig, waarbij de bestanden uitgeleverd worden met een [webserver](https://nl.wikipedia.org/wiki/Webserver). Hiervoor hebben we lokaal op een computer de [Apache webserver](https://nl.wikipedia.org/wiki/Apache_(webserver)) geïnstalleeerd, en een configuratie aangemaakt voor de *NL-menu* mappenstructuur. Resultaat hiervan is een lokaal werkende versie van de site, die geschikt is voor opname in het KB webarchief. Als illustratie is hier de Engelstalige homepage: 24 | 25 | ![](nlmenu-english.png) 26 | 27 | ## Publiek toegankelijke versie 28 | 29 | Omdat het webarchief alleen toegankelijk is vanuit de leeszalen van de KB, hebben we er in dit geval voor gekozen om de gereconstrueerde versie van *NL-menu* ook beschikbaar te stellen vanaf de KB Onderzoekswebsite. Hierbij hebben we wel enkele kleine aanpassingen moeten doen op de originele bestanden. Het gaat hierbij voornamelijk om het updaten van (relatieve en absolute) interne links. 30 | 31 | Het resultaat is vanaf de volgende link toegankelijk: 32 | 33 | 34 | 35 | Een paar kleine dingen om op te letten bij het bekijken van de site: 36 | 37 | - Links naar categorieën die sub-categorieën bevatten werken niet goed in Firefox. Workaround: gebruik de rechtermuisknop en open de subcategorie in een nieuwe tab (of zet JavaScript uit). In Chrome/Chromium werken deze links wel. 38 | - Formulieren werken niet vanwege het ontbreken van de daaraan gekoppelde CGI scripts (deze zijn destijds niet op de CD-ROM gezet). 39 | - Op de een aantal pagina's is de URL *http://www.kbresearch.nl* te zien, in plaats van de originele *http://www.nl-menu.nl* URL. Dit is een bij-effect van het script dat is gebruikt voor het aanpassen van interne links. 40 | 41 | ## Meer informatie 42 | 43 | Op de website van de *Open Preservation Foundation* is een (Engelstalige) blogpost met meer gedetailleerde informatie over de reddingspoging van *NL-menu*: 44 | 45 | - [Resurrecting the first Dutch web index: NL-menu revisited](http://openpreservation.org/blog/2018/04/24/resurrecting-the-first-dutch-web-index-nl-menu-revisited/) 46 | 47 | Meer informatie over webarchivering op de KB: 48 | 49 | - [How can we improve our web collection? An evaluation of webarchiving at the KB National Library of the Netherlands (2007-2017)](https://zenodo.org/record/881109) 50 | 51 | 52 | -------------------------------------------------------------------------------- /doc/serving-static-website-with-Apache.md: -------------------------------------------------------------------------------- 1 | # Serving a static website with the Apache web server 2 | 3 | ## Scope 4 | 5 | These notes cover the very basics of: 6 | 7 | - how to set up the Apache web server 8 | - how to restrict access to localhost 9 | - how to install a site (for example from a static CD-ROM dump) 10 | - how to crawl the site so it can be ingested into a web archive 11 | - how to test the resulting WARC 12 | 13 | These notes are based on Apache/2.4.18 on a Linux-based system. They only cover static HTML-based sites. Serving dynamic sites also requires an additional application server and a database (i.e. a full [*LAMP stack*](https://en.wikipedia.org/wiki/LAMP_(software_bundle))). 14 | 15 | **!!Important!!** use these notes at your own risk! I'm not an expert on neither web server nor Apache, and these are primarily for my own reference! 16 | 17 | ## Installation of Apache web server 18 | 19 | First update the package index: 20 | 21 | sudo apt-get update 22 | 23 | Then install Apache: 24 | 25 | sudo apt-get install apache2 26 | 27 | Configuration directory is `/etc/apache2`. Note that the server starts running directly after installation. 28 | 29 | ## Restrict access to localhost 30 | 31 | Running a web server can expose your machine to a number of security threats, so it's a good idea to restrict access to localhost only (this means that only the machine on which the server is running can access it). To do this, locate the file *ports.conf* in the *Apache* configuration directory (`/etc/apache2`), open it in a text editor (as sudo), and then change this line: 32 | 33 | Listen 80 34 | 35 | into this: 36 | 37 | Listen 127.0.0.1:80 38 | 39 | Save the *ports.conf* file, and restart the web server using: 40 | 41 | sudo systemctl restart apache2 42 | 43 | ## Check if the server is running 44 | 45 | Type the following command: 46 | 47 | sudo systemctl status apache2 48 | 49 | Output should be something like this: 50 | 51 | ● apache2.service - LSB: Apache2 web server 52 | Loaded: loaded (/etc/init.d/apache2; bad; vendor preset: enabled) 53 | Drop-In: /lib/systemd/system/apache2.service.d 54 | └─apache2-systemd.conf 55 | Active: active (running) since Tue 2018-04-10 12:40:29 CEST; 3min 21s ago 56 | Docs: man:systemd-sysv-generator(8) 57 | Process: 7756 ExecStop=/etc/init.d/apache2 stop (code=exited, status=0/SUCCESS) 58 | Process: 5731 ExecReload=/etc/init.d/apache2 reload (code=exited, status=0/SUCCESS) 59 | Process: 7779 ExecStart=/etc/init.d/apache2 start (code=exited, status=0/SUCCESS) 60 | CGroup: /system.slice/apache2.service 61 | ├─7796 /usr/sbin/apache2 -k start 62 | ├─7799 /usr/sbin/apache2 -k start 63 | └─7800 /usr/sbin/apache2 -k start 64 | 65 | Apr 10 12:40:28 johan-HP-ProBook-640-G1 systemd[1]: Starting LSB: Apache2 web server... 66 | Apr 10 12:40:28 johan-HP-ProBook-640-G1 apache2[7779]: * Starting Apache httpd web server apache2 67 | Apr 10 12:40:28 johan-HP-ProBook-640-G1 apache2[7779]: AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message 68 | Apr 10 12:40:29 johan-HP-ProBook-640-G1 apache2[7779]: * 69 | Apr 10 12:40:29 johan-HP-ProBook-640-G1 systemd[1]: Started LSB: Apache2 web server. 70 | 71 | Finally open below URL in your web browser: 72 | 73 | 74 | 75 | If all goes well this should load the Apache default page: 76 | 77 | ![](./img/apache-default.png) 78 | 79 | 80 | ## Adding a site 81 | 82 | Adding a site involves the following steps: 83 | 84 | 1. Put the site contents somewhere on the file system (by default in a subdirectory of folder `/var/www`, although any directory can be used). 85 | 2. Create a configuration file under `/etc/apache2/sites-available` 86 | 3. Activate the configuration file 87 | 4. Add original domain to hosts file 88 | 5. Restart the server. 89 | 90 | ### 1. Put site contents on the file system 91 | 92 | Create a root directory for your site under `/var/www` (you need sudo rights for this). For example, in below screenshot `var/www` contains 4 different sites: 93 | 94 | ![](./img/varwwwroot.png) 95 | 96 | Next copy the contents of your site into this directory. Make sure to check the file permissions for the top-level folders; for all users (Others), *Folder Access* must be set to *Access Files*. Apply these permissions to all underlying (enclosed) files as well. In the Caja file manager (Ubuntu / Linux Mint MATE desktop) this looks as follows: 97 | 98 | ![](./img/caja-permissions.png) 99 | 100 | You can also set the permissions from the terminal, using the following commands: 101 | 102 | sudo find www.nl-menu.nl -type d -exec chmod 755 {} \; 103 | sudo find www.nl-menu.nl -type f -exec chmod 644 {} \; 104 | 105 | ### 2. Create a configuration file 106 | 107 | Next you need to create a configuration file for the site `/etc/apache2/sites-available`. The easiest way to do this is to copy an existing file (typically the default *000-default.conf*), and save it under a new name (e.g. *nl-menu.conf*). Note that you need sudo priviliges for this. Then open the newly created file in a text editor (again as sudo), and edit the value of the *DocumentRoot* variable, which must point to the root directory of your site. For example, if our site is located at `/var/www/www.nl-menu.nl` use this: 108 | 109 | DocumentRoot /var/www/www.nl-menu.nl 110 | 111 | Then save the file. 112 | 113 | ### 3. Activate the configuration file 114 | 115 | First disable the current configuration (in this case 8000-default.conf*): 116 | 117 | sudo a2dissite 000-default.conf 118 | 119 | Now enable the new one: 120 | 121 | sudo a2ensite nl-menu.conf 122 | 123 | ### 4. Add original domain to hosts file 124 | 125 | Open (with sudo priviliges) file `/etc/hosts` in a text editor, and add a line that associates the IP address at which the site is locally available to its original URL. For example: 126 | 127 | 127.0.0.1 www.nl-menu.nl 128 | 129 | Then save the file. 130 | 131 | ### 5. Restart the server 132 | 133 | Type this: 134 | 135 | sudo systemctl restart apache2 136 | 137 | All done! The newly installed site is now available at the original URL in your web browser: 138 | 139 | (which should redirect to ) 140 | 141 | ## Additional resources 142 | 143 | * [Apache HTTP Server Documentation](https://httpd.apache.org/docs/) 144 | * [How To Install the Apache Web Server on Ubuntu 16.04](https://www.digitalocean.com/community/tutorials/how-to-install-the-apache-web-server-on-ubuntu-16-04) 145 | * [Make apache only accessible via 127.0.0.1](https://serverfault.com/questions/276963/make-apache-only-accessible-via-127-0-0-1-is-this-possible/276968#276968) -------------------------------------------------------------------------------- /doc/crawl-website-to-WARC.md: -------------------------------------------------------------------------------- 1 | # Crawl website to WARC 2 | 3 | ## Scope 4 | 5 | These notes describe: 6 | 7 | - how to crawl a website that is hosted on localhost to a WARC file 8 | - how to test the resulting WARC 9 | 10 | These notes only cover static HTML-based sites, and not dynamic sites that depend on a full [*LAMP stack*](https://en.wikipedia.org/wiki/LAMP_(software_bundle))). 11 | 12 | ## Earlier work 13 | 14 | These notes build on [earlier documentation by Jeroen van Luin of the National Archives of the Netherlands](http://docplayer.nl/17762647-Ervaringen-met-website-archivering-in-het-nationaal-archief.html). This document lists two methods for crawling from localhost: 15 | 16 | 1. Crawl using [Heritrix](https://github.com/internetarchive/heritrix3) 17 | 2. Crawl using [Wget](https://www.gnu.org/software/wget/) 18 | 19 | Initial tests with Heritrix (build heritrix-3.3.0-20180529.100446-105) resulted in several problems. Most importantly, Heritrix appeared to ignore the *hosts* file, with the effect that it would (elements of) the "live" site at the crawl domain, instead of localhost. After disabling network access, crawl jobs would run indefinitely without ever downloading any actual data. Because of this I gave up on Heritrix, and focused mostly on Wget. I also did some limited tests with [Warcit](https://github.com/webrecorder/warcit) tool, which is a relatively new tool that is part of the [Webrecorder](https://github.com/webrecorder) suite. 20 | 21 | ## Preparation: change machine system date, disable network connection 22 | 23 | In most cases it will be desirable that the site snapshot will appear in the Wayback timeline around the year/date it was actually online. This can be achieved by setting the computer's system date to that date. This has to be done before running wget. Below is an example: 24 | 25 | sudo date --set="2004-01-23 21:03:09.000" 26 | 27 | Also, to completely rule out anything from the "live" web leaking into the crawl, it may be prudent to disable the network connection at this point (both wired and wireless connections!). 28 | 29 | ## Wget: basic command 30 | 31 | The basic command line for crawling the site (hosted locally at URL `http://www.nl-menu.nl/`) is[^1]: 32 | 33 | wget --mirror \ 34 | --page-requisites \ 35 | --adjust-extension \ 36 | --warc-file="nl-menu" \ 37 | --warc-cdx \ 38 | --output-file="nl-menu.log" \ 39 | http://www.nl-menu.nl/ 40 | 41 | This results in a WARC file, a CDX index file (useful for subsequent quality checks), a log file and a mirror of the crawled directory tree (which again is useful for quality checks). 42 | 43 | This results in a 200 MB compressed WARC file, which can be rendered in [pywb](https://github.com/webrecorder/pywb). However, a [detailed analysis shows that over 660 files from the source directory tree are missing in the crawl](./qa-archived-site.md). For most of these (90%), the explanation for their absence is that they are not referenced (by way of a hyperlink) by any of the website resources that are crawled from the site root. Of the remaining 64 missing files, 51 are only referenced through a JavaScript variable (which are understandably not recognised by wget). Other, less common reasons are: 44 | 45 | - File is only referenced as *value* attribute of an *input* element: 46 | - File is only referenced frame *src* attribute of a *frame* element 47 | 48 | So, I tried adapt the basic command above to get a more complete capture. 49 | 50 | ## Wget: use --input-file switch 51 | 52 | Wget's `--input-file` switch takes a list of URLs which are sequentially crawled. In theory this would allow one to force the inclusion of all files in the crawl. The first step here is to create a directory listing of the source directory of the website, and then transform each file entry into a corresponding URL. I did this using the command below: 53 | 54 | find /var/www/www.nl-menu.nl -type f \ 55 | | sed -e 's/\/var\/www\//http:\/\//g' > urls.txt 56 | 57 | I then ran wget with the command below (note that I removed the `--mirror` option, as this caused wget to do a recursive crawl *for each single URL* in the list, which takes forever): 58 | 59 | wget --page-requisites \ 60 | --warc-file="nl-menu" \ 61 | --warc-cdx \ 62 | --output-file="nl-menu.log" \ 63 | --input-file=urls.txt 64 | 65 | This results in a WARC file that contains *all* files from the source directory. But it does introduce a different problem: when the WARC is accessed using pywb, it shows up as 85864 individual captures (i.e. each file appears to be treated as an individual capture)! This makes rendering of the WARC impossible (loading the list of capture alone takes forever to begin with). 66 | 67 | After getting in touch with pywb author Ilya Kreymer about this, Ilya pointed out pywb's behaviour in this case is triggered by the fact there is no exact match for the root URL `http://www.nl-menu.nl`. This causes pywb to do a prefix query which in this case results in 80k URLs. This can be avoided by explicitly adding the domain root to the URL list: 68 | 69 | echo "http://www.nl-menu.nl/" > urls.txt 70 | 71 | Incidentally we also need to add entries for the roots of the Dutch and English language home pages: 72 | 73 | echo "http://www.nl-menu.nl/nlmenu.nl/" >> urls.txt 74 | echo "http://www.nl-menu.nl/nlmenu.en/" >> urls.txt 75 | 76 | Then we can add the remaining files (and rewrite file paths as URLs) 77 | 78 | find /var/www/www.nl-menu.nl -type f | sed -e 's/\/var\/www\//http:\/\//g' >> urls.txt 79 | 80 | Finally run wget: 81 | 82 | wget --page-requisites \ 83 | --warc-file="nl-menu" \ 84 | --warc-cdx \ 85 | --output-file="nl-menu.log" \ 86 | --input-file=urls.txt 87 | 88 | This results in a WARC that is both complete *and* renders in pywb! 89 | 90 | 91 | 92 | ### Quality checks 93 | 94 | Number of crawled files: 95 | 96 | find ./www.nl-menu.nl/ -type f | wc -l 97 | 98 | Result: 99 | 100 | 85647 101 | 102 | No. of files in source tree is 85644; crawled tree adds 1 index.html at the domain root + 2 icon files. So this is OK. 103 | 104 | From CDX: 105 | 106 | grep " 200 " nl-menu.cdx | wc -l 107 | 108 | Result: 109 | 110 | 85649 111 | 112 | This adds 2 more entries for the roots of the Dutch and English language home pages (`http://www.nl-menu.nl/nlmenu.nl/` and `http://www.nl-menu.nl/nlmenu.en/`). 113 | 114 | Double-check on missing files: 115 | 116 | diff --brief -r /var/www/www.nl-menu.nl /home/johan/NL-menu/wget-i-addindex/www.nl-menu.nl/ | grep "Only in /var/www/" > diffdir.txt 117 | 118 | Which is empty, so all is well! 119 | 120 | ## Warcit 121 | 122 | warcit http://www.nl-menu.nl/ /var/www/www.nl-menu.nl/ -d 20040123200500 123 | 124 | Result: 125 | 126 | [INFO] Wrote 85646 resources to www.nl-menu.nl.warc.gz 127 | 128 | Opening the WARC in pywb again results in 80K captures. However, if we copy the index.html from `var/www/www.nl-menu.nl/nlmenu.nl/` to the domain root before running warcit, this produces a single-capture WARC that renders in pywb (although oddly it is over 60 MB smaller than the WARC that is generated by wget!). 129 | 130 | ## Rendering the archived site locally 131 | 132 | Install [pywb](https://github.com/webrecorder/pywb): 133 | 134 | sudo python3 -m pip install pywb 135 | 136 | Set up test directory: 137 | 138 | mkdir test-pywb 139 | cd test-pywb 140 | 141 | Create archive: 142 | 143 | wb-manager init my-web-archive 144 | 145 | Add NL-menu WARC: 146 | 147 | wb-manager add my-web-archive /home/johan/NL-menu/warc-wget/nl-menu.warc.gz 148 | 149 | Start the server: 150 | 151 | wayback 152 | 153 | Archived site is now available from: 154 | 155 | 156 | 157 | Result: 158 | 159 | ![](./img/nl-menu-pywb.png) 160 | 161 | Which appears to work fine! 162 | 163 | A more or less elaborate [Quality assessment of the archived site can be found here](./qa-archived-site.md) 164 | 165 | ## Additional resources 166 | 167 | - Jeroen van Luin: [Ervaringen met website-archivering in het Nationaal Archief](http://docplayer.nl/17762647-Ervaringen-met-website-archivering-in-het-nationaal-archief.html) 168 | 169 | [^1]: Compared with van Luin's example, this leaves out the *-w* switch (since we are crawling from a local machine, overloading the host server is not an issue, so we can crawl at maximum speed), the *-k* switch (converting the links is not necessary for rendering the site) and the *-E* switch (I don't think changing any extensions is really necessary or desired in this case, but I could be wrong?). It also adds the *--warc-cdx* command (which writes an index file) and the *--output-file* switch (which writes a log file) 170 | -------------------------------------------------------------------------------- /blog/Resurrecting-the-first-Dutch-web-index-opf.md: -------------------------------------------------------------------------------- 1 | % Resurrecting the first Dutch web index: NL-menu revisited 2 | 3 | *NL-menu* was the first Dutch web index. The site was originally founded by a consortium of [SURFnet](https://en.wikipedia.org/wiki/SURFnet), Dutch universities and the KB. From the mid-nineties onwards it was maintained solely by the KB. *NL-menu* was [discontinued in 2004](https://www.robcoers.nl/nl-menu-is-straks-niet-meer-leve-nl-menu/), after which the site was taken offline. In 2006 the domain name was sold to a private company that used it for hosting a web index that was partially based on the original *NL-menu* site. 4 | 5 | Meanwile, the original *NL-menu* has been largely lost to the mists of time. Even though the Internet Archive's Wayback Machine contains [rather a lot of snapshots of the site](https://web.archive.org/web/*/www.nl-menu.nl), these are incomplete, and don't capture the original look and feel. For example, [this page](https://web.archive.org/web/20020603232609/http://www.nl-menu.nl:80/nlmenu.nl/fset/gz.html) is a snapshot from June 2002: 6 | 7 | ![](http://openpreservation.org/wp-content/uploads/2018/04/wayback1.png) 8 | 9 | However, this doesn't look even remotely like the site as it was in 2002. Just for one thing, at the top-left we see a [*Bing*](https://en.wikipedia.org/wiki/Bing_(search_engine)) search box, but *Bing* didn't even exist until 2009! An inspection of the crawl time stamps (these can be seen by clicking on the top-right *About this capture* button) reveals that this "snapshot" is really an amalgam of elements that were crawled at wildly varying dates, some as recently as 2018: 10 | 11 | ![](http://openpreservation.org/wp-content/uploads/2018/04/wayback-timestamps.png) 12 | 13 | *NL-menu* is not part of the [KB Web Archive](https://www.kb.nl/en/organisation/research-expertise/long-term-usability-of-digital-resources/web-archiving), as the KB only started its web archiving activities in 2007. The only remaining "complete" copies of *NL-menu* are three (recordable) CD-ROMs that were burned shortly before the site was taken offline in 2004. 14 | 15 | As *NL-menu* is a unique source of information about the (relatively) early history of the Dutch Internet, we made an attempt at reconstructing the site as it appeared in early 2004. This involved the following steps: 16 | 17 | 1. Recover the data from the remaining CD-ROMs 18 | 2. Set up a local copy of the site by serving the recovered data om a webserver 19 | 3. Crawl the recovered site for inclusion in our web archive 20 | 21 | The remainder of this blog describes how we went about the first two steps. 22 | 23 | ## Recovering the data 24 | 25 | A first attempt at viewing the contents of the CD-ROMs in a file manager resulted in read errors for *all* discs. This is not surprising, given the instability of CD-Rs, and the fact these discs were burned in early 2004. So, we tried to recover the contents of the discs with the dedicated data-recovery tool [*ddrescue*](https://www.gnu.org/software/ddrescue/). We used the following command line: 26 | 27 | ddrescue -d -b 2048 -r4 -v /dev/sr0 NL-menu-ddrescue.iso NL-menu-ddrescue.log 28 | 29 | Here *-d* tells *ddrescue* to read the disc using direct disc access mode, *-b* sets the block size (which is 2048 bytes for a CD-ROM); *-r4* sets the maximum number of retries in case of bad sectors to 4, and *-v* activates verbose output mode. File *NL-menu-ddrescue.iso* is the image file with the recovered data; *NL-menu-ddrescue.log* is a so-called [*mapfile*](https://www.gnu.org/software/ddrescue/manual/ddrescue_manual.html#Mapfile-structure), which holds information on the recovery status of blocks of data. 30 | 31 | One of the advantages of *ddrescue* is that it can be run multiple consecutive times for each disc, using different optical drives if necessary. This is extremely useful, as it is not uncommon to find that some sectors on a disc result in read errors on one drive, whereas those sectors are read without problems by another drive (and vice versa). 32 | 33 | ## Results of recovery process 34 | 35 | Out of the three CD-ROMs, only one copy could be fully recovered without any unreadable sectors. The recovery process required multiple passes with *ddrescue*, using two computers and four different optical drives (two internal drives, and two external USB drives). 36 | 37 | Only half of the second disc could be recovered after a 16-hour recovery pass with *ddrescue*. An inspection of the resulting ISO image in a hex editor showed the recovered sectors of this disc to be byte-identical to the first disc (which was recovered in full). Having established this, we didn't do any further attempts at recovering more data from this disc (since it is simply a copy of the first disc). 38 | 39 | For the third disc, 99.8% of the data could be recovered after four rounds with *ddrescue* with four optical drives. Below image shows a visualisation of the recovery process (made with [*ddrescueview*](https://sourceforge.net/projects/ddrescueview/)): 40 | 41 | ![](http://openpreservation.org/wp-content/uploads/2018/04/ddrescue-cd3.png) 42 | 43 | Here, each block respresents one 2048-byte sector, where a red block is a sector with read errors. In this case 468 sectors spread across the disc are unreadable. This means that any files or folder definitions that occupy any of those sectors will be damaged. The resulting ISO image turned out to be readable, but one of the top-level directories (which contains half of the files on the disc) is not shown when the image is mounted or opened in an archive manager. So, we discarded this ISO image from any further processing as well. Unfortunately this disc did *not* turn out to be merely a copy of the first disc. 44 | 45 | 46 | ## Inspecting the contents of the ISO image 47 | 48 | After mounting the ISO image of the first disc (i.e. the one that was recovered without errors) on a Linux machine, the following directory structure appears: 49 | 50 | ![](http://openpreservation.org/wp-content/uploads/2018/04/caja-1.png) 51 | 52 | The *nlmenu.nl* directory contains the Dutch-language version of the site, and *nlmenu.en* the English-language version (oddly, there's no top-level index page!). Here are the contents of the *nlmenu.nl* directory: 53 | 54 | ![](http://openpreservation.org/wp-content/uploads/2018/04/caja-2.png) 55 | 56 | If we open *index.html* in a browser (Firefox) we see this: 57 | 58 | ![](http://openpreservation.org/wp-content/uploads/2018/04/index-from-fs.png) 59 | 60 | We can see here that several images are not rendered; also none of the (internal) hyperlinks work. This happens because all file paths in the underlying HTML are defined relative to the site's root directory, and these don't resolve properly on the local file system. In order to render the site correctly we have to serve it from a locally installed web server. 61 | 62 | ## Serving the CD-ROM contents with a web server 63 | 64 | So, we installed the [*Apache web* server](https://en.wikipedia.org/wiki/Apache_HTTP_Server) on a Linux machine, and then configured it to serve the unpacked contents of the ISO image. More details on how we did this can be found in [these technical notes](https://github.com/KBNLresearch/nl-menu-resources/blob/master/doc/serving-static-website-with-Apache.md). Configuring the *hosts* file (as explained in the technical notes) allowed us to render the site on [localhost](https://en.wikipedia.org/wiki/Localhost) from its original URL: 65 | 66 | ![](http://openpreservation.org/wp-content/uploads/2018/04/nl-menu-nl.png) 67 | 68 | We could crawl the resurrected site with Heritrix for inclusion in our web archive, but before doing this a number of authenticity-related issues need to be sorted out first. For one thing, we need to record metadata that makes it absolutely clear that our archival snapshot was taken from a locally reconstructed copy, rather than the original site. Also, it's not completely straightfoward how the archiving date should be defined (is this 2004 ore 2018?). We'd be very interested to hear how other web archives are dealing with these issues. 69 | 70 | ## Publicly available version of the recovered site 71 | 72 | The KB web archive is only accessible on-site in our reading rooms. Since the KB owns the rights to *NL-menu*, we decided to make the reconstructed site available on the KB Research website. In order to make this work, we applied a couple of small changes to the original files: 73 | 74 | * Relative references to website resources were re-written to reflect the location of the site on the kbresearch domain. 75 | * All references to the original *nl-menu.nl* domain were updated to the *kbrearch.nl* domain (most importantly this prevents JavaScript-triggered redirects to the original live *nl-menu.nl* domain). 76 | * The Dutch index page was copied to the site root, so that it's used as a top-level index (this was done because the CD-ROM has no top-level index page). 77 | 78 | The above changes were all made using this [script](https://github.com/KBNLresearch/nl-menu-resources/blob/master/scripts/fixhtml.sh). 79 | 80 | The result of all this is available here: 81 | 82 | 83 | 84 | This reflects the state of *NL-menu* briefly before it closed down in 2004. 85 | 86 | Although at first glance the reconstructed site appears to be of much better quality than any of the available Wayback snaphots, there are a couple of caveats: 87 | 88 | - Links to categories that contain sub categories don't work in Firefox. A workaround is to right-click on the link and open it in a new tab (or disable JavaScript). In Chrome/Chromium these links work normally. 89 | - The site contains a number of forms that don't work because the associated CGI scripts are missing (these scripts are not on the CD-ROM). 90 | - Some pages show the URL *http://www.kbresearch.nl*, instead of the original *http://www.nl-menu.nl*. This is an unintended side-effect of the script that was used to update the links. 91 | 92 | There may be more issues; please feel free to contact us if you spot anything that doesn't look quite right! 93 | 94 | ## Acknowledgements 95 | 96 | Thanks are due to the folllowing people for their advice and suggestions: Annemarie Beunen, Willem Jan Faber, Kees Teszelszky, and Lammert Zwaagstra. 97 | 98 | ## Additional resources 99 | 100 | * [NL-menu (2004 snapshot at kbresearch.nl)](http://www.kbresearch.nl/nl-menu/nl-menu/) 101 | * [Serving a static website with the Apache web server (technical notes)](https://github.com/KBNLresearch/nl-menu-resources/blob/master/doc/serving-static-website-with-Apache.md) 102 | * [How can we improve our web collection? An evaluation of web archiving at the KB National Library of the Netherlands (2007-2017)](https://zenodo.org/record/881109) 103 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "[]" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright [yyyy] [name of copyright owner] 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. 202 | -------------------------------------------------------------------------------- /doc/qa-archived-site.md: -------------------------------------------------------------------------------- 1 | # Quality assessment of archived site 2 | 3 | This document describes various tests that were done to assess the quality of the NL-menu capture (i.e. the WARC generated by wget, as descibed [here](./crawl-website-to-WARC.md)). 4 | 5 | ## Validate the WARC 6 | 7 | Using [warctools](https://github.com/internetarchive/warctools)' *warcvalid* tool: 8 | 9 | warcvalid nl-menu.warc.gz 10 | 11 | This doesn't result in any errors. 12 | 13 | ## Compare number of files in archive against ISO image 14 | 15 | Number of files in (extracted) ISO image: 16 | 17 | find /var/www/www.nl-menu.nl -type f | wc -l 18 | 19 | Result: 20 | 21 | 85644 22 | 23 | Number of files scraped by wget (from dir tree created by wget): 24 | 25 | find /home/johan/NL-menu/warc-wget-noextensionadjust/www.nl-menu.nl -type f | wc -l 26 | 27 | Result: 28 | 29 | 84976 30 | 31 | Number of files scraped by wget (from cdx file, counting lines with substring " 200 ", which should identify all sucessfully scraped files): 32 | 33 | grep " 200 " nl-menu.cdx | wc -l 34 | 35 | Result: 36 | 37 | 84976 38 | 39 | Which (as expected) is identical to the count from the fs. Difference with respect to ISO image: 668 files. These files are part of the ISO, but they weren't scraped by wget. 40 | 41 | Detailed comparison: 42 | 43 | diff --brief -r /var/www/www.nl-menu.nl /home/johan/NL-menu/warc-wget-noextensionadjust/www.nl-menu.nl/ | grep "Only in /var/www/" > diffdir.txt 44 | 45 | Result [here](./diffdir.txt). In particular, the following items are missing in the wget crawled version[^2]: 46 | 47 | - 499 .gif files 48 | - 83 .html files 49 | - 36 .txt files 50 | 51 | Not entirely clear why this happens, could be orphaned resources that are not referenced by the site. 52 | 53 | ## Search for references to missing files in html 54 | 55 | One possible explanation for the missing files is that they are not referenced by any of the html files (or, to be more precise, the html files that are discovered by wget by crawling from the root document). 56 | 57 | As a first attempt to test this, we can search for references to the names of the missing files inside the html. For instance, using the *grep* tool this is how we can count all references to "1580.html": 58 | 59 | grep -r -F "1580.html" /var/www/www.nl-menu.nl/ | wc -l 60 | 61 | This returns 110 references, whereas: 62 | 63 | grep -r -F "frameset_zoekresultaten.html" /var/www/www.nl-menu.nl/ | wc -l 64 | 65 | returns 0. 66 | 67 | The following script does this for the names[^3] of *all* missing files: 68 | 69 | [checkmissingitems.sh](../scripts/checkmissingitems.sh) 70 | 71 | Result [here](./missingrefs.csv). 72 | 73 | From the results we see that 573 (90 %) of all missing file names have 0 references . This also explains why they were not discovered by wget: these files are simply not used by any of the content that results from crawling from the root document. For the remaining 64 files one of the following things happen: 74 | 75 | - `nlmenu.nl/admin/nr-sects.txt`: several html files reference the name of this file in a comment (so it makes sense that the file itself is not included in the crawl) 76 | - `nlmenu.en/resources/alfabet_provincies.html`: referenced in `nlmenu.en/fset/provincie.html`, but this file is missing by itself! 77 | - `nlmenu.nl/admin/opdracht_verzonden.html`: referenced in `nlmenu.nl/admin/mailing.html` in the *value* attribute of an *input* tag: 78 | 79 | `` 80 | 81 | So it seems wget doesn't parse input tags. 82 | 83 | - `nlmenu.nl/images/alfabet_a.gif`: referenced in various files (e.g. `nlmenu.en/resources/old/alfabet_sites.html`) as an argument of of JavaScript function: 84 | 85 | `` 86 | 87 | So this doesn't appear to be picked up by weget as a dependency either (totally there are 51 gif files in the same directory, which are all not included in the crawl for the same reason). 88 | 89 | - `nlmenu.nl/images/gastenboek2.gif`: referenced in various html files under directories `nlmenu.en/admin/gastenboek/`and `nlmenu.nl/admin/gastenboek/`. But neither of these directories (nor their content) is present in the (wget) archived version. The NL-menu homepage also doesn't appear to link to any guestbook feature, so this might be an orphaned section of the site (there are 2 more gifs here that are part of the guestbook). 90 | 91 | - `nlmenu.nl/images/pijlbeneden.gif`: referenced by 222 html files (e.g. `nlmenu.en/sections/315/361/361.html`) as a JavaScript variable: 92 | 93 | `var expandedWidget = "/nlmenu.nl/images/pijlbeneden.gif"` 94 | 95 | - `nlmenu.nl/resources/marge.html`: referenced in 6 html files (amongst which `nlmenu.nl/fset/admin.html`) within a frame definition: 96 | 97 | `` 98 | 99 | **Question**: does wget even handle frames? How? 100 | 101 | ## Pages/resources that are not available in Pywb 102 | 103 | All of the following pages don't work, and give error "The url http://www.nl-menu.nl/nlmenu.nl/fset/ could not be found in this collection": 104 | 105 | ### "aanmelden" / "wijzigen" from home page, right-hand menu: 106 | 107 | 108 | 109 | Having arrived on this page, the other links at the right hand menu (FAQ, colofon, etc) don't work either! But behaviour seems to depend on previous page we arrived from. Very strange. 110 | 111 | On "live" site, going here: 112 | 113 | 114 | 115 | Redirects to: 116 | 117 | 118 | 119 | This doesn't happen in the archived site! The resource is present in the WARC though: 120 | 121 | warcdump NL-menu.warc.gz > NL-menu-dump.txt 122 | grep "http://www.nl-menu.nl/nlmenu.nl/admin/aanmeldform.html" NL-menu-dump.txt 123 | 124 | Result: 125 | 126 | WARC-Target-URI: 127 | WARC-Target-URI:http://www.nl-menu.nl/nlmenu.nl/admin/aanmeldform.html 128 | 129 | Looking at the source of the page, there's this: 130 | 131 | 143 | 144 | So, the JavaScript re-opens the page within a frame set. So perhaps the problem occurs because the JavaScript fails to run in the archived version? Possibly related to this: pywb actually uses JavaScript to render each archived page inside an iframe. For example, "view source" on the archived homepage produces this (which is *not* the NL-menu source!) : 145 | 146 | 147 | 148 | 149 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 |
170 | 171 |
172 | 179 | 180 | 181 | 182 | Also tried: disable JavaScript in browser on "live" site: page is still displayed! 183 | 184 | BUT: if I am on one of the category pages, e.g.: 185 | 186 | 187 | 188 | and then click on "aanmelden" (right-hand menu), the page loads normaly, *even though the URL is identical*!! Again, opening the URL in a new tab still produces the error. 189 | 190 | 191 | Open : works on "live" site, fails on archived site. 192 | 193 | 194 | ### "digitalisering" (NL homepage, bottom-left under "Nieuwe rubrieken"): 195 | 196 | 197 | 198 | Same as above (JavaScript). 199 | 200 | ## 201 | 202 | ## Info on origin of files in WARC in metadata 203 | 204 | The WARC was crawled from a locally reconstructed version of the site and not from the live web. This is something that should somehow be recorded in metadata. Using the *warcdump* tool from [warctools](https://github.com/internetarchive/warctools): 205 | 206 | warcdump NL-menu.warc.gz > NL-menu-dump.txt 207 | 208 | Example record: 209 | 210 | archive record at NL-menu.warc.gz:778658 211 | Headers: 212 | WARC-Type:request 213 | WARC-Target-URI: 214 | Content-Type:application/http;msgtype=request 215 | WARC-Date:2004-01-23T20:04:06Z 216 | WARC-Record-ID: 217 | WARC-IP-Address:127.0.0.1 218 | WARC-Warcinfo-ID: 219 | WARC-Block-Digest:sha1:23FDBRG7W5PPQHPA7TZOJCFNFEV76X55 220 | Content-Length:230 221 | Content Headers: 222 | Content-Type : application/http;msgtype=request 223 | Content-Length : 230 224 | Content: 225 | GET /nlmenu\x2Enl/new/home\x2Ehtml HTTP/1\x2E1\xD\xAReferer\x3A http\x3A//www\x2Enl\x2Dmenu\x2Enl/nlmenu\x2Enl/resources/linkermenu\x2Ehtml\xD\xAUser\x2DAgent\x3A Wget/1\x2E19 \x28linux\x2Dgnu\x29\xD\xAAccept\x3A \x2A/\x2A\xD\xAAccept\x2DEncoding\x3A identity\xD\xAHost\x3A www\x2Enl\x2Dmenu\x2Enl\xD\xAConnection\x3A Keep\x2DAlive\xD\xA\xD\xA 226 | ... 227 | Note this line: 228 | 229 | WARC-IP-Address:127.0.0.1 230 | 231 | The field *WARC-IP-Address* is defined in the [WARC specification](https://iipc.github.io/warc-specifications/specifications/warc-format/warc-1.1/#warc-ip-address) as: 232 | 233 | > The WARC-IP-Address is the numeric Internet address contacted to retrieve any included content. An IPv4 address shall be written as a “dotted quad”; an IPv6 address shall be written as specified in [RFC4291]. For a HTTP retrieval, this will be the IP address used at retrieval time corresponding to the hostname in the record’s target-Uri. 234 | 235 | In this case, from the value 127.0.0.1 (=localhost) we can see that the files inside the warc originate from a local copy. 236 | 237 | [^2]: The total number of items in the diff file is 637; expected number is 668! No idea why. 238 | 239 | [^3]: Actually: names including the file paths, relative to the site root (e.g. *nlmenu.nl/images/alfabet_dgeo.gif*). Omitting the file path results in false positives, because the NL-menu directory tree contains many identically-named files that are in different directories. -------------------------------------------------------------------------------- /blog/Crawling-offline-web-content-the-NL-menu-case.md: -------------------------------------------------------------------------------- 1 | % Crawling offline web content: the NL-menu case 2 | 3 | In a [previous blog post](http://openpreservation.org/blog/2018/04/24/resurrecting-the-first-dutch-web-index-nl-menu-revisited/) I showed how we resurrected *NL-menu*, the first Dutch web index. It explains how we recovered the site's data from an old CD-ROM, and how we subsequently created a local copy of the site by [serving the CD-ROM's contents on the *Apache* web server](https://github.com/KBNLresearch/nl-menu-resources/blob/master/doc/serving-static-website-with-Apache.md). This follow-up post covers the final step: crawling the resurrected site to a [WARC](https://en.wikipedia.org/wiki/Web_ARChive) file that can be ingested into our web archive. 4 | 5 | ## Previous work 6 | 7 | A [2016 report by Jeroen van Luin](https://kia.pleio.nl/file/download/55806143/Report%20on%20web-archiving%20in%20the%20Dutch%20National%20Archives.pdf) documents the web archiving workflows that are used by the National Archives of the Netherlands. Interestingly, it also covers the archiving of websites that are no longer online from local copies. Since this is similar to our *NL-menu* case, I took this as a starting point. The report mentions two general workflows for crawling from localhost: 8 | 9 | 1. One based on the [*Heritrix*](https://github.com/internetarchive/heritrix3) crawler. 10 | 2. Another one that uses the [*wget*](https://www.gnu.org/software/wget/) tool. 11 | 12 | ## Preparation: change machine system date, disable network connection 13 | 14 | In most cases it will be desirable that the site snapshot will appear in the Wayback timeline around the year/date it was actually online. This can be achieved by setting the computer's system date to that date. This has to be done before running the crawl. In the case of *NL-menu* I used the "last modified" time stamp of the files on the CD-ROM filesystem as an approximation. On a Linux-based system the following command will do the trick: 15 | 16 | sudo date --set="2004-01-23 21:03:09.000" 17 | 18 | Also, to completely rule out anything from the "live" web leaking into the crawl, it may be prudent to disable the network connection at this point (both wired and wireless connections). 19 | 20 | ## Heritrix 21 | 22 | I started out with some limited tests with *Heritrix* 3, but this resulted in several problems. Most importantly, *Heritrix* appeared to ignore the *hosts* file on my machine (this file maps the domain *www.nl-menu.nl* to the *localhost* IP-adress). The effect of this was, that with the network disabled the crawl job would run indefinitely without ever downloading any data. After enabling the network, *Heritrix* would crawl [the "live" site at *www.nl-menu.nl*](http://www.nl-menu.nl/) instead of the locally resurrected version[^1]. Because of this, I quickly gave up on *Heritrix*, and moved on to *wget*. 23 | 24 | ## wget: first attempt 25 | 26 | After some experimentation, the following set of *wget* options appeared to work reasonably well[^2]: 27 | 28 | wget --mirror \ 29 | --page-requisites \ 30 | --adjust-extension \ 31 | --warc-file="nl-menu" \ 32 | --warc-cdx \ 33 | --output-file="nl-menu.log" \ 34 | http://www.nl-menu.nl/ 35 | 36 | The above command results in a 200 MB compressed WARC file, a mirror of the crawled directory tree, a CDX index file (not really nececessary, but useful for quality checks), and a log file. 37 | 38 | ## Rendering the WARC 39 | 40 | In order to test the rendering of the WARC locally, I installed [*pywb*](https://github.com/webrecorder/pywb) (which is part of the Webrecorder project). I then created a test archive using: 41 | 42 | wb-manager init my-web-archive 43 | 44 | and then added my newly created WARC using: 45 | 46 | wb-manager add my-web-archive ~/NL-menu/warc-wget/nl-menu.warc.gz 47 | 48 | I then started the server with the command: 49 | 50 | wayback 51 | 52 | After this the archive is available from . Below is a screenshot of one page: 53 | 54 | ![](http://openpreservation.org/wp-content/uploads/2018/07/NL-menu-pywb.png) 55 | 56 | Note that the *Archived* date as shown by *pywb* corresponds to our modified system date (i.e. 23 january 2004). 57 | 58 | ## Completeness checks 59 | 60 | An analysis of the completeness of the *wget* capture[^4] revealed that over 660 files from the *NL-menu* source directory tree were missing in the crawl. Most (90%) of these were missing because they are simply not referenced (by way of a hyperlink) by any of the website resources that are crawled from the site root. Of the remaining 64 missing files, 51 are referenced through JavaScript variables (which are understandably not picked up by wget's crawl mechanism). Other, less common reasons were: 61 | 62 | - A file is only referenced through a *value* attribute of an *input* element. 63 | - A file is only referenced through a *src* attribute of a *frame* element. 64 | 65 | Thhis raises the obvious question: can we force *wget* to crawl *all* files in the source directory? Of course we can! 66 | 67 | ## Wget: use --input-file switch with URL list 68 | 69 | The solution here is to use *wget*'s `--input-file` switch, which takes a list of URLs which are sequentially crawled. As a first step we need to create a directory listing of the source directory of the website, and then transform each file entry into a corresponding URL. I did this using the following command: 70 | 71 | find /var/www/www.nl-menu.nl -type f \ 72 | | sed -e 's/\/var\/www\//http:\/\//g' > urls.txt 73 | 74 | I then ran *wget*[^5]: 75 | 76 | wget --page-requisites \ 77 | --warc-file="nl-menu" \ 78 | --warc-cdx \ 79 | --output-file="nl-menu.log" \ 80 | --input-file=urls.txt 81 | 82 | This results in a WARC file that contains *all* files from the source directory. But it does introduce a different problem: when the WARC is accessed using *pywb*, it shows up as over 80 thousand individual captures (i.e. each file appears to be treated as an individual capture)! This makes rendering of the WARC near impossible (if only because loading the list of captures is extremely slow to begin with). 83 | 84 | After getting in touch with *pywb* author Ilya Kreymer, Ilya pointed out that *pywb*'s behaviour here is the combined effect of a bug in *pywb* and a peculiarity of the *NL-menu* directory tree: unlike most websites, it does not contain an index document (e.g. *index.html*) at the domain root level. Instead, the domain root contains 2 directories which hold the Dutch and English-language versions of the site, respectively: 85 | 86 | /var/www/www.nl-menu.nl/ 87 | ├── nlmenu.en 88 | │   ├── index.html 89 | │   ├── ... 90 | │   ├── ... 91 | │   └── ... 92 | └── nlmenu.nl 93 | ├── index.html 94 | ├── ... 95 | ├── ... 96 | └── ... 97 | 98 | The result of this is that the input URL list (which is derived from files in the directory tree) does not contain the site's root URL (*http://www.nl-menu.nl*), which in turn ends up missing in the WARC. Ultimately this leads *pywb* to do a prefix query which in this case results in 80 thousand URLs! 99 | 100 | ## Improved URL list 101 | 102 | Ilya suggested to avoid this problem by explicitly adding the domain root to the URL list: 103 | 104 | echo "http://www.nl-menu.nl/" > urls.txt 105 | 106 | Incidentally we also need to add entries for the root directories of the Dutch and English language sub-sites: 107 | 108 | echo "http://www.nl-menu.nl/nlmenu.nl/" >> urls.txt 109 | echo "http://www.nl-menu.nl/nlmenu.en/" >> urls.txt 110 | 111 | Then we can add the remaining files (and rewrite file paths as URLs) as before: 112 | 113 | find /var/www/www.nl-menu.nl -type f \ 114 | | sed -e 's/\/var\/www\//http:\/\//g' > urls.txt 115 | 116 | Finally run *wget*: 117 | 118 | wget --page-requisites \ 119 | --warc-file="nl-menu" \ 120 | --warc-cdx \ 121 | --output-file="nl-menu.log" \ 122 | --input-file=urls.txt 123 | 124 | This results in a WARC that is complete *and* renders in *pywb* as well. On a side note, although rendering and navigating the site works well overall, there are still some small issues. For one thing, coming from the Dutch or English-language home page, clicking on the link to the site's *registration* page results in a *Url Not Found* error, even though this page loads without problems coming from any other page on the site. I don't really understand why this happens, although I suspect a combination of JavaScript and early-2000s [frames](https://en.wikipedia.org/wiki/Framing_(World_Wide_Web)) madness may be to blame here. 125 | 126 | ## Authenticity and provenance 127 | 128 | My [previous blog post](http://openpreservation.org/blog/2018/04/24/resurrecting-the-first-dutch-web-index-nl-menu-revisited/) contained the following observation on authenticity and provenance: 129 | 130 | > For one thing, we need to record metadata that makes it absolutely clear that our archival snapshot was taken from a locally reconstructed copy, rather than the original site. 131 | 132 | So the more specific question is: does the WARC that we just created contain any metadata about the provenance of this snapshot? To find out, let's use the *warcdump* tool that is part of the [*warctools*](https://github.com/internetarchive/warctools) toolkit: 133 | 134 | warcdump nl-menu.warc.gz > nl-menu-dump.txt 135 | 136 | This results in a (huge) text file with metadata about all archived resources inside the WARC. Here is an example of one (request) record: 137 | 138 | archive record at nl-menu.warc.gz:75708014 139 | Headers: 140 | WARC-Type:request 141 | WARC-Target-URI: 142 | Content-Type:application/http;msgtype=request 143 | WARC-Date:2004-01-23T20:04:54Z 144 | WARC-Record-ID: 145 | WARC-IP-Address:127.0.0.1 146 | WARC-Warcinfo-ID: 147 | WARC-Block-Digest:sha1:MJEIKQUIEOMARJPUEYXZFT4TTTUKX2IE 148 | Content-Length:159 149 | Content Headers: 150 | Content-Type : application/http;msgtype=request 151 | Content-Length : 159 152 | Content: 153 | GET /nlmenu\x2Een/index\x2Ehtml HTTP/1\x2E1\xD\xAUser\x2DAgent\x3A Wget/1\x2E19 \x28linux\x2Dgnu\x29\xD\xAAccept\x3A \x2A/\x2A\xD\xAAccept\x2DEncoding\x3A identity\xD\xAHost\x3A www\x2Enl\x2Dmenu\x2Enl\xD\xAConnection\x3A Keep\x2DAlive\xD\xA\xD\xA 154 | ... 155 | 156 | Note this line: 157 | 158 | WARC-IP-Address:127.0.0.1 159 | 160 | The field *WARC-IP-Address* is defined in the [WARC specification](https://iipc.github.io/warc-specifications/specifications/warc-format/warc-1.1/#warc-ip-address) as: 161 | 162 | > The WARC-IP-Address is the numeric Internet address contacted to retrieve any included content. An IPv4 address shall be written as a “dotted quad”; an IPv6 address shall be written as specified in [RFC4291]. For a HTTP retrieval, this will be the IP address used at retrieval time corresponding to the hostname in the record’s target-Uri. 163 | 164 | In this case, the value 127.0.0.1 (=localhost) unambiguously shows that this resource was crawled from a local copy, and not from the live web. So the required provenance metadata does indeed exist[^3] 165 | 166 | ## Conclusion 167 | 168 | The above steps complete the recovery and archiving of the *NL-menu* website. In the coming months the KB will start some more "web archaeology" activities, and it will be interesting to see to what extent these *wget* "recipes" will work for other offline web content. In any case they may be a useful starting point. 169 | 170 | ## Acknowledgements 171 | 172 | Thanks are due to Ilya Kreymer, Raffaele Messuti and Andy Jackson for their helpful suggestions on *wget* and *pywb*, and René Voorburg for his suggestions on improving and quality-checking the crawl. 173 | 174 | ## Additional resources 175 | 176 | - Jeroen van Luin, [Experiences with web archiving in the Dutch National Archives](https://kia.pleio.nl/file/download/55806143/Report%20on%20web-archiving%20in%20the%20Dutch%20National%20Archives.pdf). Report, National Archives of the Netherlands 177 | 178 | - [Rough working notes on quality/completeness checks](https://github.com/KBNLresearch/nl-menu-resources/blob/master/doc/qa-archived-site.md) - unedited notes on some of the tests I did to assess the crawl quality (mostly in terms of completeness) 179 | 180 | - [pywb](https://github.com/webrecorder/pywb), Core Python Web Archiving Toolkit for replay and recording of web archives 181 | 182 | - [warctools](https://github.com/internetarchive/warctools) 183 | 184 | [^1]: A site still exists at this domain, even though its contents are now largely unrelated to the original *NL-menu* 185 | 186 | [^2]: Compared with the examples in the NA documentation, this leaves out the *-w* (wait) switch (since we are crawling from a local machine it is safe to crawl at maximum speed), the *-k* (convert links) switch, and the *-E* (adjust extension) switch. It also adds the *--warc-cdx* command (which writes an index file) and the *--output-file* switch (which writes a log) 187 | 188 | [^3]: How this particular type of provenance metadata is exposed to a user of the web archive is a different matter 189 | 190 | [^4]: A detailed discussion of the methods that were used for this analysis is beyond the scope of this blog post; however some [rough working notes are available here](https://github.com/KBNLresearch/nl-menu-resources/blob/master/doc/qa-archived-site.md). 191 | 192 | [^5]: Note that I removed the `--mirror` option here, as it seems that this causes *wget* to do a recursive crawl *for each single URL* in the list. The result of this is that *wget* keeps crawling for hours without any (new) data being added to the crawl result. -------------------------------------------------------------------------------- /doc/missingrefs.csv: -------------------------------------------------------------------------------- 1 | fileName,countRef,countCdx 2 | nlmenu.en/admin/gastenboek,1,0 3 | nlmenu.en/admin/nr-sects.txt,0,0 4 | nlmenu.en/admin/nr-sites.txt,0,0 5 | nlmenu.en/admin/old,0,0 6 | nlmenu.en/admin/stat.html,0,0 7 | nlmenu.en/admin/wensform1.html,0,0 8 | nlmenu.en/admin/wensform.html,0,0 9 | nlmenu.en/fset/admin.html,0,0 10 | nlmenu.en/fset/frameset_zoekresultaten.html,0,0 11 | nlmenu.en/fset/new.html,0,0 12 | nlmenu.en/fset/nl_menuinfo.html,0,0 13 | nlmenu.en/fset/provincie.html,0,0 14 | nlmenu.en/geor/gem_536.html,0,0 15 | nlmenu.en/geor/prov_13.html,0,0 16 | nlmenu.en/home.html,0,0 17 | nlmenu.en/images/aanmelden1.gif,0,0 18 | nlmenu.en/images/aanmelden2.gif,0,0 19 | nlmenu.en/images/achtergrond_boven.gif,0,0 20 | nlmenu.en/images/achtergrond_boven_home.gif,0,0 21 | nlmenu.en/images/achtergrond.gif,0,0 22 | nlmenu.en/images/achtergrond_marge.gif,0,0 23 | nlmenu.en/images/achtergrond_nieuw.gif,0,0 24 | nlmenu.en/images/achtergrond_rechts.gif,0,0 25 | nlmenu.en/images/achtergrond_tekst.gif,0,0 26 | nlmenu.en/images/alfabet_a.gif,0,0 27 | nlmenu.en/images/alfabet_b.gif,0,0 28 | nlmenu.en/images/alfabet_c.gif,0,0 29 | nlmenu.en/images/alfabet_d.gif,0,0 30 | nlmenu.en/images/alfabet_e.gif,0,0 31 | nlmenu.en/images/alfabet_f.gif,0,0 32 | nlmenu.en/images/alfabet_g.gif,0,0 33 | nlmenu.en/images/alfabet.gif,0,0 34 | nlmenu.en/images/alfabet_h.gif,0,0 35 | nlmenu.en/images/alfabet_i.gif,0,0 36 | nlmenu.en/images/alfabet_j.gif,0,0 37 | nlmenu.en/images/alfabet_k.gif,0,0 38 | nlmenu.en/images/alfabet_klein_a.gif,0,0 39 | nlmenu.en/images/alfabet_klein_b.gif,0,0 40 | nlmenu.en/images/alfabet_klein_c.gif,0,0 41 | nlmenu.en/images/alfabet_klein_d.gif,0,0 42 | nlmenu.en/images/alfabet_klein_e.gif,0,0 43 | nlmenu.en/images/alfabet_klein_f.gif,0,0 44 | nlmenu.en/images/alfabet_klein_g.gif,0,0 45 | nlmenu.en/images/alfabet_klein_&.gif,0,0 46 | nlmenu.en/images/alfabet_klein.gif,0,0 47 | nlmenu.en/images/alfabet_klein_h.gif,0,0 48 | nlmenu.en/images/alfabet_klein_i.gif,0,0 49 | nlmenu.en/images/alfabet_klein_j.gif,0,0 50 | nlmenu.en/images/alfabet_klein_k.gif,0,0 51 | nlmenu.en/images/alfabet_klein_l.gif,0,0 52 | nlmenu.en/images/alfabet_klein_m.gif,0,0 53 | nlmenu.en/images/alfabet_klein_n.gif,0,0 54 | nlmenu.en/images/alfabet_klein_o.gif,0,0 55 | nlmenu.en/images/alfabet_klein_p.gif,0,0 56 | nlmenu.en/images/alfabet_klein_q.gif,0,0 57 | nlmenu.en/images/alfabet_klein_r.gif,0,0 58 | nlmenu.en/images/alfabet_klein_s.gif,0,0 59 | nlmenu.en/images/alfabet_klein_t.gif,0,0 60 | nlmenu.en/images/alfabet_klein_u.gif,0,0 61 | nlmenu.en/images/alfabet_klein_v.gif,0,0 62 | nlmenu.en/images/alfabet_klein_w.gif,0,0 63 | nlmenu.en/images/alfabet_klein_x.gif,0,0 64 | nlmenu.en/images/alfabet_klein_y.gif,0,0 65 | nlmenu.en/images/alfabet_klein_z.gif,0,0 66 | nlmenu.en/images/alfabet_l.gif,0,0 67 | nlmenu.en/images/alfabet_m.gif,0,0 68 | nlmenu.en/images/alfabet_n.gif,0,0 69 | nlmenu.en/images/alfabet_o.gif,0,0 70 | nlmenu.en/images/alfabet_p.gif,0,0 71 | nlmenu.en/images/alfabet_plaatsen.eng.gif,0,0 72 | nlmenu.en/images/alfabet_plaatsen.gif,0,0 73 | nlmenu.en/images/alfabet_q.gif,0,0 74 | nlmenu.en/images/alfabet_r.gif,0,0 75 | nlmenu.en/images/alfabet_rubrieken.eng.gif,0,0 76 | nlmenu.en/images/alfabet_rubrieken.gif,0,0 77 | nlmenu.en/images/alfabet_s.gif,0,0 78 | nlmenu.en/images/alfabet_sites.eng.gif,0,0 79 | nlmenu.en/images/alfabet_sites.gif,0,0 80 | nlmenu.en/images/alfabet_t.gif,0,0 81 | nlmenu.en/images/alfabet_u.gif,0,0 82 | nlmenu.en/images/alfabet_v.gif,0,0 83 | nlmenu.en/images/alfabet_w.gif,0,0 84 | nlmenu.en/images/alfabet_x.gif,0,0 85 | nlmenu.en/images/alfabet_y.gif,0,0 86 | nlmenu.en/images/alfabet_z.gif,0,0 87 | nlmenu.en/images/alfabet_zonder.eng.gif,0,0 88 | nlmenu.en/images/alfabet_zonder.gif,0,0 89 | nlmenu.en/images/autointernet1.gif,0,0 90 | nlmenu.en/images/autointernet2.gif,0,0 91 | nlmenu.en/images/autoweg1.gif,0,0 92 | nlmenu.en/images/autoweg2.gif,0,0 93 | nlmenu.en/images/a-z.gif,0,0 94 | nlmenu.en/images/a-z_home.gif,0,0 95 | nlmenu.en/images/balkje.gif,0,0 96 | nlmenu.en/images/bedrijfsleven1a.gif,0,0 97 | nlmenu.en/images/bedrijfsleven2a.gif,0,0 98 | nlmenu.en/images/bedrijfsleven2.gif,0,0 99 | nlmenu.en/images/bullet.gif,0,0 100 | nlmenu.en/images/computer2.gif,0,0 101 | nlmenu.en/images/Copy of kbsurfnet_logo.gif,0,0 102 | nlmenu.en/images/docinfo2.gif,0,0 103 | nlmenu.en/images/document-ibut.gif,0,0 104 | nlmenu.en/images/documenticoon.gif,0,0 105 | nlmenu.en/images/egel.tif,0,0 106 | nlmenu.en/images/externe.eng.gif,0,0 107 | nlmenu.en/images/externe.gif,0,0 108 | nlmenu.en/images/file_id.diz,0,0 109 | nlmenu.en/images/gastenboek1.gif,0,0 110 | nlmenu.en/images/gastenboek2.gif,0,0 111 | nlmenu.en/images/gerelateerde.eng.gif,0,0 112 | nlmenu.en/images/gerelateerde.gif,0,0 113 | nlmenu.en/images/&.gif,0,0 114 | nlmenu.en/images/gonext.gif,0,0 115 | nlmenu.en/images/guests.html,0,0 116 | nlmenu.en/images/handig2.gif,0,0 117 | nlmenu.en/images/homepagemenu.eng.gif,0,0 118 | nlmenu.en/images/homepagemenu.gif,0,0 119 | nlmenu.en/images/hoofdrubriekenrubrieken1.gif,0,0 120 | nlmenu.en/images/i.gif,0,0 121 | nlmenu.en/images/ii.gif,0,0 122 | nlmenu.en/images/info1.gif,0,0 123 | nlmenu.en/images/info2.gif,0,0 124 | nlmenu.en/images/intro1.gif,0,0 125 | nlmenu.en/images/intro2.gif,0,0 126 | nlmenu.en/images/kap_a.gif,0,0 127 | nlmenu.en/images/kap_b.gif,0,0 128 | nlmenu.en/images/kap_c.gif,0,0 129 | nlmenu.en/images/kap_d.gif,0,0 130 | nlmenu.en/images/kap_e.gif,0,0 131 | nlmenu.en/images/kap_f.gif,0,0 132 | nlmenu.en/images/kap_g.gif,0,0 133 | nlmenu.en/images/kap_h.gif,0,0 134 | nlmenu.en/images/kap_i.gif,0,0 135 | nlmenu.en/images/kap_j.gif,0,0 136 | nlmenu.en/images/kap_k.gif,0,0 137 | nlmenu.en/images/kap_l.gif,0,0 138 | nlmenu.en/images/kap_m.gif,0,0 139 | nlmenu.en/images/kap_n.gif,0,0 140 | nlmenu.en/images/kap_o.gif,0,0 141 | nlmenu.en/images/kap_p.gif,0,0 142 | nlmenu.en/images/kap_q.gif,0,0 143 | nlmenu.en/images/kap_r.gif,0,0 144 | nlmenu.en/images/kap_s.gif,0,0 145 | nlmenu.en/images/kap_t.gif,0,0 146 | nlmenu.en/images/kap_u.gif,0,0 147 | nlmenu.en/images/kap_v.gif,0,0 148 | nlmenu.en/images/kap_w.gif,0,0 149 | nlmenu.en/images/kap_x.gif,0,0 150 | nlmenu.en/images/kap_y.gif,0,0 151 | nlmenu.en/images/kap_z.gif,0,0 152 | nlmenu.en/images/kblogo.gif,0,0 153 | nlmenu.en/images/kbsurfnet_logo2.gif,0,0 154 | nlmenu.en/images/kbsurfnet_logo.gif,0,0 155 | nlmenu.en/images/kop_224.en.gif,0,0 156 | nlmenu.en/images/kop_224.gif,0,0 157 | nlmenu.en/images/kop_226.en.gif,0,0 158 | nlmenu.en/images/kop_226.gif,0,0 159 | nlmenu.en/images/kop_227.en.gif,0,0 160 | nlmenu.en/images/kop_227.gif,0,0 161 | nlmenu.en/images/kop_228.en.gif,0,0 162 | nlmenu.en/images/kop_228.gif,0,0 163 | nlmenu.en/images/kop_232.en.gif,0,0 164 | nlmenu.en/images/kop_232.gif,0,0 165 | nlmenu.en/images/kop_233.en.gif,0,0 166 | nlmenu.en/images/kop_233.gif,0,0 167 | nlmenu.en/images/kop_236.en.gif,0,0 168 | nlmenu.en/images/kop_236.gif,0,0 169 | nlmenu.en/images/kop_237.en.gif,0,0 170 | nlmenu.en/images/kop_237.gif,0,0 171 | nlmenu.en/images/kop_238.en.gif,0,0 172 | nlmenu.en/images/kop_238.gif,0,0 173 | nlmenu.en/images/kop_239.gif,0,0 174 | nlmenu.en/images/kop_245.en.gif,0,0 175 | nlmenu.en/images/kop_245.gif,0,0 176 | nlmenu.en/images/kop_315.en.gif,0,0 177 | nlmenu.en/images/kop_315.gif,0,0 178 | nlmenu.en/images/kop_404.gif,0,0 179 | nlmenu.en/images/kop_433.en.gif,0,0 180 | nlmenu.en/images/kop_433.gif,0,0 181 | nlmenu.en/images/kop_aanmelden.eng.gif,0,0 182 | nlmenu.en/images/kop_aanmelden.gif,0,0 183 | nlmenu.en/images/kop_email.gif,0,0 184 | nlmenu.en/images/kop_gastenboek.eng.gif,0,0 185 | nlmenu.en/images/kop_gastenboek.gif,0,0 186 | nlmenu.en/images/kop_gemeenten.en.gif,0,0 187 | nlmenu.en/images/kop_gemeenten.nl.gif,0,0 188 | nlmenu.en/images/kop_handig.eng.gif,0,0 189 | nlmenu.en/images/kop_handig.gif,0,0 190 | nlmenu.en/images/kop_intro.eng.gif,0,0 191 | nlmenu.en/images/kop_intro.gif,0,0 192 | nlmenu.en/images/kop_mailinglist.eng.gif,0,0 193 | nlmenu.en/images/kop_mailinglist.gif,0,0 194 | nlmenu.en/images/kop_nieuwdezeweek.eng.gif,0,0 195 | nlmenu.en/images/kop_nieuwdezeweek.gif,0,0 196 | nlmenu.en/images/kop_plaatsenaz.eng.gif,0,0 197 | nlmenu.en/images/kop_plaatsenaz.gif,0,0 198 | nlmenu.en/images/kop_provincies.en.gif,0,0 199 | nlmenu.en/images/kop_provincies.nl.gif,0,0 200 | nlmenu.en/images/kop_religie.eng.gif,0,0 201 | nlmenu.en/images/kop_rubriekenaz.eng.gif,0,0 202 | nlmenu.en/images/kop_rubriekenaz.gif,0,0 203 | nlmenu.en/images/kop_sitesaz.eng.gif,0,0 204 | nlmenu.en/images/kop_sitesaz.gif,0,0 205 | nlmenu.en/images/kop_webwijzers.gif,0,0 206 | nlmenu.en/images/kop_wegwijzers.eng.gif,0,0 207 | nlmenu.en/images/kop_wegwijzers.gif,0,0 208 | nlmenu.en/images/kop_wijzigen.eng.gif,0,0 209 | nlmenu.en/images/kop_wijzigen.gif,0,0 210 | nlmenu.en/images/kop_zoekresultaat.eng.gif,0,0 211 | nlmenu.en/images/kop_zoekresultaat.gif,0,0 212 | nlmenu.en/images/kunstcult2.gif,0,0 213 | nlmenu.en/images/lijn3.gif,0,0 214 | nlmenu.en/images/lijn4.gif,0,0 215 | nlmenu.en/images/lijntje2.gif,0,0 216 | nlmenu.en/images/lijntje3.gif,0,0 217 | nlmenu.en/images/lijntje.gif,0,0 218 | nlmenu.en/images/logo.gif,0,0 219 | nlmenu.en/images/logo_homepage1-new.gif,0,0 220 | nlmenu.en/images/logohomepage2-new.gif,0,0 221 | nlmenu.en/images/logohomepage.gif,0,0 222 | nlmenu.en/images/logo_nl-menu2.gif,0,0 223 | nlmenu.en/images/logo_nl-menu.gif,0,0 224 | nlmenu.en/images/logo_nl-menu-test.gif,0,0 225 | nlmenu.en/images/maillist1.gif,0,0 226 | nlmenu.en/images/maillist2.gif,0,0 227 | nlmenu.en/images/media2.gif,0,0 228 | nlmenu.en/images/menu_anderewijzers.gif,0,0 229 | nlmenu.en/images/menu_automatisering.gif,0,0 230 | nlmenu.en/images/menu_bedrijfsleven.gif,0,0 231 | nlmenu.en/images/menu_docu.gif,0,0 232 | nlmenu.en/images/menu_gezondheid.gif,0,0 233 | nlmenu.en/images/menu_kunst.gif,0,0 234 | nlmenu.en/images/menu_nieuws.gif,0,0 235 | nlmenu.en/images/menu_onderwijs.gif,0,0 236 | nlmenu.en/images/menu_onderzoek.gif,0,0 237 | nlmenu.en/images/menu_overheid.gif,0,0 238 | nlmenu.en/images/menu_politiek.gif,0,0 239 | nlmenu.en/images/menu_religie.gif,0,0 240 | nlmenu.en/images/menu_vrijetijd.gif,0,0 241 | nlmenu.en/images/menu_wetenschap.gif,0,0 242 | nlmenu.en/images/mriek2.psd,0,0 243 | nlmenu.en/images/mriek.psd,0,0 244 | nlmenu.en/images/nieuwerubrieken.gif,0,0 245 | nlmenu.en/images/nieuwinrubriek.eng.gif,0,0 246 | nlmenu.en/images/nieuwinrubriek.gif,0,0 247 | nlmenu.en/images/nl-new-nl.gif,0,0 248 | nlmenu.en/images/onderwijs2.gif,0,0 249 | nlmenu.en/images/onderzoek2.gif,0,0 250 | nlmenu.en/images/overheid2.gif,0,0 251 | nlmenu.en/images/pijlbeneden.gif,0,0 252 | nlmenu.en/images/pijlrechts.gif,0,0 253 | nlmenu.en/images/polsam2.gif,0,0 254 | nlmenu.en/images/rechtermenu.gif,0,0 255 | nlmenu.en/images/recreatie2.gif,0,0 256 | nlmenu.en/images/registratieknop.gif,0,0 257 | nlmenu.en/images/religie2.gif,0,0 258 | nlmenu.en/images/rubriekensitesplaatsen.gif,0,0 259 | nlmenu.en/images/streepje.gif,0,0 260 | nlmenu.en/images/surfnetlogo2.gif,0,0 261 | nlmenu.en/images/surfnetlogo3.gif,0,0 262 | nlmenu.en/images/surfnetlogo.gif,0,0 263 | nlmenu.en/images/thumb1_224.gif,0,0 264 | nlmenu.en/images/thumb1_226.gif,0,0 265 | nlmenu.en/images/thumb1_227.gif,0,0 266 | nlmenu.en/images/thumb1_228.gif,0,0 267 | nlmenu.en/images/thumb1_232.gif,0,0 268 | nlmenu.en/images/thumb1_233.gif,0,0 269 | nlmenu.en/images/thumb1_236.gif,0,0 270 | nlmenu.en/images/thumb1_237.gif,0,0 271 | nlmenu.en/images/thumb1_238.gif,0,0 272 | nlmenu.en/images/thumb1_239.gif,0,0 273 | nlmenu.en/images/thumb1_245.gif,0,0 274 | nlmenu.en/images/thumb1_315.gif,0,0 275 | nlmenu.en/images/thumb1_433.gif,0,0 276 | nlmenu.en/images/uitleg2.gif,0,0 277 | nlmenu.en/images/uitleg.eng.gif,0,0 278 | nlmenu.en/images/uitleg.gif,0,0 279 | nlmenu.en/images/vlag.eng.gif,0,0 280 | nlmenu.en/images/vlaggetje.gif,0,0 281 | nlmenu.en/images/vlag.gif,0,0 282 | nlmenu.en/images/vlag_home.gif,0,0 283 | nlmenu.en/images/wegwijzers.gif,0,0 284 | nlmenu.en/images/wetenschap2.gif,0,0 285 | nlmenu.en/images/ziekenhuis2.gif,0,0 286 | nlmenu.en/images/zoek.eng+.gif,0,0 287 | nlmenu.en/images/zoeken+.gif,0,0 288 | nlmenu.en/images/zoek.gif,0,0 289 | nlmenu.en/images/zoekhome.eng.gif,0,0 290 | nlmenu.en/images/zoekhome.gif,0,0 291 | nlmenu.en/images/zoekpad.eng.gif,0,0 292 | nlmenu.en/images/zoekpad.gif,0,0 293 | nlmenu.en/images/zoekresultaat1.gif,0,0 294 | nlmenu.en/images/zoekresultaat2.gif,0,0 295 | nlmenu.en/new/1267.txt,0,0 296 | nlmenu.en/new/224.txt,0,0 297 | nlmenu.en/new/226.txt,0,0 298 | nlmenu.en/new/227.txt,0,0 299 | nlmenu.en/new/228.txt,0,0 300 | nlmenu.en/new/232.txt,0,0 301 | nlmenu.en/new/233.txt,0,0 302 | nlmenu.en/new/236.txt,0,0 303 | nlmenu.en/new/237.txt,0,0 304 | nlmenu.en/new/238.txt,0,0 305 | nlmenu.en/new/239.txt,0,0 306 | nlmenu.en/new/245.txt,0,0 307 | nlmenu.en/new/315.txt,0,0 308 | nlmenu.en/new/433.txt,0,0 309 | nlmenu.en/new/nieuw.txt,0,0 310 | nlmenu.en/profiel,0,0 311 | nlmenu.en/resources/alfabet_provincies.html,1,0 312 | nlmenu.en/resources/old,0,0 313 | nlmenu.en/sections/224/1071/1066/281/937/955.html,0,0 314 | nlmenu.en/sections/224/1071/1066/281/937/956.html,0,0 315 | nlmenu.en/sections/224/1080/1065/281/937/955.html,0,0 316 | nlmenu.en/sections/224/1080/1065/281/937/956.html,0,0 317 | nlmenu.en/sections/224/1080/1066/281/937/955.html,0,0 318 | nlmenu.en/sections/224/1080/1066/281/937/956.html,0,0 319 | nlmenu.en/sections/224/281/937/955.html,0,0 320 | nlmenu.en/sections/224/281/937/956.html,0,0 321 | nlmenu.en/sections/228/1046/1728.html,0,0 322 | nlmenu.en/sections/233/1254/1727/1728.html,0,0 323 | nlmenu.en/sections/233/825/1491/1727/1728.html,0,0 324 | nlmenu.en/sections/236/1046/1728.html,0,0 325 | nlmenu.en/sections/245/1187/1457/1463.html,0,0 326 | nlmenu.en/sections/245/235/1022/1463.html,0,0 327 | nlmenu.en/sections/245/347/832/1382.html,0,0 328 | nlmenu.en/sections/315/1184/1768/1784.html,0,0 329 | nlmenu.en/sections/315/1184/1787/1768/1784.html,0,0 330 | nlmenu.en/sections/433/753/1787/1768/1784.html,0,0 331 | nlmenu.en/sections/info/0.html,0,0 332 | nlmenu.en/sections/info/-1.html,0,0 333 | nlmenu.en/sections/info/-2.html,0,0 334 | nlmenu.en/w3all/www_zv.html,0,0 335 | nlmenu.nl/admin/aanmeldstop.html,0,0 336 | nlmenu.nl/admin/allurls.txt,0,0 337 | nlmenu.nl/admin/fonts,0,0 338 | nlmenu.nl/admin/gastenboek,3,0 339 | nlmenu.nl/admin/home.html,0,0 340 | nlmenu.nl/admin/LEESMIJ,0,0 341 | nlmenu.nl/admin/mailing-old.html,0,0 342 | nlmenu.nl/admin/mail_list.html,0,0 343 | nlmenu.nl/admin/nlinfo.html,0,0 344 | nlmenu.nl/admin/nl-m.dmp,0,0 345 | nlmenu.nl/admin/nlmenu-cities.lst,0,0 346 | nlmenu.nl/admin/nr-sects.txt,7,0 347 | nlmenu.nl/admin/nr-sites.txt,7,0 348 | nlmenu.nl/admin/old,0,0 349 | nlmenu.nl/admin/opdracht_verzonden.html,1,0 350 | nlmenu.nl/admin/styles_nlmenu.css,0,0 351 | nlmenu.nl/admin/styles_nlmenuhome.css,0,0 352 | nlmenu.nl/admin/testmailing.html,0,0 353 | nlmenu.nl/admin/urls.txt,0,0 354 | nlmenu.nl/fset/404.html,0,0 355 | nlmenu.nl/fset/admin2.html,0,0 356 | nlmenu.nl/fset/admin.html,0,0 357 | nlmenu.nl/fset/e-mail.html,0,0 358 | nlmenu.nl/fset/gastenboek.html,0,0 359 | nlmenu.nl/fset/home.html,0,0 360 | nlmenu.nl/fset/mailinglist.html,0,0 361 | nlmenu.nl/fset/new.html,0,0 362 | nlmenu.nl/fset/webwijzers.html,0,0 363 | nlmenu.nl/geor/gem_536.html,0,0 364 | nlmenu.nl/geor/prov_13.html,0,0 365 | nlmenu.nl/home.html,0,0 366 | nlmenu.nl/images/404.gif,0,0 367 | nlmenu.nl/images/aanmelden2.gif,0,0 368 | nlmenu.nl/images/achtergrond_boven.gif,0,0 369 | nlmenu.nl/images/achtergrond_marge.gif,0,0 370 | nlmenu.nl/images/achtergrond_nieuw.gif,0,0 371 | nlmenu.nl/images/alfabet_a.gif,9,0 372 | nlmenu.nl/images/alfabet_bgeo.gif,6,0 373 | nlmenu.nl/images/alfabet_b.gif,9,0 374 | nlmenu.nl/images/alfabet_cgeo.gif,6,0 375 | nlmenu.nl/images/alfabet_c.gif,9,0 376 | nlmenu.nl/images/alfabet_dgeo.gif,6,0 377 | nlmenu.nl/images/alfabet_d.gif,9,0 378 | nlmenu.nl/images/alfabet_egeo.gif,6,0 379 | nlmenu.nl/images/alfabet_e.gif,9,0 380 | nlmenu.nl/images/alfabet_fgeo.gif,6,0 381 | nlmenu.nl/images/alfabet_f.gif,9,0 382 | nlmenu.nl/images/alfabet_ggeo.gif,6,0 383 | nlmenu.nl/images/alfabet_g.gif,6,0 384 | nlmenu.nl/images/alfabet.gif,0,0 385 | nlmenu.nl/images/alfabet_hgeo.gif,6,0 386 | nlmenu.nl/images/alfabet_h.gif,6,0 387 | nlmenu.nl/images/alfabet_igeo.gif,6,0 388 | nlmenu.nl/images/alfabet_i.gif,6,0 389 | nlmenu.nl/images/alfabet_jgeo.gif,6,0 390 | nlmenu.nl/images/alfabet_j.gif,9,0 391 | nlmenu.nl/images/alfabet_kgeo.gif,6,0 392 | nlmenu.nl/images/alfabet_k.gif,9,0 393 | nlmenu.nl/images/alfabet_klein_a.gif,0,0 394 | nlmenu.nl/images/alfabet_klein_b.gif,0,0 395 | nlmenu.nl/images/alfabet_klein_c.gif,0,0 396 | nlmenu.nl/images/alfabet_klein_d.gif,0,0 397 | nlmenu.nl/images/alfabet_klein_e.gif,0,0 398 | nlmenu.nl/images/alfabet_klein_f.gif,0,0 399 | nlmenu.nl/images/alfabet_klein_g.gif,0,0 400 | nlmenu.nl/images/alfabet_klein_&.gif,0,0 401 | nlmenu.nl/images/alfabet_klein.gif,0,0 402 | nlmenu.nl/images/alfabet_klein_h.gif,0,0 403 | nlmenu.nl/images/alfabet_klein_i.gif,0,0 404 | nlmenu.nl/images/alfabet_klein_j.gif,0,0 405 | nlmenu.nl/images/alfabet_klein_k.gif,0,0 406 | nlmenu.nl/images/alfabet_klein_l.gif,0,0 407 | nlmenu.nl/images/alfabet_klein_m.gif,0,0 408 | nlmenu.nl/images/alfabet_klein_n.gif,0,0 409 | nlmenu.nl/images/alfabet_klein_o.gif,0,0 410 | nlmenu.nl/images/alfabet_klein_p.gif,0,0 411 | nlmenu.nl/images/alfabet_klein_q.gif,0,0 412 | nlmenu.nl/images/alfabet_klein_r.gif,0,0 413 | nlmenu.nl/images/alfabet_klein_s.gif,0,0 414 | nlmenu.nl/images/alfabet_klein_t.gif,0,0 415 | nlmenu.nl/images/alfabet_klein_u.gif,0,0 416 | nlmenu.nl/images/alfabet_klein_v.gif,0,0 417 | nlmenu.nl/images/alfabet_klein_w.gif,0,0 418 | nlmenu.nl/images/alfabet_klein_x.gif,0,0 419 | nlmenu.nl/images/alfabet_klein_y.gif,0,0 420 | nlmenu.nl/images/alfabet_klein_z.gif,0,0 421 | nlmenu.nl/images/alfabet_lgeo.gif,6,0 422 | nlmenu.nl/images/alfabet_l.gif,9,0 423 | nlmenu.nl/images/alfabet_mgeo.gif,6,0 424 | nlmenu.nl/images/alfabet_m.gif,9,0 425 | nlmenu.nl/images/alfabet_ngeo.gif,6,0 426 | nlmenu.nl/images/alfabet_n.gif,9,0 427 | nlmenu.nl/images/alfabet_ogeo.gif,6,0 428 | nlmenu.nl/images/alfabet_o.gif,9,0 429 | nlmenu.nl/images/alfabet_pgeo.gif,6,0 430 | nlmenu.nl/images/alfabet_p.gif,9,0 431 | nlmenu.nl/images/alfabet_plaatsen.eng.gif,0,0 432 | nlmenu.nl/images/alfabet_plaatsen.gif,0,0 433 | nlmenu.nl/images/alfabet_qgeo.gif,6,0 434 | nlmenu.nl/images/alfabet_q.gif,9,0 435 | nlmenu.nl/images/alfabet_rgeo.gif,6,0 436 | nlmenu.nl/images/alfabet_r.gif,9,0 437 | nlmenu.nl/images/alfabet_rubrieken.eng.gif,0,0 438 | nlmenu.nl/images/alfabet_rubrieken.gif,0,0 439 | nlmenu.nl/images/alfabet_sgeo.gif,6,0 440 | nlmenu.nl/images/alfabet_s.gif,9,0 441 | nlmenu.nl/images/alfabet_sites.eng.gif,0,0 442 | nlmenu.nl/images/alfabet_sites.gif,0,0 443 | nlmenu.nl/images/alfabet_tgeo.gif,6,0 444 | nlmenu.nl/images/alfabet_t.gif,9,0 445 | nlmenu.nl/images/alfabet_ugeo.gif,6,0 446 | nlmenu.nl/images/alfabet_u.gif,9,0 447 | nlmenu.nl/images/alfabet_vgeo.gif,6,0 448 | nlmenu.nl/images/alfabet_v.gif,9,0 449 | nlmenu.nl/images/alfabet_wgeo.gif,6,0 450 | nlmenu.nl/images/alfabet_w.gif,9,0 451 | nlmenu.nl/images/alfabet_xgeo.gif,6,0 452 | nlmenu.nl/images/alfabet_x.gif,9,0 453 | nlmenu.nl/images/alfabet_ygeo.gif,6,0 454 | nlmenu.nl/images/alfabet_y.gif,9,0 455 | nlmenu.nl/images/alfabet_zgeo.gif,6,0 456 | nlmenu.nl/images/alfabet_z.gif,9,0 457 | nlmenu.nl/images/alfabet_zonder.eng.gif,0,0 458 | nlmenu.nl/images/alfabet_zonder.gif,0,0 459 | nlmenu.nl/images/autointernet1.gif,0,0 460 | nlmenu.nl/images/autointernet2.gif,0,0 461 | nlmenu.nl/images/autoweg1.gif,0,0 462 | nlmenu.nl/images/autoweg2.gif,0,0 463 | nlmenu.nl/images/bedrijfsleven1a.gif,0,0 464 | nlmenu.nl/images/bedrijfsleven2a.gif,0,0 465 | nlmenu.nl/images/bedrijfsleven2.gif,0,0 466 | nlmenu.nl/images/computer2.gif,0,0 467 | nlmenu.nl/images/Copy of kbsurfnet_logo.gif,0,0 468 | nlmenu.nl/images/docinfo2.gif,0,0 469 | nlmenu.nl/images/externe.eng.gif,0,0 470 | nlmenu.nl/images/externe.gif,0,0 471 | nlmenu.nl/images/favicon.ico,0,0 472 | nlmenu.nl/images/gastenboek1.gif,0,0 473 | nlmenu.nl/images/gastenboek2.gif,15,0 474 | nlmenu.nl/images/gerelateerde.eng.gif,0,0 475 | nlmenu.nl/images/gerelateerde.gif,0,0 476 | nlmenu.nl/images/&.gif,0,0 477 | nlmenu.nl/images/gonext.gif,0,0 478 | nlmenu.nl/images/homepagemenu.eng.gif,0,0 479 | nlmenu.nl/images/homepagemenu.gif,0,0 480 | nlmenu.nl/images/hoofdrubriekenrubrieken1.gif,0,0 481 | nlmenu.nl/images/http.gif,0,0 482 | nlmenu.nl/images/i.gif,0,0 483 | nlmenu.nl/images/info1.gif,0,0 484 | nlmenu.nl/images/info2.gif,0,0 485 | nlmenu.nl/images/intro1.gif,0,0 486 | nlmenu.nl/images/kap_a.gif,0,0 487 | nlmenu.nl/images/kap_b.gif,0,0 488 | nlmenu.nl/images/kap_c.gif,0,0 489 | nlmenu.nl/images/kap_d.gif,0,0 490 | nlmenu.nl/images/kap_e.gif,0,0 491 | nlmenu.nl/images/kap_f.gif,0,0 492 | nlmenu.nl/images/kap_g.gif,0,0 493 | nlmenu.nl/images/kap_h.gif,0,0 494 | nlmenu.nl/images/kap_i.gif,0,0 495 | nlmenu.nl/images/kap_j.gif,0,0 496 | nlmenu.nl/images/kap_k.gif,0,0 497 | nlmenu.nl/images/kap_l.gif,0,0 498 | nlmenu.nl/images/kap_m.gif,0,0 499 | nlmenu.nl/images/kap_n.gif,0,0 500 | nlmenu.nl/images/kap_o.gif,0,0 501 | nlmenu.nl/images/kap_p.gif,0,0 502 | nlmenu.nl/images/kap_q.gif,0,0 503 | nlmenu.nl/images/kap_r.gif,0,0 504 | nlmenu.nl/images/kap_s.gif,0,0 505 | nlmenu.nl/images/kap_t.gif,0,0 506 | nlmenu.nl/images/kap_u.gif,0,0 507 | nlmenu.nl/images/kap_v.gif,0,0 508 | nlmenu.nl/images/kap_w.gif,0,0 509 | nlmenu.nl/images/kap_x.gif,0,0 510 | nlmenu.nl/images/kap_y.gif,0,0 511 | nlmenu.nl/images/kap_z.gif,0,0 512 | nlmenu.nl/images/kblogo.gif,0,0 513 | nlmenu.nl/images/kbsurfnet_logo2.gif,0,0 514 | nlmenu.nl/images/kbsurfnet_logo2-old.gif,0,0 515 | nlmenu.nl/images/kerst.gif,0,0 516 | nlmenu.nl/images/kop_236.gif,0,0 517 | nlmenu.nl/images/kop_404.gif,0,0 518 | nlmenu.nl/images/kop_gastenboek.en.gif,1,0 519 | nlmenu.nl/images/kop_gastenboek.gif,14,0 520 | nlmenu.nl/images/kop_mailinglist.eng.gif,0,0 521 | nlmenu.nl/images/kop_pers.en.gif,0,0 522 | nlmenu.nl/images/kop_samenwerking.gif,0,0 523 | nlmenu.nl/images/kop_webwijzers.gif,0,0 524 | nlmenu.nl/images/kop_wegwijzers.eng.gif,0,0 525 | nlmenu.nl/images/kop_wegwijzers.gif,0,0 526 | nlmenu.nl/images/kop_wijzigen.eng.gif,0,0 527 | nlmenu.nl/images/kop_zoekresultaat.en.gif,0,0 528 | nlmenu.nl/images/kop_zoekresultaat.nl.gif,0,0 529 | nlmenu.nl/images/kunstcult2.gif,0,0 530 | nlmenu.nl/images/lijn3.gif,0,0 531 | nlmenu.nl/images/lijn4.gif,0,0 532 | nlmenu.nl/images/lijntje2.gif,0,0 533 | nlmenu.nl/images/logo_homepage1-new.gif,0,0 534 | nlmenu.nl/images/logohomepage2-new.gif,0,0 535 | nlmenu.nl/images/logohomepage.gif,0,0 536 | nlmenu.nl/images/logo_nl-menu2.gif,0,0 537 | nlmenu.nl/images/logo_nl-menu.gif,0,0 538 | nlmenu.nl/images/logo_nl-menu-test.gif,0,0 539 | nlmenu.nl/images/maillist2.gif,0,0 540 | nlmenu.nl/images/media2.gif,0,0 541 | nlmenu.nl/images/menu_anderewijzers.gif,0,0 542 | nlmenu.nl/images/menu_automatisering.gif,0,0 543 | nlmenu.nl/images/menu_bedrijfsleven.gif,0,0 544 | nlmenu.nl/images/menu_docu.gif,0,0 545 | nlmenu.nl/images/menu_gezondheid.gif,0,0 546 | nlmenu.nl/images/menu_kunst.gif,0,0 547 | nlmenu.nl/images/menu_nieuws.gif,0,0 548 | nlmenu.nl/images/menu_onderwijs.gif,0,0 549 | nlmenu.nl/images/menu_onderzoek.gif,0,0 550 | nlmenu.nl/images/menu_overheid.gif,0,0 551 | nlmenu.nl/images/menu_politiek.gif,0,0 552 | nlmenu.nl/images/menu_religie.gif,0,0 553 | nlmenu.nl/images/menu_vrijetijd.gif,0,0 554 | nlmenu.nl/images/menu_wetenschap.gif,0,0 555 | nlmenu.nl/images/nieuwerubrieken.eng.gif,0,0 556 | nlmenu.nl/images/nieuwinrubriek.eng.gif,0,0 557 | nlmenu.nl/images/nieuwinrubriek.gif,0,0 558 | nlmenu.nl/images/nl-new-en.gif,0,0 559 | nlmenu.nl/images/nl-new-nl.gif,0,0 560 | nlmenu.nl/images/onderwijs2.gif,0,0 561 | nlmenu.nl/images/onderzoek2.gif,0,0 562 | nlmenu.nl/images/overheid2.gif,0,0 563 | nlmenu.nl/images/pijlbeneden.gif,222,0 564 | nlmenu.nl/images/polsam2.gif,0,0 565 | nlmenu.nl/images/rechtermenu.gif,0,0 566 | nlmenu.nl/images/recreatie2.gif,0,0 567 | nlmenu.nl/images/regisbutton.gif,0,0 568 | nlmenu.nl/images/religie2.gif,0,0 569 | nlmenu.nl/images/rubriekensitesplaatsen.gif,0,0 570 | nlmenu.nl/images/streepje.gif,0,0 571 | nlmenu.nl/images/surfnetlogo2.gif,0,0 572 | nlmenu.nl/images/surfnetlogo3.gif,0,0 573 | nlmenu.nl/images/surfnetlogo.gif,0,0 574 | nlmenu.nl/images/uitleg2-old.gif,0,0 575 | nlmenu.nl/images/uitleg.eng2.GIF,0,0 576 | nlmenu.nl/images/uitleg.eng2-old.gif,0,0 577 | nlmenu.nl/images/uitleg.eng.gif,0,0 578 | nlmenu.nl/images/uitleg.gif,0,0 579 | nlmenu.nl/images/vlag.eng.gif,0,0 580 | nlmenu.nl/images/vlaggetje.gif,0,0 581 | nlmenu.nl/images/vlag.gif,0,0 582 | nlmenu.nl/images/vlag_home.eng.gif,0,0 583 | nlmenu.nl/images/wegwijzers.gif,0,0 584 | nlmenu.nl/images/wetenschap2.gif,0,0 585 | nlmenu.nl/images/ziekenhuis2.gif,0,0 586 | nlmenu.nl/images/zoek.gif,3,0 587 | nlmenu.nl/images/zoekhome.eng.gif,0,0 588 | nlmenu.nl/images/zoek_home.gif,0,0 589 | nlmenu.nl/images/zoekhome.gif,0,0 590 | nlmenu.nl/images/zoekpad.eng.gif,0,0 591 | nlmenu.nl/images/zoekpad.gif,0,0 592 | nlmenu.nl/images/zoekresultaat2.gif,0,0 593 | nlmenu.nl/new/1267.txt,0,0 594 | nlmenu.nl/new/224.txt,0,0 595 | nlmenu.nl/new/226.txt,0,0 596 | nlmenu.nl/new/227.txt,0,0 597 | nlmenu.nl/new/228.txt,0,0 598 | nlmenu.nl/new/232.txt,0,0 599 | nlmenu.nl/new/233.txt,0,0 600 | nlmenu.nl/new/236.txt,0,0 601 | nlmenu.nl/new/237.txt,0,0 602 | nlmenu.nl/new/238.txt,0,0 603 | nlmenu.nl/new/239.txt,0,0 604 | nlmenu.nl/new/245.txt,0,0 605 | nlmenu.nl/new/315.txt,0,0 606 | nlmenu.nl/new/433.txt,0,0 607 | nlmenu.nl/new/nieuw.txt,0,0 608 | nlmenu.nl/profiel/home.html,0,0 609 | nlmenu.nl/profiel/rapportage.html,0,0 610 | nlmenu.nl/profiel/reg.html,0,0 611 | nlmenu.nl/profiel/rubriek.html,0,0 612 | nlmenu.nl/profiel/toelichting.html,0,0 613 | nlmenu.nl/resources/marge.html,6,0 614 | nlmenu.nl/resources/old,0,0 615 | nlmenu.nl/resources/rechtermenu2.html,1,0 616 | nlmenu.nl/resources/scripts/overlib.js,0,0 617 | nlmenu.nl/sections/224/1071/1066/281/937/955.html,0,0 618 | nlmenu.nl/sections/224/1071/1066/281/937/956.html,0,0 619 | nlmenu.nl/sections/224/1080/1065/281/937/955.html,0,0 620 | nlmenu.nl/sections/224/1080/1065/281/937/956.html,0,0 621 | nlmenu.nl/sections/224/1080/1066/281/937/955.html,0,0 622 | nlmenu.nl/sections/224/1080/1066/281/937/956.html,0,0 623 | nlmenu.nl/sections/224/281/937/955.html,0,0 624 | nlmenu.nl/sections/224/281/937/956.html,0,0 625 | nlmenu.nl/sections/228/1046/1728.html,0,0 626 | nlmenu.nl/sections/233/1254/1727/1728.html,0,0 627 | nlmenu.nl/sections/233/825/1491/1727/1728.html,0,0 628 | nlmenu.nl/sections/236/1046/1728.html,0,0 629 | nlmenu.nl/sections/245/1187/1457/1463.html,0,0 630 | nlmenu.nl/sections/245/235/1022/1463.html,0,0 631 | nlmenu.nl/sections/245/347/832/1382.html,0,0 632 | nlmenu.nl/sections/315/1184/1768/1784.html,0,0 633 | nlmenu.nl/sections/315/1184/1787/1768/1784.html,0,0 634 | nlmenu.nl/sections/433/753/1787/1768/1784.html,0,0 635 | nlmenu.nl/sections/info/0.html,0,0 636 | nlmenu.nl/sections/info/-1.html,0,0 637 | nlmenu.nl/sections/info/-2.html,0,0 638 | nlmenu.nl/w3all/www_zt.html,0,0 639 | -------------------------------------------------------------------------------- /doc/diffdir.txt: -------------------------------------------------------------------------------- 1 | Only in /var/www/www.nl-menu.nl/nlmenu.en/admin: gastenboek 2 | Only in /var/www/www.nl-menu.nl/nlmenu.en/admin: nr-sects.txt 3 | Only in /var/www/www.nl-menu.nl/nlmenu.en/admin: nr-sites.txt 4 | Only in /var/www/www.nl-menu.nl/nlmenu.en/admin: old 5 | Only in /var/www/www.nl-menu.nl/nlmenu.en/admin: stat.html 6 | Only in /var/www/www.nl-menu.nl/nlmenu.en/admin: wensform1.html 7 | Only in /var/www/www.nl-menu.nl/nlmenu.en/admin: wensform.html 8 | Only in /var/www/www.nl-menu.nl/nlmenu.en/fset: admin.html 9 | Only in /var/www/www.nl-menu.nl/nlmenu.en/fset: frameset_zoekresultaten.html 10 | Only in /var/www/www.nl-menu.nl/nlmenu.en/fset: new.html 11 | Only in /var/www/www.nl-menu.nl/nlmenu.en/fset: nl_menuinfo.html 12 | Only in /var/www/www.nl-menu.nl/nlmenu.en/fset: provincie.html 13 | Only in /var/www/www.nl-menu.nl/nlmenu.en/geor: gem_536.html 14 | Only in /var/www/www.nl-menu.nl/nlmenu.en/geor: prov_13.html 15 | Only in /var/www/www.nl-menu.nl/nlmenu.en: home.html 16 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: aanmelden1.gif 17 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: aanmelden2.gif 18 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: achtergrond_boven.gif 19 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: achtergrond_boven_home.gif 20 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: achtergrond.gif 21 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: achtergrond_marge.gif 22 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: achtergrond_nieuw.gif 23 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: achtergrond_rechts.gif 24 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: achtergrond_tekst.gif 25 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: alfabet_a.gif 26 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: alfabet_b.gif 27 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: alfabet_c.gif 28 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: alfabet_d.gif 29 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: alfabet_e.gif 30 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: alfabet_f.gif 31 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: alfabet_g.gif 32 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: alfabet.gif 33 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: alfabet_h.gif 34 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: alfabet_i.gif 35 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: alfabet_j.gif 36 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: alfabet_k.gif 37 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: alfabet_klein_a.gif 38 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: alfabet_klein_b.gif 39 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: alfabet_klein_c.gif 40 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: alfabet_klein_d.gif 41 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: alfabet_klein_e.gif 42 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: alfabet_klein_f.gif 43 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: alfabet_klein_g.gif 44 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: alfabet_klein_&.gif 45 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: alfabet_klein.gif 46 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: alfabet_klein_h.gif 47 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: alfabet_klein_i.gif 48 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: alfabet_klein_j.gif 49 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: alfabet_klein_k.gif 50 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: alfabet_klein_l.gif 51 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: alfabet_klein_m.gif 52 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: alfabet_klein_n.gif 53 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: alfabet_klein_o.gif 54 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: alfabet_klein_p.gif 55 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: alfabet_klein_q.gif 56 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: alfabet_klein_r.gif 57 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: alfabet_klein_s.gif 58 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: alfabet_klein_t.gif 59 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: alfabet_klein_u.gif 60 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: alfabet_klein_v.gif 61 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: alfabet_klein_w.gif 62 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: alfabet_klein_x.gif 63 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: alfabet_klein_y.gif 64 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: alfabet_klein_z.gif 65 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: alfabet_l.gif 66 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: alfabet_m.gif 67 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: alfabet_n.gif 68 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: alfabet_o.gif 69 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: alfabet_p.gif 70 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: alfabet_plaatsen.eng.gif 71 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: alfabet_plaatsen.gif 72 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: alfabet_q.gif 73 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: alfabet_r.gif 74 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: alfabet_rubrieken.eng.gif 75 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: alfabet_rubrieken.gif 76 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: alfabet_s.gif 77 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: alfabet_sites.eng.gif 78 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: alfabet_sites.gif 79 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: alfabet_t.gif 80 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: alfabet_u.gif 81 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: alfabet_v.gif 82 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: alfabet_w.gif 83 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: alfabet_x.gif 84 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: alfabet_y.gif 85 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: alfabet_z.gif 86 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: alfabet_zonder.eng.gif 87 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: alfabet_zonder.gif 88 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: autointernet1.gif 89 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: autointernet2.gif 90 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: autoweg1.gif 91 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: autoweg2.gif 92 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: a-z.gif 93 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: a-z_home.gif 94 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: balkje.gif 95 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: bedrijfsleven1a.gif 96 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: bedrijfsleven2a.gif 97 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: bedrijfsleven2.gif 98 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: bullet.gif 99 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: computer2.gif 100 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: Copy of kbsurfnet_logo.gif 101 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: docinfo2.gif 102 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: document-ibut.gif 103 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: documenticoon.gif 104 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: egel.tif 105 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: externe.eng.gif 106 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: externe.gif 107 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: file_id.diz 108 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: gastenboek1.gif 109 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: gastenboek2.gif 110 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: gerelateerde.eng.gif 111 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: gerelateerde.gif 112 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: &.gif 113 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: gonext.gif 114 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: guests.html 115 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: handig2.gif 116 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: homepagemenu.eng.gif 117 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: homepagemenu.gif 118 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: hoofdrubriekenrubrieken1.gif 119 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: i.gif 120 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: ii.gif 121 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: info1.gif 122 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: info2.gif 123 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: intro1.gif 124 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: intro2.gif 125 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: kap_a.gif 126 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: kap_b.gif 127 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: kap_c.gif 128 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: kap_d.gif 129 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: kap_e.gif 130 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: kap_f.gif 131 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: kap_g.gif 132 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: kap_h.gif 133 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: kap_i.gif 134 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: kap_j.gif 135 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: kap_k.gif 136 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: kap_l.gif 137 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: kap_m.gif 138 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: kap_n.gif 139 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: kap_o.gif 140 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: kap_p.gif 141 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: kap_q.gif 142 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: kap_r.gif 143 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: kap_s.gif 144 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: kap_t.gif 145 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: kap_u.gif 146 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: kap_v.gif 147 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: kap_w.gif 148 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: kap_x.gif 149 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: kap_y.gif 150 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: kap_z.gif 151 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: kblogo.gif 152 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: kbsurfnet_logo2.gif 153 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: kbsurfnet_logo.gif 154 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: kop_224.en.gif 155 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: kop_224.gif 156 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: kop_226.en.gif 157 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: kop_226.gif 158 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: kop_227.en.gif 159 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: kop_227.gif 160 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: kop_228.en.gif 161 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: kop_228.gif 162 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: kop_232.en.gif 163 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: kop_232.gif 164 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: kop_233.en.gif 165 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: kop_233.gif 166 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: kop_236.en.gif 167 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: kop_236.gif 168 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: kop_237.en.gif 169 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: kop_237.gif 170 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: kop_238.en.gif 171 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: kop_238.gif 172 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: kop_239.gif 173 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: kop_245.en.gif 174 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: kop_245.gif 175 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: kop_315.en.gif 176 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: kop_315.gif 177 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: kop_404.gif 178 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: kop_433.en.gif 179 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: kop_433.gif 180 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: kop_aanmelden.eng.gif 181 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: kop_aanmelden.gif 182 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: kop_email.gif 183 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: kop_gastenboek.eng.gif 184 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: kop_gastenboek.gif 185 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: kop_gemeenten.en.gif 186 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: kop_gemeenten.nl.gif 187 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: kop_handig.eng.gif 188 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: kop_handig.gif 189 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: kop_intro.eng.gif 190 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: kop_intro.gif 191 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: kop_mailinglist.eng.gif 192 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: kop_mailinglist.gif 193 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: kop_nieuwdezeweek.eng.gif 194 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: kop_nieuwdezeweek.gif 195 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: kop_plaatsenaz.eng.gif 196 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: kop_plaatsenaz.gif 197 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: kop_provincies.en.gif 198 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: kop_provincies.nl.gif 199 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: kop_religie.eng.gif 200 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: kop_rubriekenaz.eng.gif 201 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: kop_rubriekenaz.gif 202 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: kop_sitesaz.eng.gif 203 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: kop_sitesaz.gif 204 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: kop_webwijzers.gif 205 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: kop_wegwijzers.eng.gif 206 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: kop_wegwijzers.gif 207 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: kop_wijzigen.eng.gif 208 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: kop_wijzigen.gif 209 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: kop_zoekresultaat.eng.gif 210 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: kop_zoekresultaat.gif 211 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: kunstcult2.gif 212 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: lijn3.gif 213 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: lijn4.gif 214 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: lijntje2.gif 215 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: lijntje3.gif 216 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: lijntje.gif 217 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: logo.gif 218 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: logo_homepage1-new.gif 219 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: logohomepage2-new.gif 220 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: logohomepage.gif 221 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: logo_nl-menu2.gif 222 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: logo_nl-menu.gif 223 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: logo_nl-menu-test.gif 224 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: maillist1.gif 225 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: maillist2.gif 226 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: media2.gif 227 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: menu_anderewijzers.gif 228 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: menu_automatisering.gif 229 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: menu_bedrijfsleven.gif 230 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: menu_docu.gif 231 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: menu_gezondheid.gif 232 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: menu_kunst.gif 233 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: menu_nieuws.gif 234 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: menu_onderwijs.gif 235 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: menu_onderzoek.gif 236 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: menu_overheid.gif 237 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: menu_politiek.gif 238 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: menu_religie.gif 239 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: menu_vrijetijd.gif 240 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: menu_wetenschap.gif 241 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: mriek2.psd 242 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: mriek.psd 243 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: nieuwerubrieken.gif 244 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: nieuwinrubriek.eng.gif 245 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: nieuwinrubriek.gif 246 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: nl-new-nl.gif 247 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: onderwijs2.gif 248 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: onderzoek2.gif 249 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: overheid2.gif 250 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: pijlbeneden.gif 251 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: pijlrechts.gif 252 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: polsam2.gif 253 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: rechtermenu.gif 254 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: recreatie2.gif 255 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: registratieknop.gif 256 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: religie2.gif 257 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: rubriekensitesplaatsen.gif 258 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: streepje.gif 259 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: surfnetlogo2.gif 260 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: surfnetlogo3.gif 261 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: surfnetlogo.gif 262 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: thumb1_224.gif 263 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: thumb1_226.gif 264 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: thumb1_227.gif 265 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: thumb1_228.gif 266 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: thumb1_232.gif 267 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: thumb1_233.gif 268 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: thumb1_236.gif 269 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: thumb1_237.gif 270 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: thumb1_238.gif 271 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: thumb1_239.gif 272 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: thumb1_245.gif 273 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: thumb1_315.gif 274 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: thumb1_433.gif 275 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: uitleg2.gif 276 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: uitleg.eng.gif 277 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: uitleg.gif 278 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: vlag.eng.gif 279 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: vlaggetje.gif 280 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: vlag.gif 281 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: vlag_home.gif 282 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: wegwijzers.gif 283 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: wetenschap2.gif 284 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: ziekenhuis2.gif 285 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: zoek.eng+.gif 286 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: zoeken+.gif 287 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: zoek.gif 288 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: zoekhome.eng.gif 289 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: zoekhome.gif 290 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: zoekpad.eng.gif 291 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: zoekpad.gif 292 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: zoekresultaat1.gif 293 | Only in /var/www/www.nl-menu.nl/nlmenu.en/images: zoekresultaat2.gif 294 | Only in /var/www/www.nl-menu.nl/nlmenu.en/new: 1267.txt 295 | Only in /var/www/www.nl-menu.nl/nlmenu.en/new: 224.txt 296 | Only in /var/www/www.nl-menu.nl/nlmenu.en/new: 226.txt 297 | Only in /var/www/www.nl-menu.nl/nlmenu.en/new: 227.txt 298 | Only in /var/www/www.nl-menu.nl/nlmenu.en/new: 228.txt 299 | Only in /var/www/www.nl-menu.nl/nlmenu.en/new: 232.txt 300 | Only in /var/www/www.nl-menu.nl/nlmenu.en/new: 233.txt 301 | Only in /var/www/www.nl-menu.nl/nlmenu.en/new: 236.txt 302 | Only in /var/www/www.nl-menu.nl/nlmenu.en/new: 237.txt 303 | Only in /var/www/www.nl-menu.nl/nlmenu.en/new: 238.txt 304 | Only in /var/www/www.nl-menu.nl/nlmenu.en/new: 239.txt 305 | Only in /var/www/www.nl-menu.nl/nlmenu.en/new: 245.txt 306 | Only in /var/www/www.nl-menu.nl/nlmenu.en/new: 315.txt 307 | Only in /var/www/www.nl-menu.nl/nlmenu.en/new: 433.txt 308 | Only in /var/www/www.nl-menu.nl/nlmenu.en/new: nieuw.txt 309 | Only in /var/www/www.nl-menu.nl/nlmenu.en: profiel 310 | Only in /var/www/www.nl-menu.nl/nlmenu.en/resources: alfabet_provincies.html 311 | Only in /var/www/www.nl-menu.nl/nlmenu.en/resources: old 312 | Only in /var/www/www.nl-menu.nl/nlmenu.en/sections/224/1071/1066/281/937: 955.html 313 | Only in /var/www/www.nl-menu.nl/nlmenu.en/sections/224/1071/1066/281/937: 956.html 314 | Only in /var/www/www.nl-menu.nl/nlmenu.en/sections/224/1080/1065/281/937: 955.html 315 | Only in /var/www/www.nl-menu.nl/nlmenu.en/sections/224/1080/1065/281/937: 956.html 316 | Only in /var/www/www.nl-menu.nl/nlmenu.en/sections/224/1080/1066/281/937: 955.html 317 | Only in /var/www/www.nl-menu.nl/nlmenu.en/sections/224/1080/1066/281/937: 956.html 318 | Only in /var/www/www.nl-menu.nl/nlmenu.en/sections/224/281/937: 955.html 319 | Only in /var/www/www.nl-menu.nl/nlmenu.en/sections/224/281/937: 956.html 320 | Only in /var/www/www.nl-menu.nl/nlmenu.en/sections/228/1046: 1728.html 321 | Only in /var/www/www.nl-menu.nl/nlmenu.en/sections/233/1254/1727: 1728.html 322 | Only in /var/www/www.nl-menu.nl/nlmenu.en/sections/233/825/1491/1727: 1728.html 323 | Only in /var/www/www.nl-menu.nl/nlmenu.en/sections/236/1046: 1728.html 324 | Only in /var/www/www.nl-menu.nl/nlmenu.en/sections/245/1187/1457: 1463.html 325 | Only in /var/www/www.nl-menu.nl/nlmenu.en/sections/245/235/1022: 1463.html 326 | Only in /var/www/www.nl-menu.nl/nlmenu.en/sections/245/347/832: 1382.html 327 | Only in /var/www/www.nl-menu.nl/nlmenu.en/sections/315/1184/1768: 1784.html 328 | Only in /var/www/www.nl-menu.nl/nlmenu.en/sections/315/1184/1787/1768: 1784.html 329 | Only in /var/www/www.nl-menu.nl/nlmenu.en/sections/433/753/1787/1768: 1784.html 330 | Only in /var/www/www.nl-menu.nl/nlmenu.en/sections/info: 0.html 331 | Only in /var/www/www.nl-menu.nl/nlmenu.en/sections/info: -1.html 332 | Only in /var/www/www.nl-menu.nl/nlmenu.en/sections/info: -2.html 333 | Only in /var/www/www.nl-menu.nl/nlmenu.en/w3all: www_zv.html 334 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/admin: aanmeldstop.html 335 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/admin: allurls.txt 336 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/admin: fonts 337 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/admin: gastenboek 338 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/admin: home.html 339 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/admin: LEESMIJ 340 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/admin: mailing-old.html 341 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/admin: mail_list.html 342 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/admin: nlinfo.html 343 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/admin: nl-m.dmp 344 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/admin: nlmenu-cities.lst 345 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/admin: nr-sects.txt 346 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/admin: nr-sites.txt 347 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/admin: old 348 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/admin: opdracht_verzonden.html 349 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/admin: styles_nlmenu.css 350 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/admin: styles_nlmenuhome.css 351 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/admin: testmailing.html 352 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/admin: urls.txt 353 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/fset: 404.html 354 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/fset: admin2.html 355 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/fset: admin.html 356 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/fset: e-mail.html 357 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/fset: gastenboek.html 358 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/fset: home.html 359 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/fset: mailinglist.html 360 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/fset: new.html 361 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/fset: webwijzers.html 362 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/geor: gem_536.html 363 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/geor: prov_13.html 364 | Only in /var/www/www.nl-menu.nl/nlmenu.nl: home.html 365 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: 404.gif 366 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: aanmelden2.gif 367 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: achtergrond_boven.gif 368 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: achtergrond_marge.gif 369 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: achtergrond_nieuw.gif 370 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: alfabet_a.gif 371 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: alfabet_bgeo.gif 372 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: alfabet_b.gif 373 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: alfabet_cgeo.gif 374 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: alfabet_c.gif 375 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: alfabet_dgeo.gif 376 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: alfabet_d.gif 377 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: alfabet_egeo.gif 378 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: alfabet_e.gif 379 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: alfabet_fgeo.gif 380 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: alfabet_f.gif 381 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: alfabet_ggeo.gif 382 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: alfabet_g.gif 383 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: alfabet.gif 384 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: alfabet_hgeo.gif 385 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: alfabet_h.gif 386 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: alfabet_igeo.gif 387 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: alfabet_i.gif 388 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: alfabet_jgeo.gif 389 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: alfabet_j.gif 390 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: alfabet_kgeo.gif 391 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: alfabet_k.gif 392 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: alfabet_klein_a.gif 393 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: alfabet_klein_b.gif 394 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: alfabet_klein_c.gif 395 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: alfabet_klein_d.gif 396 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: alfabet_klein_e.gif 397 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: alfabet_klein_f.gif 398 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: alfabet_klein_g.gif 399 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: alfabet_klein_&.gif 400 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: alfabet_klein.gif 401 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: alfabet_klein_h.gif 402 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: alfabet_klein_i.gif 403 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: alfabet_klein_j.gif 404 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: alfabet_klein_k.gif 405 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: alfabet_klein_l.gif 406 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: alfabet_klein_m.gif 407 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: alfabet_klein_n.gif 408 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: alfabet_klein_o.gif 409 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: alfabet_klein_p.gif 410 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: alfabet_klein_q.gif 411 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: alfabet_klein_r.gif 412 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: alfabet_klein_s.gif 413 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: alfabet_klein_t.gif 414 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: alfabet_klein_u.gif 415 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: alfabet_klein_v.gif 416 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: alfabet_klein_w.gif 417 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: alfabet_klein_x.gif 418 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: alfabet_klein_y.gif 419 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: alfabet_klein_z.gif 420 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: alfabet_lgeo.gif 421 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: alfabet_l.gif 422 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: alfabet_mgeo.gif 423 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: alfabet_m.gif 424 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: alfabet_ngeo.gif 425 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: alfabet_n.gif 426 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: alfabet_ogeo.gif 427 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: alfabet_o.gif 428 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: alfabet_pgeo.gif 429 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: alfabet_p.gif 430 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: alfabet_plaatsen.eng.gif 431 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: alfabet_plaatsen.gif 432 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: alfabet_qgeo.gif 433 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: alfabet_q.gif 434 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: alfabet_rgeo.gif 435 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: alfabet_r.gif 436 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: alfabet_rubrieken.eng.gif 437 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: alfabet_rubrieken.gif 438 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: alfabet_sgeo.gif 439 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: alfabet_s.gif 440 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: alfabet_sites.eng.gif 441 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: alfabet_sites.gif 442 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: alfabet_tgeo.gif 443 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: alfabet_t.gif 444 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: alfabet_ugeo.gif 445 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: alfabet_u.gif 446 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: alfabet_vgeo.gif 447 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: alfabet_v.gif 448 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: alfabet_wgeo.gif 449 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: alfabet_w.gif 450 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: alfabet_xgeo.gif 451 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: alfabet_x.gif 452 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: alfabet_ygeo.gif 453 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: alfabet_y.gif 454 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: alfabet_zgeo.gif 455 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: alfabet_z.gif 456 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: alfabet_zonder.eng.gif 457 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: alfabet_zonder.gif 458 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: autointernet1.gif 459 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: autointernet2.gif 460 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: autoweg1.gif 461 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: autoweg2.gif 462 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: bedrijfsleven1a.gif 463 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: bedrijfsleven2a.gif 464 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: bedrijfsleven2.gif 465 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: computer2.gif 466 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: Copy of kbsurfnet_logo.gif 467 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: docinfo2.gif 468 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: externe.eng.gif 469 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: externe.gif 470 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: favicon.ico 471 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: gastenboek1.gif 472 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: gastenboek2.gif 473 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: gerelateerde.eng.gif 474 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: gerelateerde.gif 475 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: &.gif 476 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: gonext.gif 477 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: homepagemenu.eng.gif 478 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: homepagemenu.gif 479 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: hoofdrubriekenrubrieken1.gif 480 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: http.gif 481 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: i.gif 482 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: info1.gif 483 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: info2.gif 484 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: intro1.gif 485 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: kap_a.gif 486 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: kap_b.gif 487 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: kap_c.gif 488 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: kap_d.gif 489 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: kap_e.gif 490 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: kap_f.gif 491 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: kap_g.gif 492 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: kap_h.gif 493 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: kap_i.gif 494 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: kap_j.gif 495 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: kap_k.gif 496 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: kap_l.gif 497 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: kap_m.gif 498 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: kap_n.gif 499 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: kap_o.gif 500 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: kap_p.gif 501 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: kap_q.gif 502 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: kap_r.gif 503 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: kap_s.gif 504 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: kap_t.gif 505 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: kap_u.gif 506 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: kap_v.gif 507 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: kap_w.gif 508 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: kap_x.gif 509 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: kap_y.gif 510 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: kap_z.gif 511 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: kblogo.gif 512 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: kbsurfnet_logo2.gif 513 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: kbsurfnet_logo2-old.gif 514 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: kerst.gif 515 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: kop_236.gif 516 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: kop_404.gif 517 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: kop_gastenboek.en.gif 518 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: kop_gastenboek.gif 519 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: kop_mailinglist.eng.gif 520 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: kop_pers.en.gif 521 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: kop_samenwerking.gif 522 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: kop_webwijzers.gif 523 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: kop_wegwijzers.eng.gif 524 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: kop_wegwijzers.gif 525 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: kop_wijzigen.eng.gif 526 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: kop_zoekresultaat.en.gif 527 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: kop_zoekresultaat.nl.gif 528 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: kunstcult2.gif 529 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: lijn3.gif 530 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: lijn4.gif 531 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: lijntje2.gif 532 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: logo_homepage1-new.gif 533 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: logohomepage2-new.gif 534 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: logohomepage.gif 535 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: logo_nl-menu2.gif 536 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: logo_nl-menu.gif 537 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: logo_nl-menu-test.gif 538 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: maillist2.gif 539 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: media2.gif 540 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: menu_anderewijzers.gif 541 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: menu_automatisering.gif 542 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: menu_bedrijfsleven.gif 543 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: menu_docu.gif 544 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: menu_gezondheid.gif 545 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: menu_kunst.gif 546 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: menu_nieuws.gif 547 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: menu_onderwijs.gif 548 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: menu_onderzoek.gif 549 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: menu_overheid.gif 550 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: menu_politiek.gif 551 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: menu_religie.gif 552 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: menu_vrijetijd.gif 553 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: menu_wetenschap.gif 554 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: nieuwerubrieken.eng.gif 555 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: nieuwinrubriek.eng.gif 556 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: nieuwinrubriek.gif 557 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: nl-new-en.gif 558 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: nl-new-nl.gif 559 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: onderwijs2.gif 560 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: onderzoek2.gif 561 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: overheid2.gif 562 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: pijlbeneden.gif 563 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: polsam2.gif 564 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: rechtermenu.gif 565 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: recreatie2.gif 566 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: regisbutton.gif 567 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: religie2.gif 568 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: rubriekensitesplaatsen.gif 569 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: streepje.gif 570 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: surfnetlogo2.gif 571 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: surfnetlogo3.gif 572 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: surfnetlogo.gif 573 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: uitleg2-old.gif 574 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: uitleg.eng2.GIF 575 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: uitleg.eng2-old.gif 576 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: uitleg.eng.gif 577 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: uitleg.gif 578 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: vlag.eng.gif 579 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: vlaggetje.gif 580 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: vlag.gif 581 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: vlag_home.eng.gif 582 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: wegwijzers.gif 583 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: wetenschap2.gif 584 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: ziekenhuis2.gif 585 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: zoek.gif 586 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: zoekhome.eng.gif 587 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: zoek_home.gif 588 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: zoekhome.gif 589 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: zoekpad.eng.gif 590 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: zoekpad.gif 591 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/images: zoekresultaat2.gif 592 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/new: 1267.txt 593 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/new: 224.txt 594 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/new: 226.txt 595 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/new: 227.txt 596 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/new: 228.txt 597 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/new: 232.txt 598 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/new: 233.txt 599 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/new: 236.txt 600 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/new: 237.txt 601 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/new: 238.txt 602 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/new: 239.txt 603 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/new: 245.txt 604 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/new: 315.txt 605 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/new: 433.txt 606 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/new: nieuw.txt 607 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/profiel: home.html 608 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/profiel: rapportage.html 609 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/profiel: reg.html 610 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/profiel: rubriek.html 611 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/profiel: toelichting.html 612 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/resources: marge.html 613 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/resources: old 614 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/resources: rechtermenu2.html 615 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/resources/scripts: overlib.js 616 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/sections/224/1071/1066/281/937: 955.html 617 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/sections/224/1071/1066/281/937: 956.html 618 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/sections/224/1080/1065/281/937: 955.html 619 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/sections/224/1080/1065/281/937: 956.html 620 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/sections/224/1080/1066/281/937: 955.html 621 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/sections/224/1080/1066/281/937: 956.html 622 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/sections/224/281/937: 955.html 623 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/sections/224/281/937: 956.html 624 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/sections/228/1046: 1728.html 625 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/sections/233/1254/1727: 1728.html 626 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/sections/233/825/1491/1727: 1728.html 627 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/sections/236/1046: 1728.html 628 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/sections/245/1187/1457: 1463.html 629 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/sections/245/235/1022: 1463.html 630 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/sections/245/347/832: 1382.html 631 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/sections/315/1184/1768: 1784.html 632 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/sections/315/1184/1787/1768: 1784.html 633 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/sections/433/753/1787/1768: 1784.html 634 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/sections/info: 0.html 635 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/sections/info: -1.html 636 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/sections/info: -2.html 637 | Only in /var/www/www.nl-menu.nl/nlmenu.nl/w3all: www_zt.html 638 | --------------------------------------------------------------------------------