Errorpages -> .htaccess omzeilen

Plaats reactie
Gebruikersavatar
meon
Administrator
Administrator
Berichten: 16609
Lid geworden op: 18 feb 2003, 22:02
Twitter: meon
Locatie: Bree
Uitgedeelde bedankjes: 564 keer
Bedankt: 759 keer
Contacteer:

Heeft er iemand een idee hoe errorpages op te vangen om een .htaccess om?

Ik zit namelijk met volgende situatie: m'n host heeft z'n eigen errorpages: /error_pages/error404.html , etc.

Natuurlijk is dat dan html en geen php. Bovendien verandert de URI. Ik weet niet hoe ze Apache hebben geconfigureerd, maar als ik een niet bestaande url ingeef, bvb http://www.domain.tld/non-existing-page.html dan redirect hij naar /error_pages/error404.html .

Is het dus mogelijk om
1) de URI te laten staan? (dus geen redirect maar andere content tonen - normaal systeem .htaccess)
2) om daar php voor te gebruiken.

Ik kan PHP, ColdFusion en CGI gebruiken op m'n host... Als er een oplossing zou bestaan mag dat via 1 van dees technologieën ;)

Alvast bedankt!

--meon
Gebruikersavatar
All Your Base
Plus Member
Plus Member
Berichten: 190
Lid geworden op: 17 sep 2002, 11:57

je gaat toch op de een of andere manier aan apache duidelijk moeten maken dat hij jouw aangepaste error documenten moet gebruiken, en dat kan zover ik weet niet anders dan in de httpd.conf of .htaccess bestanden.
Gebruikersavatar
meon
Administrator
Administrator
Berichten: 16609
Lid geworden op: 18 feb 2003, 22:02
Twitter: meon
Locatie: Bree
Uitgedeelde bedankjes: 564 keer
Bedankt: 759 keer
Contacteer:

Dat is het probleem natuurlijk net...

Ik vermoed dat de servers zo geconfigureerd zijn om te werken met PSA (Plesk Server Administrator).

Als er geen andere oplossing is.. moet ik er mij bij neerleggen zeker? :(
The Oddity
Elite Poster
Elite Poster
Berichten: 5008
Lid geworden op: 15 sep 2002, 17:58
Locatie: Belgium, Ghent
Contacteer:

Meon,

ik weet niet welke host je hebt, maar ik kon in een gelijkaardige situatie wel php gebruiken, gewoon door de file te veranderen naar error404.php je moet enkel de naam behouden. Kan nu wel zijn dat de server anders geconfigureerd is waardoor je de extensie niet kan wijzigen.
Normaal is het zeker wijzigbaar.

Via plesk kan je dit niet instellen of wijzigen. Ik vermoed dat je eens contact zal moeten nemen met de hosting provider.

Wat die url betreft is ook een instelling, twijfel of het kan met plesk. Maybe als ge genoeg access hebt :-) anders zal je ook de admin van je hosting eens moeten raadplegen, als je zelf geen toegang hebt...
I love it when a plan comes together!
Gebruikersavatar
meon
Administrator
Administrator
Berichten: 16609
Lid geworden op: 18 feb 2003, 22:02
Twitter: meon
Locatie: Bree
Uitgedeelde bedankjes: 564 keer
Bedankt: 759 keer
Contacteer:

Ik kan veel instellen via PSA, maar net niet alles lijkt me ;)

De host is Dommel.com en in een antwoord op dezelfde vraag zeggen ze dat ze de errorpages wel naar een andere pagina (evt. php) kunnen sturen, dus bvb error404.php .

Maar wat ik vooral wilde was eigenlijk
1) verschillende errorpages voor verschillende dir's (kan nu niet)
2) dat als je een verkeerde url ingeeft er gezocht wordt naar hetgene je hebt ingegeven. Stel dat ik http://www.domain.com/help doe, en dat /help/index.php niet bestaat dat dan het script in error404.php gaat zoeken naar 'help'. Ik wil dus zoiets als ze op apple.com, microsoft.com e.d. gebruiken. Het probleem is dus te achterhalen welke url ze gebruikt hebben...
The Oddity
Elite Poster
Elite Poster
Berichten: 5008
Lid geworden op: 15 sep 2002, 17:58
Locatie: Belgium, Ghent
Contacteer:

of je kan instellen voor aparte 404 pages te hebben enzo.. voor aparte directories, ben ik niet zeker of dat gaat, of ge dat kunt instellen in apache denk het wel, maar ben niet zeker, twijfel beke. Heb het zelf nog niet gedaan. Als dat gaat, dan gaan ze dat bij dommel moeten instellen, en ik vrees ergens dat ge hen dat niet gedaan gaat doen krijgen. :roll:

de pagina achterhalen vanwaar ze komen kan je normaal achterhalen via HTTP_REF (op skynet page gebruiken ze dat voor users.skynet.be) hoe je dat moet implementeren ga ik eens moeten opzoeken in php weet het niet vanbuiten... maar dacht iets in de aard van HTTP_REFERER... ? i

Wat je wel kan doen om aparte error pages te hebben voor aparte dirs is een 404.php script gebruiken (error404.php) en in dat script nagaan vanwaar ze komen, met referer en dan de de desgewenste output tonen via php. Dat is prima doenbaar. Zou juist eens moeten opzoeken hoe je die http_ref gebruikt...;-)
I love it when a plan comes together!
Gebruikersavatar
meon
Administrator
Administrator
Berichten: 16609
Lid geworden op: 18 feb 2003, 22:02
Twitter: meon
Locatie: Bree
Uitgedeelde bedankjes: 564 keer
Bedankt: 759 keer
Contacteer:

Ik ken die servervariabele wel :)

<? echo $_SERVER['HTTP_REFERRER'] ?> is het trouwens (zo uit het hoofd :))

Maar ik was even de nette manier aan het zoeken (zijnde hoe het altijd via .htaccess is gegaan...)
Ik vind dat namelijk enorm iritant als een URI verandert. Situatie: ik typ 1 letter in een string verkeerd en wil die verbeteren. Dan ben je er aan voor de moeite...

Eens m'n eigen errorpages beginnen maken dan maar :-)
The Oddity
Elite Poster
Elite Poster
Berichten: 5008
Lid geworden op: 15 sep 2002, 17:58
Locatie: Belgium, Ghent
Contacteer:

mja, als ge met verscheidene programmeertalen vertrouwd zijt en ge zijt op het ogenblik van schrijven niet bezig in php, dan moet ik zo iets op zoeken, weet dat het zoiets is, moet alleen even verifieren..

mja, zoals het altijd via .htaccess is gegaan, kan je het dan nu niet via htaccess doen? beperkingen ofzo...
I love it when a plan comes together!
Gebruikersavatar
meon
Administrator
Administrator
Berichten: 16609
Lid geworden op: 18 feb 2003, 22:02
Twitter: meon
Locatie: Bree
Uitgedeelde bedankjes: 564 keer
Bedankt: 759 keer
Contacteer:

nieuwe servers, nieuwe instellingen, byebye .htaccess (voor ErrorDocument dan toch). Bij de oude hosting was dat geen probleem, nieuwe blijkbaar wel. Ach ja, dan doen we het zo :) Het is gewoon niet de manier van werken die ik gehoopt had...
Gebruikersavatar
Erik
Elite Poster
Elite Poster
Berichten: 1321
Lid geworden op: 15 sep 2002, 02:46
Uitgedeelde bedankjes: 2 keer
Bedankt: 18 keer

meon

om te beginnen php bestanden kunnen geen *.html extensie hebben .....

hier heb je een voorbeeld om uw eigen error page te zien
<?php

$html_401 = "http://www.uwsite/401.html";
$html_403 = "http://www.site.be/403.html";
$html_404 = "http://www.uwsite.be/404.html";
$html_500 = "http://www.uwsite.be/500.html";
$mail = 1;
$to = '[email protected]';
$subject= "Error on your website";
$body = "";
$url =getenv "$HTTP_REFERER";

if($QUERY_STRING == '401'){
$body="there is a 401 error on your website $url ";
Header("Location:$html_401");
}
if($QUERY_STRING == '403'){
$body="there is a 403 forbidden error on your website $url ";
Header("Location:$html_403");
}
if($QUERY_STRING == '404'){
$body="there is a 404 not found error on your website $url ";
Header("Location:$html_404");
}
if($QUERY_STRING == '500'){
$body="there is a 500 internal server error on your website $url ";
Header("Location:$html_500");
}
else{
print "there has been an unknown error !!!!";
}
if($mail ==1){
mail("$to","$subject","$body");
}
?>


in apache httpd.conf

accessfilename .htaccess
ErrorDocument 404 http://www.uwsite.be/errror.php?404

in een .htaccess file

ErorDocument 404 http://www.uwsite.be/error.php?404


it is that simple :mrgreen:

error.php is de naam van het script

natuurlijk kan je ook de andere errors "handlen"

500 => internal server error
401 => authentication requirerd
404 => file not found
403 = forbidden (you are not authorized to view this page)

etc etc

greetz

Erik
Registered Linux user #286313
Gebruikersavatar
All Your Base
Plus Member
Plus Member
Berichten: 190
Lid geworden op: 17 sep 2002, 11:57

om te beginnen $_SERVER['REFERER'] is met een R :) en ik weet het, dat is tegen de spelling in, maar is al sinds oudsher zo als het om webservers gaat.

aangepaste error pages zijn enkel mogelijk met een aangepaste configuratie van apache. omgekeerde zou wel mogelijk moeten zijn: een 404 error generen bij een PHP pagina die wel gevonden wordt, via de header() functie. probleem zittem dus dat je met PHP wel headers kan genereren, maar niet onderscheppen.

ten slotte, .html extensies kunnen net zo goed PHP bestanden zijn, hangt er maar van af hoe Apache geconfigureerd is. Op onze intranetserver worden .html en .htm ook eerst geparsed door PHP, en daar merk ik geen snelheidsverschil in ofzo voor de gewone HTML bestanden. Je zou dat zelfs enkel zo voor bepaalde directories kunnen configureren als dat niet voor de ganse site moet.
Gebruikersavatar
meon
Administrator
Administrator
Berichten: 16609
Lid geworden op: 18 feb 2003, 22:02
Twitter: meon
Locatie: Bree
Uitgedeelde bedankjes: 564 keer
Bedankt: 759 keer
Contacteer:

Jonges jonges ;)

Tis mij al lang duidelijk hoor (lokaal heb ik apache nu eenmaal correct draaien). Het is enkel de webhost die zijn instellingen een beetje "dom" heeft staan (zal de schuld van PSA zijn vermoed ik). Dus ik wilde enkel een 'alternatieve' manier. Maar aangezien ErrorDocument in een .htaccess een interne serverfout geeft (leuk eh :roll: ) en zelf de configuratie van apache aanpassen uit den boze is moet het dus anders...

Ik heb de webhost al gemaild de errordocument-pointer te wijzigen naar een php-scriptje. Je Error-script is best leuk, maar ik wil niet voor elke error een mailtje krijgen. Die zie ik wel in de logs.
Gebruikersavatar
Erik
Elite Poster
Elite Poster
Berichten: 1321
Lid geworden op: 15 sep 2002, 02:46
Uitgedeelde bedankjes: 2 keer
Bedankt: 18 keer

ja natuurlijk ........

als je in httpd.conf toevoegt

Addtype application/x-httpd-php .php .php3 .php4 .phtml .html


maar dat is geen goed idee ........

wat je met die referrer bedoelt is mij niet echt duidelijk ? ik weet dat de nieuwe php regels zeggen dat je $_SERVER['REFERER'] moet gebruiken maar ik heb liever de andere methode werkt evengoed trouwens

tenslotte moet je inderdaad apache configuratie bestand bewerken

ErrorDocument 404 http://www.uwsite.be/error.php?404
zo voor elke error die je "handlen" dus om de nieuwe php regels te gebruiken

<?php

$html_401 = "http://www.uwsite/401.html";
$html_403 = "http://www.site.be/403.html";
$html_404 = "http://www.uwsite.be/404.html";
$html_500 = "http://www.uwsite.be/500.html";
$mail = 1;
$to = '[email protected]';
$subject= "Error on your website";
$body = "";
$url =$_SERVER['REFERER'];

if($QUERY_STRING == '401'){
$body="there is a 401 error on your website $url ";
Header("Location:$html_401");
}
if($QUERY_STRING == '403'){
$body="there is a 403 forbidden error on your website $url ";
Header("Location:$html_403");
}
if($QUERY_STRING == '404'){
$body="there is a 404 not found error on your website $url ";
Header("Location:$html_404");
}
if($QUERY_STRING == '500'){
$body="there is a 500 internal server error on your website $url ";
Header("Location:$html_500");
}
else{
print "there has been an unknown error !!!!";
}
if($mail ==1){
mail("$to","$subject","$body");
}
?>

nu moet je nog de html bestanden maken die getoont worden als er een error is .......

en een .htaccess bestand

ErrorDocument 403 http://www.uwsite.be/error.php?403
voor iedere error ......

als je httpd.conf bewerkt hebt moet je apache herstarten


greetz

Erik
Registered Linux user #286313
Gebruikersavatar
meon
Administrator
Administrator
Berichten: 16609
Lid geworden op: 18 feb 2003, 22:02
Twitter: meon
Locatie: Bree
Uitgedeelde bedankjes: 564 keer
Bedankt: 759 keer
Contacteer:

Volgens mij druk ik me verkeerd uit, maar ik heb geen toegang tot de configuratie-files van Apache! (op m'n lokale dev-server natuurlijk wel, maar op de webhost (dommel.com) gaat dat niet). Ik heb geen dedicated server of zo hoor ;)

Dommel heeft de error-pointers gewijzigd naar m'n eigen error-scriptjes. Deze nacht wordt de httpd herstart. Ben eens benieuwd of m'n schriptjes werken ;)
Plaats reactie

Terug naar “Development”