Diskuze: Změna adresy přes .htaccess

Webové servery Změna adresy přes .htaccess

Avatar
Daniel Vítek
Tým ITnetwork
Avatar
Daniel Vítek:

Ještě než napíši problém,upozorňuji - Googlil jsem ;)

Potřeboval bych převést
index.php?sek­ce=moje&stran­ka=druha
na /moje/druha/

Jenže to &stranka= tam nebude vždy,bude jen v sekci ve které jsou podstránky
např. u anket nemá cenu dávat sekce=ankety&stran­ka=uvodni
ale třeba u zábavy ano.

 
Odpovědět 29.8.2012 9:44
Avatar
Kit
Redaktor
Avatar
Odpovídá na Daniel Vítek
Kit:

Obvyklý požadavek je přesně obráceně. Zkus zagooglit "hezká URL".

Nahoru Odpovědět 29.8.2012 10:31
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Daniel Vítek
David Čápka:

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.

Nahoru Odpovědět 29.8.2012 11:20
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Kit
Redaktor
Avatar
Odpovídá na David Čápka
Kit:

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/

Nahoru Odpovědět 29.8.2012 12:24
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Kit
David Čápka:

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.

Nahoru Odpovědět 29.8.2012 12:56
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Kit
Redaktor
Avatar
Odpovídá na David Čápka
Kit:

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.

Nahoru Odpovědět 29.8.2012 13:09
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Kit
David Čápka:

Jak jednou pravil David Jančík [sczdavos]: "Mě to ale nezajímá. Stejně jako nechci pochopit ženu, tak nechci pochopit .htaccess." :D

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.

Nahoru Odpovědět 29.8.2012 13:54
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Dan (nechtělo se mi přihlašovat :D)
Tým ITnetwork
Avatar
Dan (nechtělo se mi přihlašovat :D):

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..

 
Nahoru Odpovědět 31.8.2012 17:11
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Daniel Vítek
David Čápka:

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.

Nahoru Odpovědět 31.8.2012 17:34
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Daniel Vítek
David Čápka:

Možná k těm parametrům dává smysl spíše clanek a parametr, skript a akce a podobně.

Nahoru Odpovědět 31.8.2012 17:36
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 10.