NOVINKA: Najžiadanejšie rekvalifikačné kurzy teraz s 50% zľavou + kurz AI ZADARMO. Nečakaj, táto ponuka dlho nevydrží! Zisti viac:
Avatar
Matúš Petrofčík:3.8.2014 21:00

Zdravím, našiel by sa nejaký odborník do .htaccess súborov?
Konkrétne by som potreboval kód, ktorý zapne mod_rewrite, ak v adrese nie je www. tak aby to tam pridalo, a aby sa nastavilo presmerovanie na index.php pokiaľ súbor neexistuje (samozrejme povoliť len niektoré súbory ako .jpg, .css, .ico ...)

toto som poskladal pomocou googlovania, ale úprimne, neviem čo to robí a rád by som, ak by mi niekto vysvetlil a poprípade navrhol lepšie riešenie :) verím že sa niekto nájde

Options -Indexes

RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} !www.([^.]+).([a-z]{2,5})$
RewriteRule (.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule !\.(js|ico|gif|jpg|png|css)$ index.php [L]

AddType application/x-httpd-php .php .phtml
Odpovedať
3.8.2014 21:00
obsah kocky = r^2 ... a preto vlak drnká
Avatar
Neaktivní uživatel:3.8.2014 22:40

Ahoj, tvůj seskládaný .htaccess by měl fungovat perfektně, ale vysvětlím ti, co jednotlivé položky znamenají.
První řádek zakazuje dir. Listing.
Druhý zapíná mod_rewrite.
Třetí nastavuje kořen pro mod_rewrite.
Čtvrtý definuje pravidlo, tedy pokud bude splněna tato podmínka, upraví se dle RewriteRule níže. Zde to znamená, že pokud není přítomno www a je přítomna adresa dle RFC 1035, potom vrať klientovi návratový kód 301 a adresu s www.
Další dva řádky definují podmínku, pokud není žádaný soubor/složka nalezen, a pokud není přípona souboru v seznamu povolených, vrať klientovi index.php.
Na dalším řádku se definuje, které typy souborů budou přepracovány phpčkem, než se zobrazí klientovi.

Editované
Hore Odpovedať
3.8.2014 22:40
Neaktivní uživatelský účet
Avatar
Odpovedá na Neaktivní uživatel
Matúš Petrofčík:4.8.2014 0:58

-f je predpokladám file, -d directory, neviem čo však v 4. riadku znamená {2,5}, a ako vlastne funguje tá podmienka pre povolené súbory?

Veľmi som sa tým nezaoberal, nakoľko som si veľa vecí overoval cez php, ale príde mi to zbytočné pokiaľ sa server dá nastaviť takto (poprípade v httpd.conf).

Mal by si (alebo poznáš) nejaký zrozumiteľný manuál v CZ/SK jazyku? Anglicky viem, ale trvá mi to príliš dlho. :)
Ďakujem.

Editované
Hore Odpovedať
4.8.2014 0:58
obsah kocky = r^2 ... a preto vlak drnká
Avatar
Odpovedá na Neaktivní uživatel
Matúš Petrofčík:4.8.2014 1:50

asi to nemám najlepšie, lebo ak tam zadám m.dačo.sk, tak sa mi to zacyklí

http://www.www.www.www.www.www.www.www.www.www.www.www.www.www.www.www.www.www.www.www.www.m.dačo.sk

a to nechcem

Hore Odpovedať
4.8.2014 1:50
obsah kocky = r^2 ... a preto vlak drnká
Avatar
Odpovedá na Matúš Petrofčík
Neaktivní uživatel:4.8.2014 8:37

Ano, sorry, včera na mobilu jsem funkčnost jen odhadoval. Napsal jsem ti nový .htaccess :

Options -Indexes

RewriteEngine on
RewriteBase /

RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTP_HOST} ^([a-z.]+)$ [NC]
RewriteRule ^(.*)$ http://www.%1/$1 [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule !\.(js|ico|gif|jpg|png|css)$ index.php [L]

AddType application/x-httpd-php .php .phtml

Jak sis mohl všimnout, přepsal jsem RewriteCond a RewriteRule pro přidání www.
První RewriteCond se splní, pokud na začátku URL není www.
Další ověřuje, jestli je v URL nějaký text.
A poté jen přepíše vše, a to za použití parametrů, které získal v RewriteCondech.
Podmínka pro soubory funguje přesně tak, jak myslíš. Vezne se jméno požadovaného souboru, a zjistí se, jestli to není soubor (!-f) nebo složka (!-d) na serveru.
RewriteRule potom zjistí, jestli není přípona souboru mezi těmi, které nemá přepisovat a pokud ne, přepíše ji tak, aby se návštěvníkovi zobrazil index.php.
AddType přidá projetí PHP preprocesorem pro soubory typu php a phtml, před tím, než se zobrazí návštěvníkovi.
Knihu o apache žádnou neznám (leda v angličtině Apache Cookbook), ale po chvilce Googlování jsem narazil na http://knihy.cpress.cz/…erver-2.html

Hore Odpovedať
4.8.2014 8:37
Neaktivní uživatelský účet
Avatar
Odpovedá na Neaktivní uživatel
Matúš Petrofčík:4.8.2014 22:02

Moc krát ďakujem! :)

Hore Odpovedať
4.8.2014 22:02
obsah kocky = r^2 ... a preto vlak drnká
Avatar
David Hynek
Tvůrce
Avatar
Odpovedá na Matúš Petrofčík
David Hynek:4.8.2014 22:07

Zdar... nainstaloval jsem si tuhle UNISERVER s za boha jsem tam nemohl zprovoznit .htaccess nakonec jsem zjistil, že na začátku musí být tohle:

Options FollowSymLinks

nevím, zda to upotřebíš, ale prý to potřebují některé servery, aby jim rewrite fungovalo...

Editované
Hore Odpovedať
4.8.2014 22:07
Čím víc vím, tím víc věcí nevím.
Avatar
Odpovedá na David Hynek
Matúš Petrofčík:4.8.2014 22:22

mne to funguje aj bez toho, ale idem pogoogliť čo to vlastne je :D

Hore Odpovedať
4.8.2014 22:22
obsah kocky = r^2 ... a preto vlak drnká
Avatar
Odpovedá na Matúš Petrofčík
Neaktivní uživatel:5.8.2014 9:49

Je to nastavení, které říká serveru, že má následovat symbolické linky na soubory (a složky).

Hore Odpovedať
5.8.2014 9:49
Neaktivní uživatelský účet
Avatar
mkub
Tvůrce
Avatar
Odpovedá na Matúš Petrofčík
mkub:7.8.2014 12:57

a aby ti to fungovalo, musis mat zavedeny mod_rewrite v konfiguracii Apache, inak ti ten .htaccess bude vyhadzovat chybu, ze nepozna danu direktivu pri nezavedenom module

direktiva RewriteEngine to iba zapina/vypina a je zavisla od zavedenia modulu mod_rewrite

 
Hore Odpovedať
7.8.2014 12:57
Avatar
Odpovedá na mkub
Matúš Petrofčík:7.8.2014 13:09

toto som riešil tak pred rokom keď som si prvý raz nainštaloval WAMP, tam je to defaultne vypnuté (a aj posielanie súborov)

Hore Odpovedať
7.8.2014 13:09
obsah kocky = r^2 ... a preto vlak drnká
Robíme čo je v našich silách, aby bola tunajšia diskusia čo najkvalitnejšia. Preto do nej tiež môžu prispievať len registrovaní členovia. Pre zapojenie sa do diskusie sa zaloguj. Ak ešte nemáš účet, zaregistruj sa, je to zadarmo.

Zobrazené 11 správy z 11.