Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Pokročilejší .htaccess

Aktivity
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
Odpovědět
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.

Editováno 3.8.2014 22:41
Nahoru Odpovědět
3.8.2014 22:40
Neaktivní uživatelský účet
Avatar
Odpovídá 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.

Editováno 4.8.2014 0:58
Nahoru Odpovědět
4.8.2014 0:58
obsah kocky = r^2 ... a preto vlak drnká
Avatar
Odpovídá 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

Nahoru Odpovědět
4.8.2014 1:50
obsah kocky = r^2 ... a preto vlak drnká
Avatar
Odpovídá 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

Nahoru Odpovědět
4.8.2014 8:37
Neaktivní uživatelský účet
Avatar
Nahoru Odpovědět
4.8.2014 22:02
obsah kocky = r^2 ... a preto vlak drnká
Avatar
David Hynek
Tvůrce
Avatar
Odpovídá 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...

Editováno 4.8.2014 22:07
Nahoru Odpovědět
4.8.2014 22:07
Čím víc vím, tím víc věcí nevím.
Avatar
Odpovídá 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

Nahoru Odpovědět
4.8.2014 22:22
obsah kocky = r^2 ... a preto vlak drnká
Avatar
Odpovídá 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).

Nahoru Odpovědět
5.8.2014 9:49
Neaktivní uživatelský účet
Avatar
mkub
Tvůrce
Avatar
Odpovídá 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

 
Nahoru Odpovědět
7.8.2014 12:57
Avatar
Odpovídá 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)

Nahoru Odpovědět
7.8.2014 13:09
obsah kocky = r^2 ... a preto vlak drnká
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 11 zpráv z 11.