Ohjaan .htaccessilla virhesivulle error.php?error=<tähän numero>. Nyt tarvitsisi saada tietoon url joka laukaisi virheen. Minulla on tähän tyyliin:
<?php $referer = $_SERVER["HTTP_REFERER"]; $request = $_SERVER["REQUEST_URI"]; ?>
Mutta tuo request_uri palauttaa sen error.php sivun ja referer sivun jolta tultiin virheen laukaisevalle sivulle, joten miten saisin tietoon sivun joka käynnisti virheen. esim. www.sivu.com/tätäeilöydy.html
#Sulla on .htaccess-tiedostossa ilmeisesti jotakin tyyliin: ErrorDocument 401 http://om.dom.com/error.php #koitappa muuttaa se muotoon: ErrorDocument 401 /~tunnus/error.php #tai ErrorDocument 401 /home/tunnus/www/error.php #niin pitäisi noiden muuttujien palauttaa haluamasi arvot #näin toimii ainakin itsellä
eipä toimi tuo minulla
Ai nuo PHP:n ympäristömuuttujat palauttaa edelleen väärät arvot?
ei vaan .htaccess ohjaa sivulle jota ei löydy
No silloin sinulla on nuo polut väärin. Kokeile muutella niitä erilailla, itse tappelin aikoinani jokusen aikaa, ennen kuin tajusin kuinka nuo polut tulee laittaa :)
Edit:
Google osaa kertoa moniakin erilaisia polkuvaihtoehtoja
Nyt siis yritän hakea sivun urlia joka laukaisee virheen. Esim. 404 tapauksessa miten saan tuon www.sivu.com/tätäsivuaeiole.html php:llä haettua.
Tuolla sivulla on linkki jonka kohdesivua ei ole olemassa, jolloin .htaccess määrää menemään sivulle error.php?error=404. error.php lähettää sähköpostiini kaikennäköistä tietoa, mutta ei sitä urlia jota ei löytynyt. Nyt siis ongelmana on saada selville tuo url jota ei löytynyt.
No väännetään nyt sitten rautalangasta:
On kaksi erilaista tapaa ohjata käyttäjä omalla error-sivulle. Ohjaukseen voi käyttää joko absoluuttista urlia, jolloin käyttäjä "heitetään" ko. osoitteeseen ja tällöin virheen laukaissutta sivua EI voi saada selville. Toinen ja paljon parempi tapa on käyttää palvelimen sisäistä, ns. suhteellista polkua ja tällöin käyttäjää ei tavallaan ohjata error-sivulle, vaan error-sivun sisältö ohjataan siihen dokumenttiin, jota ei löytynyt. Tällöin myös tuo hukassa olevan dokumentin osoite jää osoiteriville lukemaan ja näin ollen se voidaan esim. PHP:n avulla saada selville:
http://hommat.hanskassa.com/error/index.php
ja esimerkissä käytetyt tiedostot:
### /foo/.htaccess ErrorDocument 404 http://hommat.hanskassa.com/error/error.php
### /bar/.htaccess ErrorDocument 404 /~ajv/error/error.php
Toivottavasti selvensi asiaa.
Ahaa aivan :)
Kiitosta, koitan säätää.
Aihe on jo aika vanha, joten et voi enää vastata siihen.