Diskuze: Změna adresy přes .htaccess

Tvůrce

Zobrazeno 10 zpráv z 10.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
Obvyklý požadavek je přesně obráceně. Zkus zagooglit "hezká URL".
Ahoj, tohle se většinou nepřevádí, ale pracuje se rovnou s tou lomítkovou variantou. Také jsem si dříve myslel, že to tu adresu převede (a asi by se to i dalo udělat), ale dělá se to tak, že si v .htaccess převedeš všechny požadavky na index. A na indexu si potom pomocí explode rozložíš adresu polde lomítek na pole. To si potom dále zpracuješ. Lépe se to dělá když máš např. MVC architekturu, ale určitě si s tím poradíš i takhle. Typuji, že nepoužíváš objekty, takže budeš muset nějak vyřešit, aby ty parametry pak viděly všechny stránky. Nevím, jak moc ošklivé je cpát je do GETu, ale asi lepší, než ti zbytečně motat hlavu s nějakým statickým registrem.
Jaký statický registr? Obsah prvního parametru GET dávám do Simple Factory. Druhý parametr se pak stane klíčem do DB.
Pár příkladů na mod_rewrite jsem našel na
http://mike.treba.cz/…a-hezke-url/
Já ten .htaccess celkem proklínal, protože jsem takhle také našel nějaké řešení a pak přestaly fungovat sessions.
Statický registr je imho nejjednodušší objektová náhrada glob. proměnných. Prostě by měl třídu s nějakým polem parametrů Trida::$clanek, Trida::$parametry. Ale imho to může prostě nacpat jako $_GET['clanek'], $_GET['parametry'], kde clanek bude první parametr v tom URI stringu.
On to objektové mít nebude, to jsem již psal, proto musí nějak vyřešit předávání dat, GET se nabízí jako přirozená cesta jak to PHP dělá, vlastně by si nasimuloval ty parametry jako by přišly normálně z GETu.
Nejjednodušší je ponechat v poli $_GET a číst ho dle potřeby. Nikdy do něj nezapisovat.
Místo do statického registru si podobná data ukládám do modelu, který mi pak rovnou poskytuje potřebné deriváty.
.htaccess používá dost specifický jazyk. Je velmi jednoduché v něm něco poplést.
Jak jednou pravil David Jančík: "Mě to ale nezajímá. Stejně jako nechci
pochopit ženu, tak nechci pochopit .htaccess."
Dan modely ani objekty nemá, proto si buď udělá statickou třídu, nebo zapíše do GET nebo použije něco ošklivého jako GLOBALS. Zapsat do GET mi přijde jako nejlepší možnost pro jeho případ, udělá to jen jednou a zbytek skriptů se bude tvářit jako by parametry přišly od uživatele.
Našel jsem si tohle -
# mujweb.cz/?page=neco > mujweb.cz/neco/
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/?$ ?page=$1
a
# mujweb.cz/?page=neco&stranka=druha > mujweb.cz/neco/druha
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/([^/]+)?/?$ ?page=$1&stranka=$2
ale nevím jak to spojit. jak jsem již psal,to &stranka= tam nebude vždy..
No psal jsem ti, že bych to takhle nepřeváděl, ale když na tom trváš...
RewriteEngine On tam musí být každopádně
To Base záleží na daném hostingu, někde to má být, někde ne. Musíš
zkusit.
2 podmínky jsou stejné, to určuje že se má přesměrovat jen tehdy, když soubor neexistuje. Díky tomu se ti nebudou přesměrovávat obrázky a podobně.
Rewrite rule použij to druhé, jen nechápu proč tam je page a stránka. To je trochu prase kód. Buď anglicky, nebo česky. A hlavně to znamená to samé. Smysl by dávala třeba sekce a stranka.
Možná k těm parametrům dává smysl spíše clanek a parametr, skript a akce a podobně.
Zobrazeno 10 zpráv z 10.