[.htaccess]ErrorDocument blijkt niet te werken

Pagina: 1
Acties:

  • mithras
  • Registratie: Maart 2003
  • Niet online
Ik zit met een probleempje met het toevoegen van de ErrorDocument optie in mijn .htaccess. Ik stuur een 404 header (die is goed, gecontroleerd met LiveHeaders). Vervolgens zie ik een witte pagina.

Mijn .htaccess was in eerste instantie als volgt:
php_flag display_errors off
php_value error_reporting 1023^8
AddDefaultCharset utf8

RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
Hiermee stuur ik dus alle url's door naar index en kan ik ze daar uitlezen en afhankelijk van de url een pagina voorschotelen. Ik heb hierop boven de RewriteEngine een ErrorDocument toegevoegd:
ErrorDocument 404 /error/404
Ook zonder headingslash ('error/404') en alvast met de index.php ervoor ('index.php/error/404' en '/index.php/error/404'). Toch blijft het niet werken en houd ik mijn lege pagina.
Als ik met de hand naar /error/404 ga krijg ik een nette pagina voorgeschoteld, daar ligt het probleem dus niet.

Als ik in plaats van een locatie (/error/404) een bericht opgeef ("Help, pagina niet gevonden!"), blijf ik een leeg document zien. Dat betekent eerder dat er iets met Apache2 of ErrorDocument mis is, dan dat er iets mis is met de rewriterule van de pagina. Als ik in de log kijk, zie ik niet iets heel vreemds:
cms.localhost:80 127.0.0.1 - - [19/Nov/2008:15:44:36 +0100] "GET /nl/adasd HTTP/1.1" 404 20 "-" "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.3) Gecko/2008101315 Ubuntu/8.10 (intrepid) Firefox/3.0.1"
Ik draai Apache2 versie 2.2.9.

Heeft iemand een idee over hoe ik dit kan oplossen :?

  • Y0ur1
  • Registratie: Oktober 2000
  • Niet online
Staat je AllowOverride in Apache goed?

Verwijderd

RewriteLog aanzetten en kijken wat er gebeurt.

  • mithras
  • Registratie: Maart 2003
  • Niet online
Ik heb mijn site config veranderd naar het volgende, maar ik krijg niet wat ik wil:
NameVirtualHost *:80

<VirtualHost *:80>
 ServerName cms.localhost
 DocumentRoot /var/www/cms
 RewriteLog "/var/log/apache2/rewrite.log"
 <Directory /var/www/cms>
  AllowOverride All
 </Directory>
</VirtualHost>
Zo werkt met de AllowOverride All optie de ErrorDocument nog niet (wel een goede tip though). Als ik nu kijk wat er in /var/log/apache2/rewrite.log staat, bestaat het bestand wel maar is hij leeg :? Wordt er überhaupt dan wel iets gelogged?

  • mithras
  • Registratie: Maart 2003
  • Niet online
Niemand? :'(

/damn-ik-ben-een-noob-met-apache

Verwijderd

Het zou helpen als je de documentatie las. Zie de RewriteLogLevel directive.

  • mithras
  • Registratie: Maart 2003
  • Niet online
Goed, het probleem heeft een tijd stil gelegen, maar ik loop er nog steeds mee. Ik heb wel de RewriteLog aangezet en op level 9 (maximum) krijg ik de volgende output:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
127.0.0.1 - - [04/Jan/2009:21:52:31 +0100] [cms.localhost/sid#b9f9a898][rid#ba137d48/initial] (3) [perdir /var/www/cms/] add path info postfix: /var/www/cms/nl -> /var/www/cms/nl/asdasd
127.0.0.1 - - [04/Jan/2009:21:52:31 +0100] [cms.localhost/sid#b9f9a898][rid#ba137d48/initial] (3) [perdir /var/www/cms/] strip per-dir prefix: /var/www/cms/nl/asdasd -> nl/asdasd
127.0.0.1 - - [04/Jan/2009:21:52:31 +0100] [cms.localhost/sid#b9f9a898][rid#ba137d48/initial] (3) [perdir /var/www/cms/] applying pattern '^(.*)$' to uri 'nl/asdasd'
127.0.0.1 - - [04/Jan/2009:21:52:31 +0100] [cms.localhost/sid#b9f9a898][rid#ba137d48/initial] (4) [perdir /var/www/cms/] RewriteCond: input='/var/www/cms/nl' pattern='!-f' => matched
127.0.0.1 - - [04/Jan/2009:21:52:31 +0100] [cms.localhost/sid#b9f9a898][rid#ba137d48/initial] (4) [perdir /var/www/cms/] RewriteCond: input='/var/www/cms/nl' pattern='!-d' => matched
127.0.0.1 - - [04/Jan/2009:21:52:31 +0100] [cms.localhost/sid#b9f9a898][rid#ba137d48/initial] (2) [perdir /var/www/cms/] rewrite 'nl/asdasd' -> 'index.php/nl/asdasd'
127.0.0.1 - - [04/Jan/2009:21:52:31 +0100] [cms.localhost/sid#b9f9a898][rid#ba137d48/initial] (3) [perdir /var/www/cms/] add per-dir prefix: index.php/nl/asdasd -> /var/www/cms/index.php/nl/asdasd
127.0.0.1 - - [04/Jan/2009:21:52:31 +0100] [cms.localhost/sid#b9f9a898][rid#ba137d48/initial] (2) [perdir /var/www/cms/] trying to replace prefix /var/www/cms/ with /
127.0.0.1 - - [04/Jan/2009:21:52:31 +0100] [cms.localhost/sid#b9f9a898][rid#ba137d48/initial] (5) strip matching prefix: /var/www/cms/index.php/nl/asdasd -> index.php/nl/asdasd
127.0.0.1 - - [04/Jan/2009:21:52:31 +0100] [cms.localhost/sid#b9f9a898][rid#ba137d48/initial] (4) add subst prefix: index.php/nl/asdasd -> /index.php/nl/asdasd
127.0.0.1 - - [04/Jan/2009:21:52:31 +0100] [cms.localhost/sid#b9f9a898][rid#ba137d48/initial] (1) [perdir /var/www/cms/] internal redirect with /index.php/nl/asdasd [INTERNAL REDIRECT]
127.0.0.1 - - [04/Jan/2009:21:52:31 +0100] [cms.localhost/sid#b9f9a898][rid#ba140dd8/initial/redir#1] (3) [perdir /var/www/cms/] add path info postfix: /var/www/cms/index.php -> /var/www/cms/index.php/nl/asdasd
127.0.0.1 - - [04/Jan/2009:21:52:31 +0100] [cms.localhost/sid#b9f9a898][rid#ba140dd8/initial/redir#1] (3) [perdir /var/www/cms/] strip per-dir prefix: /var/www/cms/index.php/nl/asdasd -> index.php/nl/asdasd
127.0.0.1 - - [04/Jan/2009:21:52:31 +0100] [cms.localhost/sid#b9f9a898][rid#ba140dd8/initial/redir#1] (3) [perdir /var/www/cms/] applying pattern '^(.*)$' to uri 'index.php/nl/asdasd'
127.0.0.1 - - [04/Jan/2009:21:52:31 +0100] [cms.localhost/sid#b9f9a898][rid#ba140dd8/initial/redir#1] (4) [perdir /var/www/cms/] RewriteCond: input='/var/www/cms/index.php' pattern='!-f' => not-matched
127.0.0.1 - - [04/Jan/2009:21:52:31 +0100] [cms.localhost/sid#b9f9a898][rid#ba140dd8/initial/redir#1] (1) [perdir /var/www/cms/] pass through /var/www/cms/index.php
127.0.0.1 - - [04/Jan/2009:21:52:31 +0100] [cms.localhost/sid#b9f9a898][rid#ba142ed0/subreq] (3) [perdir /var/www/cms/] add path info postfix: /var/www/cms/nl -> /var/www/cms/nl/asdasd
127.0.0.1 - - [04/Jan/2009:21:52:31 +0100] [cms.localhost/sid#b9f9a898][rid#ba142ed0/subreq] (3) [perdir /var/www/cms/] strip per-dir prefix: /var/www/cms/nl/asdasd -> nl/asdasd
127.0.0.1 - - [04/Jan/2009:21:52:31 +0100] [cms.localhost/sid#b9f9a898][rid#ba142ed0/subreq] (3) [perdir /var/www/cms/] applying pattern '^(.*)$' to uri 'nl/asdasd'
127.0.0.1 - - [04/Jan/2009:21:52:31 +0100] [cms.localhost/sid#b9f9a898][rid#ba142ed0/subreq] (4) [perdir /var/www/cms/] RewriteCond: input='/var/www/cms/nl' pattern='!-f' => matched
127.0.0.1 - - [04/Jan/2009:21:52:31 +0100] [cms.localhost/sid#b9f9a898][rid#ba142ed0/subreq] (4) [perdir /var/www/cms/] RewriteCond: input='/var/www/cms/nl' pattern='!-d' => matched
127.0.0.1 - - [04/Jan/2009:21:52:31 +0100] [cms.localhost/sid#b9f9a898][rid#ba142ed0/subreq] (2) [perdir /var/www/cms/] rewrite 'nl/asdasd' -> 'index.php/nl/asdasd'
127.0.0.1 - - [04/Jan/2009:21:52:31 +0100] [cms.localhost/sid#b9f9a898][rid#ba142ed0/subreq] (3) [perdir /var/www/cms/] add per-dir prefix: index.php/nl/asdasd -> /var/www/cms/index.php/nl/asdasd
127.0.0.1 - - [04/Jan/2009:21:52:31 +0100] [cms.localhost/sid#b9f9a898][rid#ba142ed0/subreq] (2) [perdir /var/www/cms/] trying to replace prefix /var/www/cms/ with /
127.0.0.1 - - [04/Jan/2009:21:52:31 +0100] [cms.localhost/sid#b9f9a898][rid#ba142ed0/subreq] (5) strip matching prefix: /var/www/cms/index.php/nl/asdasd -> index.php/nl/asdasd
127.0.0.1 - - [04/Jan/2009:21:52:31 +0100] [cms.localhost/sid#b9f9a898][rid#ba142ed0/subreq] (4) add subst prefix: index.php/nl/asdasd -> /index.php/nl/asdasd
127.0.0.1 - - [04/Jan/2009:21:52:31 +0100] [cms.localhost/sid#b9f9a898][rid#ba142ed0/subreq] (1) [perdir /var/www/cms/] internal redirect with /index.php/nl/asdasd [INTERNAL REDIRECT]
Ik zie dus een aantal keer het standaard "matchen" van uri's naar index.php als in het laatste gedeelte van mijn .htaccess. Maar het matchen met mijn ErrorDocument rule zie ik toch nergens staan. Ik krijg wel de juiste headers binnen (volgens mij):
HTTP/1.1 404 Not Found
Date: Sun, 04 Jan 2009 20:52:31 GMT
Server: Apache/2.2.9 (Ubuntu) PHP/5.2.6-2ubuntu4 with Suhosin-Patch
X-Powered-By: PHP/5.2.6-2ubuntu4
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 20
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Content-Type: text/html; charset=utf8
Iemand met een goede suggestie? :)
Pagina: 1