Mod_rewrite u statických stránek (Cool url)

Webdesign, HTML, CSS, Flash, PHP, ASP, .NET, JavaScript. Kritika www stránek na Smetišti.

Moderátor: Moderátoři Živě.cz

Odeslat příspěvekod catina 27. 8. 2010 12:34

zdravím,
vím, že na toto téma tady toho bylo mnoho, myslím, že jsem i vcelku pochopil problematiku zápisu pro dynamicky vytvořené stránky a jejich přepis adresy. Ale nikde jsem nenašel možnost, jak toho docílit na statickém webu s normální strukturou (např. domena.tld/kontakt.php na domena.tld/kontakt/ ). Po různých zkoušení jsem skoro dospěl k závěru, že to nejde.

Má s tím někdo zkušenost?
catina
Kolemjdoucí

Odeslat příspěvekod suk 28. 8. 2010 17:42

nechapes jak se to pouziva nebo co? proste mas neco co se nahradi za neco jinyho a je UUUPLNE jedno, co se zadava a na co se to prepise. At uz je cil statickej nebo neni...
Pokud nesouhlasíte s mým názorem, popřemýšlejte sami nad sebou. Opravdu si myslíte, že já bych se mohl mýlit?
----
You are an inspiration for a birth control...
suk
Mírně pokročilý
Uživatelský avatar

Odeslat příspěvekod Ency 28. 8. 2010 23:09

Nechapes o co jde, nehlede na to, ze pokud mas staticky web (nechapu proc tedy php soubory), tak tu strukturu muzes udelat uplne rucne, podle toho jak si tam nahazis soubory.
Jde o to, ze ty zadas neco do prohlizece treba http://*****.cz/kontakt a apache ti to prelozi na http://*****.cz/kontakt.html (tuto adresu uzivatel nikdy neuvidi) napriklad, to zalezi jak si to napises. Ale u statickeho webu to imho nema prilis smysl.
Budoucnost patří atomu.
Smrt Bursíkovi
Majkl má rád garáž, ale stydí se za to. :mrgreen:

Nenesu odpovědnost za následky, které mohou vzniknout či vzniknou aplikací mé rady! :D
Ency
Junior
Uživatelský avatar

Odeslat příspěvekod Václav M. 30. 8. 2010 20:50

Já mám takové tušení, že tím statický je zde myšleno to, že obsah je asi tak statický jako např. u prezentace z info řádku pod mým avatarem.

To znamená, že je sice vedena v PHP, její obsah se načítá z DB, ale obsah jednotlivých stránek se (téměř) nemění nebo se mění vyjímečně.

Ale jestli jde o způsob, kde každá stránka je skutečně jeden html soubor, tak to považuji za blbost, používat na to .htaccess soubor - protože se tím nic nevyřeší.
Václav M.
Junior
Uživatelský avatar

Odeslat příspěvekod catina 31. 8. 2010 16:26

Tak koukám, že jsem v myšlence trochu přestřelil. Zatím to je na localhostu a jsou to třeba formuláře na kterých se učím a tak jsem i některé stránky uvedl s koncovkou php i když by to nebylo třeba.

Šlo mi spíše o to, jak na "normální" struktuře docílit lepšího url zápisu.

Poněvadž když použiji:
RewriteRule kontakt http://localhost/formulare/kontakt.html
Tak mi to prohlížeč přeloží na http://localhost/formulare/kontakt

Chtěl jsem k tomu připojit na konci ještě lomítko, ale to už mi s tímto zápisem nefunguje (resp. nepřidá se) - to je ale spíše chyba někde v regul. výrazu zatim:
RewriteCond %{REQUEST_URI} !.[[:alnum:]]+$
RewriteRule ^(.+[^/])$ /$1/ [R=301]

Problémem je, že u RewriteRule mi to nefunguje u všech slov pro přeložení. Např. když jsem zkoušel třeba pojem aaa na cesta_jako_vyse/kontakt.html tak to funguje. Ale když použiji slovo kontatk místo aaa, tak to vyhodí chybu 500. Chyba serveru, přitom xampp bych měl mít pro povolení mod_rewritu povolen. A zbytek hlášky nezobrazuje nějakou větší podrobnost.

Když jsem ten samý zápis zkoušel na sice freehostingu ale s možností použít .htaccess tak sice došlo k otevření správného cíle, ale adresa byla, jako by nedošlo k podvržení tedy např. adresa.cz/kontakt.html misto adresa.cz/kontakt resp. adresa.cz/aaa.
catina
Kolemjdoucí

Odeslat příspěvekod Bari007 31. 8. 2010 16:57

U toho problému s RewriteRule to bude tím, že chceš například přepisovat adresu na formulare, ale na hostingu (nebo localhostu) máš složku formulare, pak to nefunguje.
Bari007
VIP uživatel
Uživatelský avatar

Odeslat příspěvekod catina 31. 8. 2010 17:23

Jediná složka je s obrázkama pojmenovaná picutre..právě jsem se zatím vyhnul složkám, protože jsem věděl že by s tím mohly být tyhle problémy.
catina
Kolemjdoucí

Odeslat příspěvekod catina 2. 9. 2010 18:35

Tak nakonec vyřešeno. Pomohl k tomu tento návod: http://mike.treba.cz/mod_rewrite-a-hezke-url-dil-ii/.

Zápis v .htaccess:

RewriteEngine On
RewriteBase /

RewriteCond %{ENV:REDIRECT_STATUS} !^$
RewriteRule .* - [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ $1.php [L]

RewriteRule ^([a-z\-/]+[^/])$ /$1/ [R=301]

S tím, že poslední řádek přidává lomítko na konci odkazu, pokud nebylo uvedeno.
catina
Kolemjdoucí


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 0 návštevníků