Autor Zpráva
mol
Profil *
Ahoj, udělal jsem si jednoduchý router a když napíšu
localhost/clanek/5

tak je to ok,
ale když napíšu
localhost/clanek/5/nazev-clanku

tak se ty styly nepoužijí

uložil jsem stránku "uložit jako" a zjistil jsem že ty stly nemají příponu css, ale htm a jsou prázdné? jak je to možné?

// index.php
switch ($URL_cesta[0]) {
  case 'clanek':
    include 'clanek.php';
    break;
  case 'domu':
    include 'domu.php';
    break;
  ...

v kořenové složce mám složky:
style
partials

ve "style" mám css styly a v partials mám 'header.php' kde linkuju styly
<link rel="stylesheet" href="../style/styly.css">


ten název nebo parametry za otazníkem by na to teoreticky snad neměli mít vliv... nebo jo? jak to mám tedy linkovat?

localhost / <typ> / <id> / <nazev> ? <dalsi>


ten obrázek se tam nezobrazil tak sem dám odkaz na něj
ibb.co/dW1EQe


hm, musel bych tam přidat ještě jednou ../
<link rel="stylesheet" href="../../style/style.css">
ale jak je to možný že to takhle ovlivnuje? já mám za to že se to linkuje vzhledem od toho headeru...


nejde to nějak zautomatizovat funkcí php?
Keeehi
Profil
mol:
já mám za to že se to linkuje vzhledem od toho headeru
Linkování má na starosti prohlížeč. A ten neví, že nějaký soubor header.php existuje. On ani neví, že na serveru je PHP. A i kdyby to věděl, bylo by mu to jedno. Prohlížeč zajímá jen výsledný HTML kód a je mu jedno co ho vygrnerovalo.
Jediné co zná je aktuální adresa, takže se linkuje oproti ní. "Problém" hezkých adres je ten že pro oddělení částí adresy se využívá znaku lomítka což je stejný oddělovač jaký je pro adresářovou strukturu. Takže když v URL se objeví další část, vypadá to jako podadresář. Proto v tvém případě bylo potřeba doplnit další ../.
Bylo by samozřejmě hloupé muset generovat správný počet ../ v závislosti na které stránce zrovna jsi. Proto se v praxi používají adresy od kořene webu.
<link rel="stylesheet" href="/style/style.css">
To jsou ty, které právě začínají lomítkem. Z aktuální URL se vezme doména* a přidá se za to ta adresa. Styly totiž bývají stále na stejném místě vzhledem ke kořenu webu.

* a protokol. Případně port a další komponenty URL pokud jsou přítomny a jsou před částí s cestou.
mol
Profil *
Keeehi:
parádní, díky
mol
Profil *
Ještě jedna věc. Když mám logo tak sem četl že bych měl použít relativní odkaz tj. "/". Ale ve všem ostatním se používá celý odkaz? Nebo je to jedno?
T-fon
Profil
Pokud máš logo nebo jakejkoliv jinej obrázek uloženej u sebe na webu, vždycky používej relativní cestu.
mol
Profil *
T-fon:
nebo jakejkoliv jinej obrázek
a co když je to jen h1 odkaz s názvem stránky jako neobrázkové logo?
T-fon
Profil
Ono je jedno, jestli se jedná o obrázek, odkaz, CSS, JS,... Cokoliv co je na tvém webu, na to odkazuj relativně. Absolutní cesty se používaj, pokud odkazuješ jinam, např. na externí fonty, JS, na článek na jiném webu atd.
Keeehi
Profil
mol:
On v tom zase až tak velký rozdíl není. Relativní adresy se používají hlavně proto, že nejsou závislé na doméně. Tudíž se web mnohem lehčeji dá přesunout na jinou. Nezávislost na doméně také umožňuje snadný vývoj na localhostu.
mol
Profil *
ok


ale co když mám https a někdo by ke mě přicházel přess http, potom by byl relativní odkaz http:// nebo https:// ?
RastyAmateur
Profil
mol:
Dle mého názoru pokud máš https, tak by jsi si měl i zajistit to, aby se ti http přesměrovávalo na to https
T-fon
Profil
mol:
potom by byl relativní odkaz http:// nebo https:// ?
Pokud do odkazu přidáváš http, tak to právě není relativní odkaz, ale absolutní.
Keeehi
Profil
mol:
Ano, rozhodně by jsi přesměrovat měl. Pokud by jsi to ale neudělal tak výsledná URL relativní nadresy bude mít stejný protokol jako je v URL aktuální stránky. Tedy http.
Což jsem psal už ve [#2].
mol
Profil *
Ok, a je lepší to přesměrovávat přes PHP nebo htaccess? Když bych to dělal přes PHP mám kromě location hlavičky posílat i 301?
Keeehi
Profil
mol:
Obojí je možné. Každé má své výhody a nevýhody.
Přesměrování v htaccess bude o pár ms rychlejší a výkonově nejspíše méně náročné, jelikož se ten požadavek k PHP vůbec nedostane.
Pokud to bude v PHP, tak veškeré zpracování adres a přesměrování budeš mít na jednom místě a ne mezi dvěma systémy.
Status 301 (pro účely testování nejdříve 302) by jsi měl posílat vždy.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: