Toon posts:

[php] 404 error afvangen

Pagina: 1
Acties:
  • 126 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Hoi, ik ben bezig met een scriptje om 404 die worden gegenereerd af te vangen door te vergelijken met wel bestaande pagina's en ze automatisch door te sturen naar de pagina die ze moeten hebben.

Nu is dat op zich wel gelukt, maar het meest essentiële, namelijk erachter komen op welke url de fout wordt gegenereerd wil nog niet lukken.

Het leek mij logisch dat het met de predefined var $REQUEST_URI in combinatie met $QUERY_STRING kon. Hij geeft wel die informatie, maar dan over de pagina die het geheel moet verwerken, namelijk forward.php. Dus hij poept netjes uit /v2/forward.php, maar ik wil natuurlijk dat hij zoiets laat zijn /v2/page-die.niet?echt=bestaat.

Ligt dat aan de instellingen van de server (in de adres-balk staat nl. ook al meteen forward.php) of kan je het via danwel PHP danwel .htaccess toch nog te weten komen?

Bij voorbaat dank!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

In de apache documentatie is te vinden dat het om de vars:
$REDIRECT_URL en $REDIRECT_STATUS gaat

http://httpd.apache.org/docs/custom-error.html

  • TheDane
  • Registratie: Oktober 2000
  • Laatst online: 05-09 15:27

TheDane

1.618

$_SERVER[REQUEST_URI];

is wat je wil hebben volgens mij

[no spam]
volgens mij wil je zoiets als dit hebben:

http://www.high-teck.com/bestaatniet.html
[/no spam]

damn typo's

Verwijderd

Topicstarter
ACM schreef best wel nuttige dingen:
[..]

Bedankt, maareh, die zijn best wel heel erg helemaal leeg bij mij.

FF wat code smijten :)

.htaccess
code:
1
2
3
ErrorDocument 401 http://www.web-con.nl/v2/forward.php
ErrorDocument 404 http://www.web-con.nl/v2/forward.php
ErrorDocument 500 http://www.web-con.nl/v2/forward.php

forward.php
PHP:
1
<?//echo "Kijk, ik werk :) <br \>";echo $REDIRECT_URL;echo $REDIRECT_STATUS;?>

En als laatste: see for yourself:
http://www.web-con.nl/v2/page-die.niet?echt=bestaat

Verwijderd

Topicstarter
Op maandag 17 juni 2002 14:20 schreef TheDane het volgende:
..
Ook dit levert als output 'forward.php' en niet het bestand dat daardwerkelijk gemist wordt.

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Eigenlijk moet je de $_SERVER['REDIRECT_URL'] hebben natuurlijk.

En doe dan vooral ook een print_r($_SERVER); bij het ontwikkelen van zo'n page :)

De mijne doet het iig: http://vulcanus.its.tudelft.nl/doetnietbestaan

De config optie:
ErrorDocument 500 /errors/error.php
ErrorDocument 404 /errors/error.php
ErrorDocument 403 /errors/error.php
ErrorDocument 402 /errors/error.php
ErrorDocument 400 /errors/error.php
En de files staan dan uiteraard in $DOCUMENT_ROOT/errors/ :)

  • TheDane
  • Registratie: Oktober 2000
  • Laatst online: 05-09 15:27

TheDane

1.618

Op maandag 17 juni 2002 14:29 schreef dannydude het volgende:

[..]

Ook dit levert als output 'forward.php' en niet het bestand dat daardwerkelijk gemist wordt.
als ik /bestaatniet.html opvraag, dan zegt ie netjes dat ie /bestaatniet.html niet kan vinden.

is dat niet wat je bedoelt ?


als ik op jouw linkje klik, dan zie ik
Kijk, ik werk :)
/v2/forward.php
is Dat dan de bedoeling :?

Verwijderd

Topicstarter
Tsjah, hij wil het nog steeds niet doen helaas :(

De code die ik nu gebruik:
PHP:
1
<?echo "Kijk, ik werk :) <br \>";echo $_SERVER['REDIRECT_URL'];echo "<br \> <br \>";print_r($_SERVER); ?>

Geeft als output, wanneer ik deze link volg http://www.web-con.nl/v2/page-die.niet?echt=bestaat:
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
Kijk, ik werk :) <br \><br \> <br \>Array
(
    [PATH] => /usr/local/bin:/usr/bin:/bin
    [DOCUMENT_ROOT] => /www/www.web-con.nl/public_html/
    [HTTP_ACCEPT] => image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/msword, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/x-gsarcade-launch, */*
    [HTTP_ACCEPT_ENCODING] => gzip, deflate
    [HTTP_ACCEPT_LANGUAGE] => nl
    [HTTP_CONNECTION] => Keep-Alive
    [HTTP_HOST] => www.web-con.nl
    [HTTP_USER_AGENT] => Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0; H010818)
    [REMOTE_ADDR] => 213.84.164.105
    [REMOTE_PORT] => 3151
    [SCRIPT_FILENAME] => /www/www.web-con.nl/public_html/v2/forward.php
    [SERVER_ADDR] => 213.239.131.64
    [SERVER_ADMIN] => webmaster@web-con.nl
    [SERVER_NAME] => www.web-con.nl
    [SERVER_PORT] => 80
    [SERVER_SOFTWARE] => Apache/1.3.24 (Unix) FrontPage/5.0.2.2623 mod_ssl/2.8.7 OpenSSL/0.9.6c
    [UNIQUE_ID] => PQ3XutXvhQQAAGsFIk8
    [GATEWAY_INTERFACE] => CGI/1.1
    [SERVER_PROTOCOL] => HTTP/1.1
    [REQUEST_METHOD] => GET
    [QUERY_STRING] => 
    [REQUEST_URI] => /v2/forward.php
    [SCRIPT_NAME] => /v2/forward.php
    [PHP_SELF] => /v2/forward.php
)

En voor de zekerheid ook de opbouw van de directory:
code:
1
2
3
4
/www.web-con.nl/public_html/v2

-rw-r--r-- .htaccess    166 17-6-2002 14:24:00 
-rw-r--r-- forward.php  125 17-6-2002 14:36:00

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Ik gok dat het komt omdat jij een volledige url meegeeft ipv een relatief ding tov je doc-root.

Verwijderd

Topicstarter
Op maandag 17 juni 2002 14:35 schreef TheDane het volgende:

[..]

als ik /bestaatniet.html opvraag, dan zegt ie netjes dat ie /bestaatniet.html niet kan vinden.

is dat niet wat je bedoelt ?


als ik op jouw linkje klik, dan zie ik
[..]

is Dat dan de bedoeling :?
De bedoeling is (voorlopig) dat wanneer je de pagina nietbestaan.php opvraagt het bestand forward.php showt 'nietbestaan.php'.

  • TheDane
  • Registratie: Oktober 2000
  • Laatst online: 05-09 15:27

TheDane

1.618

Op maandag 17 juni 2002 14:41 schreef dannydude het volgende:

[..]

De bedoeling is (voorlopig) dat wanneer je de pagina nietbestaan.php opvraagt het bestand forward.php showt 'nietbestaan.php'.
dat doet ie bij mij :?

maar bij jou niet ... wat staat er in je .htaccess file ?

Verwijderd

Topicstarter
Op maandag 17 juni 2002 14:40 schreef ACM het volgende:
Ik gok dat het komt omdat jij een volledige url meegeeft ipv een relatief ding tov je doc-root.
Dat vermoedde ik ook al, maar wanneer ik mijn .htaccess zo opbouwde :
code:
1
2
3
ErrorDocument 401 /forward.php
ErrorDocument 404 /forward.php
ErrorDocument 500 /forward.php

dan krijg je als output bij een nietbestaande pagina
code:
1
2
3
4
5
6
7
8
9
Not Found
The requested URL /v2/forwasdard.php was not found on this server.

Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request. 


--------------------------------------------------------------------------------

Apache/1.3.24 Server at www.web-con.nl Port 80

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

/v2/forward.php ?
zie ook je error_log :)

Verwijderd

Topicstarter
Op maandag 17 juni 2002 14:44 schreef TheDane het volgende:

[..]

dat doet ie bij mij :?

maar bij jou niet ... wat staat er in je .htaccess file ?
Vaag... ik gebruik ie 5.50.5422.1800 om maar even precies te zijn. Jij?

Ik zal het iig es met Opera en Mozilla proberen...

  • TheDane
  • Registratie: Oktober 2000
  • Laatst online: 05-09 15:27

TheDane

1.618

Op maandag 17 juni 2002 14:46 schreef dannydude het volgende:

[..]

Vaag... ik gebruik ie 5.50.5422.1800 om maar even precies te zijn. Jij?

Ik zal het iig es met Opera en Mozilla proberen...
5.00 bla bla

en IE 6.0 bla

en mozilla 1.0 doet 't bij mij ook prima

Verwijderd

Op maandag 17 juni 2002 14:32 schreef ACM het volgende:
Eigenlijk moet je de $_SERVER['REDIRECT_URL'] hebben natuurlijk.

En doe dan vooral ook een print_r($_SERVER); bij het ontwikkelen van zo'n page :)

De mijne doet het iig: http://vulcanus.its.tudelft.nl/doetnietbestaan

De config optie:
[..]

En de files staan dan uiteraard in $DOCUMENT_ROOT/errors/ :)
Kan je even de code pasten voor die error-pagina. Dan weet iedereen hoe het juist moet.

Dank,
Pagina: 1