Autor Zpráva
PerToon
Profil
Tak nejdřív složitě: Na začátku každé stránky se vykoná php skript který zjistí v jakém je stránka adresáři a podle toho zvolí správné menu a správné adresy ke stylům a podobně. (Dělám to tak aby se stejný soubor choval v každém adresáři automaticky jinak) Jenže když zadám adresu /podadresar/blablabla.php, otevře se mi sice /404.php, ale skript si myslí že je v adresáři /podadresar a tím pádem se vykoná chybně.

Teď zkusím jednodušší variantu: Nevím jestli to je přesně to samý co nahoře. Když zadám adresu /podadresar/blablabla.php, otevře se mi sice /404.php, ale v adresním řádku je pořád /podadresar/blablabla.php.

Co chci: Aby se /404.php otevřelo doopravdy na své adrese a ta byla i v adresním řádku. (Pokud teda ten adresní řádek souvisí s chováním toho skriptu)
PerToon
Profil
Dobře, chápu že sem to popsal složitě, chápu že možná nevíte, nebo jen nikdo nechce odpovídat, ale pokud byste někdo byl ochotný mi pomoct, docela bych to potřeboval. Všiml sem si, že dost webů v případě chyby 404 na tu stránku přímo přesměruje a v adrese je vidět 404.html. Takže to jde. Jen nevím jak.
DJ Miky
Profil
v tom 404.php dej header("Location: 404.php") a mělo by se ti to objevit v adr. řádku
PerToon
Profil
A tu funkci dám ještě před <html>?
PerToon
Profil
Hm, když to dám úplně na začátek tý stránky, tak mi to při přechodu na neexistující stránku zahlásí:

"Limit pro přesměrování URL vypršel. Nelze nahrát požadovanou stránku. Je možné, že toto chování je způsobeno blokováním cookies."

Bratrancovi to vypíše:

"Smyčka při přesměrování

Server přesměrovává požadavky na tuto adresu sám na sebe a to takovým způsobem, které zabraňují jejich dokončení.

Tento problém může být způsoben zakázáním nebo odmítnutím cookies."


Takže tudy asi cesta nevede. Ví někdo co s tím?
DJ Miky
Profil
PerToon
No jo vlastně, vždyť ono se to bude přesměrovávat pořád dokola...

Jestli ti nevadí jeden parametr navíc, tak tam můžeš dát:
if(!isset($_GET['akce']) || !$_GET['akce']) header('Location: 404.php?akce=404');

Nebo je to také možné vyřešit pomocí REQUEST_URI:
if(substr($_SERVER['REQUEST_URI'],-7)!='404.php') header('Location: 404.php');
mila
Profil
header("Location: 404.php")
nepoužívej!
Když se dostanu na neexistující stránku, chci vidět její adresu
- Můžu se podívat, kde jsem se přepsal
- Pokud jsem se přepsal v jednom písmenku, tak nemusím psát celou adresu znovu.
- Mohu neexistující stránku snadno nahlásit.

Zkus <base href="..."> - cestu kterou uvedeš, tak od ní se počítají veškeré relativní odkazy
PerToon
Profil
No, zkoušel sem první řešení a to se chová tak:
1. kliknu na odkaz vedoucí na neexistující stránku, stane se to samý co předtím
2. zadám přímo adresu 404.php nebo něčeho co neexistuje, funguje to dobře
Tak to jsem z toho jelen. Zkusím ještě to druhý řešení.
PerToon
Profil
mila- No to já vím, že je to vůči uživatelovi trochu sviňárna, ale já neznám způsob jak donutit ten php skript aby si myslel, že otevírá 404ku. Protože adresa není 404.php. Holt tam zkusím nějak natvrdo vepsat co se má udělat, no.
veproza
Profil
PerToon: Pokud jsem to pochopil, jde o to ze se 404.php otevira v /podadresar a tim si zvoli spatny menu. Neni podle me nic slozityho skriptu natvrdo vnutit ze se prave nachazi v / - staci to proste natvrdo napsat do promennych - ani globalni jako $_SERVER nejsou nijak chraneny proti zapisu, proste
if (stranka_neexistuje) 

{
$_SERVER['REQUEST_URI'] = '/404.php';
require ('404.php')
}.

Adresa v prohlizeci zustane a melo by to fungovat.
Edit: Vychazim z toho ze svoji pozici si skript zjisti prave z $_SERVER['REQUEST_URI'], pokud z nejaky jiny promenny tak se to samozrejme meni.
Edit2: Diakritika bude priste. Pardon.
Toto téma je uzamčeno. Odpověď nelze zaslat.

0