ugrás a tartalomhoz

Error 404 átirányítás

morocztamas · 2011. Feb. 13. (V), 13.04
Hogyan oldjam meg, hogy átirányításkor megadja a következő oldalon, hogy honnan jött a látogató?
<?php
$language = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
$file=$_SERVER['HTTP_REFERER'];
if($language=='hu')
{
  header('location:http://realgameguides.com/?view=error404&lang=hu&file='.$file);
  exit;
}
else
{
  header('location:http://realgameguides.com/?view=error404&lang=en&file='.$file);
  exit;
}
?>
Ennyi kész is van, csak a $file helyére nem rak semmi. Tudom, hogy az aposztófok közé kéne besuvasztani a $file-t, de sajna úgy nem műkszik. Mi a megoldás? Példa.

Rossz példa. Az kell nekem, hogy mit írtak be, tehát, hogy így legyen az uri: http://realgameguides.com/?view=error404&lang=en&file=http://realgameguides.com/példa.
 
1

Nem érdemes

janoszen · 2011. Feb. 13. (V), 13.30
Nem érdemes 404-re átirányítást dobni. Egyrészt a keresőgépek sem szeretik, másrészt a felhasználónak rohadt dühítő, ha beírta a címet és csak egy betűt cseszett el vagy rossz volt a link és nem tudja kijavítani, mert a weboldal okos akart lenni.

Ha jót akarsz magadnak, a weboldaladat kiszolgáló motorba építesz egy olyan lehetőséget, hogy ugyanazon a címen szolgáljon ki egy 404-es oldalt.
3

Mit javasolsz?

morocztamas · 2011. Feb. 13. (V), 13.39
Alapból a .htaccess állományban megadott címre változik a címsorban a cím, ha nem állítok be neki átirányítást, akkor is.
5

Programkód?

janoszen · 2011. Feb. 13. (V), 17.12
Muti azt a .htaccesst, ott valami el van rontva.
6

Itt van

morocztamas · 2011. Feb. 13. (V), 18.07
ErrorDocument 404 http://realgameguides.com/err.php
Ha csak /err.php lenne, akkor a többi oldalról nem hozná be, onnan keresné a fájlt, pl. http://armyoftwo.realgameguides.com/err.php-t akarna behozni. :/
7

Aha

janoszen · 2011. Feb. 13. (V), 18.20
Na, ezzel az a probléma, hogy ezt kérted tőle. Az Apache az ErrorDocument kezelésben úgy viselkedik, hogy ha teljes URL van, akkor átirányít, ha részleges URL, akkor az adott domain alatt keresi. Az szokott lenni a megoldás, hogy a hibaoldal URL-jét mondjuk egy /error könyvtárba teszik és arra felvesznek egy Alias paranccsal egy közös könyvtárat. Tekintettel arra, hogy igazából a felhasználó az err.php-t úgysem fogja sose látni, Neked tök mindegy lehet, mi a címe.

Az érem másik oldala az, hogy igazából az Apache ErrorDocument csak meglehetősen kiforratlan lehetőségeket ad a hibakezelésre. Ez akkor jó, ha nincs egy darab belépési pontod (index.php) ami minden oldalt lekezel. Miután az oldal feldolgozásában nem csak 404-es hibák léphetnek fel, javaslom, hogy hosszú távon dolgozd át az alkalmazásodat olyanra, hogy minden lekérdezés az index.php-ra fusson rá, majd abban döntsd el, hogy melyik modult kell betölteni. Ugyanitt akkor hibát is tudsz kezelni.
2

nem vagyok profi, de..

Hellhammer · 2011. Feb. 13. (V), 13.31
Hy!

Egyrészt szerintem nem kéne aposztrófok közé tenni a $file - t, mert az egy változó végül is..

A másik pedig, mit szeretnél, mi legyen a $file visszatérési értéke? Csak azért, mert ha az egy fájl lenne (amit valószínűnek tartok, akkor: ) a php manual szerinti helyes mód:
4

Azért nem tesz a helyére

Joó Ádám · 2011. Feb. 13. (V), 16.58
Azért nem tesz a helyére semmit, mert hibás a tömbindex. De ha a keresett oldal nem található, akkor a 404 Not Found fejléc kiadása és hibaüzenet kiírása kötelező. Ne irányíts át.
8

Most egyből átirányít.

morocztamas · 2011. Feb. 26. (Szo), 18.47
Most egyből átirányít a http://realgameguides.com/?view=error404&lang=hu oldalra, de a fejlécet átírja.
Error404 Document http://realgameguides.com/?view=error404&lang=hu
Ezt mitől csinálja?
9

ErrorDocument 404

Joó Ádám · 2011. Feb. 26. (Szo), 19.06
ErrorDocument 404 index.php?view=error404&lang=hu
10

Csak így nem jó.

morocztamas · 2011. Feb. 26. (Szo), 20.17
Az aldomainek miatt, mert azoknak is ezt szeretném a hibaoldalnak, csak azok a saját mappájukból indulnak ki így. :/
11

Átirányítás nélkül azt nem

Joó Ádám · 2011. Feb. 27. (V), 00.57
Átirányítás nélkül azt nem tudod itt megoldani. Azt javaslom, hagy ki az egészből az Apache-ot, és magad szolgáld ki a hibaoldalt, ha nem található a keresett tartalom.
12

És azt hogy csináljam?

morocztamas · 2011. Feb. 28. (H), 14.52
És azt hogy csináljam?
13

Amikor nem létező címet, vagy

Joó Ádám · 2011. Már. 2. (Sze), 17.29
Amikor nem létező címet, vagy az adatbázisban nem található tartalmat kér a felhasználó, akkor kiadod a 404 fejlécet és megjelenítesz egy hibaüzenetet.
14

Nem működik

morocztamas · 2011. Már. 6. (V), 12.36
Kipróbáltam a fejléccel, de se a http-ssel, sem a status-ossal nem megy. :\
15

Mit jelent az, hogy nem megy?

Joó Ádám · 2011. Már. 6. (V), 17.02
Mit jelent az, hogy nem megy? Attól, hogy kiadod a fejlécet, nem fog történni semmi látványos, ez egy szabványos hibakód a böngészőknek és a keresőknek.
16

Persze

morocztamas · 2011. Már. 6. (V), 18.52
Csakhogy nem irányít át oda, ha nincs meg a mappa vagy állomány.
Akkor most hogy is lenne helyes?
17

Mondtam már, semmilyen

Joó Ádám · 2011. Már. 6. (V), 20.17
Mondtam már, semmilyen átirányításra nincsen szükség. Ha érkezik az aktuális oldaladhoz egy olyan kérés, amire hibaüzenetet szeretnél adni, például a híreket megjelenítő lapra egy nemlétező hír azonosítója, akkor ahelyett, hogy megjelenítenéd a cikket, ott, azon az oldalon kiírsz egy üzenetet, miszerint a tartalom nem létezik, és mellesleg kiadod a 404-es fejlécet is. Semmit nem kell átirányítani sehova.

Ha különálló PHP állományok szolgálják ki az egyes oldalakat, és maga az állomány sem létezik (news.php helyett newz.php-t ütöttek be), akkor pedig .htaccess-ből irányítsd át egy oldalra, ahol kiírsz egy hibát és a fejlécet.