Autor | Zpráva | ||
---|---|---|---|
helpik.JPW Profil |
#1 · Zasláno: 4. 1. 2012, 16:18:27 · Upravil/a: helpik.JPW
Dobrý den,
opět řeším situaci s htaccess. O co jde? Mám zavedený web, který má velmi slabou administraci a potřeboval bych přizpůsobilt strukturu webu. Stránky se tvořily zřejmě v PSPadu a nahodile. Co mě zajímá je správné pořadí pravidel v htaccess. Pokud bych měl postupovat podle Yuhu odzhora [1], tak asi od obecnějěích pravidel k těm konkrétnějším? 1/ 404 2/ index 3/ redirect (z www na bez, nebo z bez na www) 4/ automatické redirecty skupin stránek se stejným zaměřením (se stejnou kategorií) - RedirectMatch (.*)_(.*)\.htm$ $1-$2.html ) // - všude kde je "_" -> "-" - RedirectMatch (.*)\.htm$ $1.html // - stránky končící htm -> html - RedirectMatch (.*)galerie(.*)\.htm$ $1fotogalerie$2.html ) // - všude kde je "galerie" -> "fotogalerie" 5/ redirecty různých stránek Redirect 301 /pozvanka.htm http://www.domena.cz/upload/pozvanka-na-udalost/pozvanka-na-silvestra-2011.html - může být? 6/ # Cacheovani ... # Komprese ... Nebo na pořadí nezáleží? Co zdroj to trochu jiný pohled na věc. Někde se oběvují porty 80, malinko jiný sintaxe ... Na zdroji [2] mě zaujala: RewriteCond %{HTTP_USER_AGENT} Wget [OR] RewriteCond %{HTTP_USER_AGENT} CherryPickerSE [OR] RewriteCond %{HTTP_USER_AGENT} CherryPickerElite [OR] RewriteCond %{HTTP_USER_AGENT} EmailCollector [OR] RewriteCond %{HTTP_USER_AGENT} EmailSiphon [OR] RewriteCond %{HTTP_USER_AGENT} EmailWolf [OR] RewriteCond %{HTTP_USER_AGENT} ExtractorPro RewriteRule ^.*$ http://www.spampoison.com/ [L] //- Tento kód odhalí většinu SPAM botů, které přesměruje pryč z Vašeho webu. //- Tento kód přesměruje SPAM bota na adresu: http://www.spampoison.com/. a ve zdroji [3]: //Block bad bots RewriteEngine On RewriteCond %{HTTP_USER_AGENT} ^BlackWidow [OR] RewriteCond %{HTTP_USER_AGENT} ^Bot\ mailto:craftbot@yahoo.com [OR] RewriteCond %{HTTP_USER_AGENT} ^ChinaClaw [OR] RewriteCond %{HTTP_USER_AGENT} ^Custo [OR] RewriteCond %{HTTP_USER_AGENT} ^DISCo [OR] RewriteCond %{HTTP_USER_AGENT} ^Download\ Demon [OR] RewriteCond %{HTTP_USER_AGENT} ^eCatch [OR] RewriteCond %{HTTP_USER_AGENT} ^EirGrabber [OR] RewriteCond %{HTTP_USER_AGENT} ^EmailSiphon [OR] RewriteCond %{HTTP_USER_AGENT} ^EmailWolf [OR] RewriteCond %{HTTP_USER_AGENT} ^Express\ WebPictures [OR] RewriteCond %{HTTP_USER_AGENT} ^ExtractorPro [OR] RewriteCond %{HTTP_USER_AGENT} ^EyeNetIE [OR] RewriteCond %{HTTP_USER_AGENT} ^FlashGet [OR] RewriteCond %{HTTP_USER_AGENT} ^GetRight [OR] RewriteCond %{HTTP_USER_AGENT} ^GetWeb! [OR] RewriteCond %{HTTP_USER_AGENT} ^Go!Zilla [OR] RewriteCond %{HTTP_USER_AGENT} ^Go-Ahead-Got-It [OR] RewriteCond %{HTTP_USER_AGENT} ^GrabNet [OR] RewriteCond %{HTTP_USER_AGENT} ^Grafula [OR] RewriteCond %{HTTP_USER_AGENT} ^HMView [OR] RewriteCond %{HTTP_USER_AGENT} HTTrack [NC,OR] RewriteCond %{HTTP_USER_AGENT} ^Image\ Stripper [OR] RewriteCond %{HTTP_USER_AGENT} ^Image\ Sucker [OR] RewriteCond %{HTTP_USER_AGENT} Indy\ Library [NC,OR] RewriteCond %{HTTP_USER_AGENT} ^InterGET [OR] RewriteCond %{HTTP_USER_AGENT} ^Internet\ Ninja [OR] RewriteCond %{HTTP_USER_AGENT} ^JetCar [OR] RewriteCond %{HTTP_USER_AGENT} ^JOC\ Web\ Spider [OR] RewriteCond %{HTTP_USER_AGENT} ^larbin [OR] RewriteCond %{HTTP_USER_AGENT} ^LeechFTP [OR] RewriteCond %{HTTP_USER_AGENT} ^Mass\ Downloader [OR] RewriteCond %{HTTP_USER_AGENT} ^MIDown\ tool [OR] RewriteCond %{HTTP_USER_AGENT} ^Mister\ PiX [OR] RewriteCond %{HTTP_USER_AGENT} ^Navroad [OR] RewriteCond %{HTTP_USER_AGENT} ^NearSite [OR] RewriteCond %{HTTP_USER_AGENT} ^NetAnts [OR] RewriteCond %{HTTP_USER_AGENT} ^NetSpider [OR] RewriteCond %{HTTP_USER_AGENT} ^Net\ Vampire [OR] RewriteCond %{HTTP_USER_AGENT} ^NetZIP [OR] RewriteCond %{HTTP_USER_AGENT} ^Octopus [OR] RewriteCond %{HTTP_USER_AGENT} ^Offline\ Explorer [OR] RewriteCond %{HTTP_USER_AGENT} ^Offline\ Navigator [OR] RewriteCond %{HTTP_USER_AGENT} ^PageGrabber [OR] RewriteCond %{HTTP_USER_AGENT} ^Papa\ Foto [OR] RewriteCond %{HTTP_USER_AGENT} ^pavuk [OR] RewriteCond %{HTTP_USER_AGENT} ^pcBrowser [OR] RewriteCond %{HTTP_USER_AGENT} ^RealDownload [OR] RewriteCond %{HTTP_USER_AGENT} ^ReGet [OR] RewriteCond %{HTTP_USER_AGENT} ^SiteSnagger [OR] RewriteCond %{HTTP_USER_AGENT} ^SmartDownload [OR] RewriteCond %{HTTP_USER_AGENT} ^SuperBot [OR] RewriteCond %{HTTP_USER_AGENT} ^SuperHTTP [OR] RewriteCond %{HTTP_USER_AGENT} ^Surfbot [OR] RewriteCond %{HTTP_USER_AGENT} ^tAkeOut [OR] RewriteCond %{HTTP_USER_AGENT} ^Teleport\ Pro [OR] RewriteCond %{HTTP_USER_AGENT} ^VoidEYE [OR] RewriteCond %{HTTP_USER_AGENT} ^Web\ Image\ Collector [OR] RewriteCond %{HTTP_USER_AGENT} ^Web\ Sucker [OR] RewriteCond %{HTTP_USER_AGENT} ^WebAuto [OR] RewriteCond %{HTTP_USER_AGENT} ^WebCopier [OR] RewriteCond %{HTTP_USER_AGENT} ^WebFetch [OR] RewriteCond %{HTTP_USER_AGENT} ^WebGo\ IS [OR] RewriteCond %{HTTP_USER_AGENT} ^WebLeacher [OR] RewriteCond %{HTTP_USER_AGENT} ^WebReaper [OR] RewriteCond %{HTTP_USER_AGENT} ^WebSauger [OR] RewriteCond %{HTTP_USER_AGENT} ^Website\ eXtractor [OR] RewriteCond %{HTTP_USER_AGENT} ^Website\ Quester [OR] RewriteCond %{HTTP_USER_AGENT} ^WebStripper [OR] RewriteCond %{HTTP_USER_AGENT} ^WebWhacker [OR] RewriteCond %{HTTP_USER_AGENT} ^WebZIP [OR] RewriteCond %{HTTP_USER_AGENT} ^Wget [OR] RewriteCond %{HTTP_USER_AGENT} ^Widow [OR] RewriteCond %{HTTP_USER_AGENT} ^WWWOFFLE [OR] RewriteCond %{HTTP_USER_AGENT} ^Xaldon\ WebSpider [OR] RewriteCond %{HTTP_USER_AGENT} ^Zeus RewriteRule ^.* - [F,L] zdroje: [1] http://www.jakpsatweb.cz/server/htaccess.html [2] http://htaccess.all4all.cz/ [3] http://www.htaccessredirect.net/index.php |
||
Davex Profil |
#2 · Zasláno: 4. 1. 2012, 19:45:47
helpik.JPW:
„Pokud bych měl postupovat podle Yuhu odzhora [1], tak asi od obecnějěích pravidel k těm konkrétnějším?“ Mělo by to být přesně naopak - konkrétnější před obecnějšími (i Yuhů to tak má). Na umístění konfiguračních direktiv jako ErrorDocument , DirectoryIndex a Options nezáleží, ale pro lepší přehlednost mohou být u sebe.
Blokování přístupu podle User Agenta je celkem neefektivní, protože nejvíc škodící roboti se maskují jako normální prohlížeč. Co jsem si všiml, tak v tom výpisu jsou zablokované i užitečné programy jako Wget a různé stahovače stránek pro offline prohlížení. Osobně bych to použil jen pro selektivní blokování nějakého opravdu otravujícího robota, který nerespektuje vyloučení v souboru robots.txt. |
||
helpik.JPW Profil |
#3 · Zasláno: 5. 1. 2012, 12:12:02 · Upravil/a: helpik.JPW
// 404 # nastaveni vychozi stranky adresare DirectoryIndex index.php #Spuštění mod rewrite RewriteEngine on #definice výchozího adresare RewriteBase / RewriteCond %{THE_REQUEST} ^.*/index.html RewriteRule ^(.*)index.html$ http://neco.domena.cz/$1 [R=301,L] RewriteCond %{THE_REQUEST} ^.*/index.php RewriteRule ^(.*)index.php$ http://neco.domena.cz/$1 [R=301,L] // konkrétní redirecty Redirect 301 /pozvanka.htm http://neco.domena.cz/upload/pozvanka-na-udalost/pozvanka-na-silvestra-2011.html // obecné a skupinové redisrecty RedirectMatch (.*)_(.*)\.htm$ $1-$2.html ) // - všude kde je "_" -> "-" RedirectMatch (.*)\.htm$ $1.html // - stránky končící htm -> html RedirectMatch (.*)galerie(.*)\.htm$ $1fotogalerie$2.html # Cacheovani ExpiresActive On # vychozi expirace 5 minut ExpiresDefault A300 # expirace podle typu souboru - 1 týden: # expiruje pocet sekund pote, kdy byl accessnut (A) ExpiresByType application/x-javascript A604800 ExpiresByType text/javascript A604800 ExpiresByType text/css A604800 ExpiresByType image/gif A604800 ExpiresByType image/jpeg A604800 ExpiresByType image/jpg A604800 ExpiresByType image/p-jpeg A604800 ExpiresByType image/png A604800 Ten Options +FollowSymLinks - když jsem to zkoušel připisovat, vždy mi to hodilo chybu, tak jsem to vynechal Mám to tedy zhruba dobře? Děkuji |
||
helpik.JPW Profil |
Mohl by jste mi prosím kouknout na tento htaccess? Zdá se v pořádku, ale nevím jak ošetřit duplicitu při zadání http://www.subdomena.domena.cz. Stále mi to vací 403 a You don’t have permission to access / on this server.
# nastaveni vychozi stranky adresare DirectoryIndex index.php #Spuštění mod rewrite RewriteEngine on #definice výchozího adresare RewriteBase / #RewriteCond %{HTTP_HOST} ^www.subdomena.domena.cz [NC] #RewriteRule (.*)www.subdomena.domena.cz$ http://subdomena.domena.cz/$1 [R=301,L] # ekvivalent??? Ale také nefunkční … RewriteRule http://www.subdomena.domena.cz subdomena.domena.cz [R=301,L] RewriteCond %{THE_REQUEST} ^.*/index.php RewriteRule ^(.*)index.php$ http://subdomena.domena.cz/$1 [R=301,L] # nebo ??? RewriteRule index.php / [R=301,L] RewriteCond %{THE_REQUEST} ^.*/index.html RewriteRule ^(.*)index.html$ http://subdomena.domena.cz/$1 [R=301,L] RewriteCond %{THE_REQUEST} ^.*/index.htm RewriteRule ^(.*)index.htm$ http://subdomena.domena.cz/$1 [R=301,L] RewriteCond %{THE_REQUEST} ^.*/default.asp RewriteRule ^(.*)default.asp$ http://subdomena.domena.cz/$1 [R=301,L] RewriteCond %{THE_REQUEST} ^.*/default.aspx RewriteRule ^(.*)default.aspx$ http://subdomena.domena.cz/$1 [R=301,L] # Cacheovani ExpiresActive On # vychozi expirace 5 minut ExpiresDefault A300 # expirace podle typu souboru – 1 týden: # expiruje pocet sekund pote, kdy byl accessnut (A) ExpiresByType application/x-javascript A604800 ExpiresByType text/javascript A604800 ExpiresByType text/css A604800 ExpiresByType image/gif A604800 ExpiresByType image/jpeg A604800 ExpiresByType image/jpg A604800 ExpiresByType image/p-jpeg A604800 ExpiresByType image/png A604800 Děkuji |
||
Davex Profil |
helpik.JPW:
Podle chyby 403 to vypadá, že ke zpracování tohoto souboru .htaccess vůbec nedojde. Je tento soubor ve správném adresáři pro subdoménu? Jinak to odstranění indexů a defaultů by šlo zjednodušit do jednoho pravidla: RewriteCond %{ENV:REDIRECT_STATUS} ="" RewriteRule ^(.+/)?(?:index\.(?:html?|php)|default\.aspx?)$ http://subdomena.domena.cz/$1 [R=301,NE,L] Univerzální přesměrování z varianty s www (doména 4. řádu) na variantu bez www (3. řádu): w>ww.subdomain.example.com -> subdomain.example.com RewriteCond %{HTTP_HOST} ^www\.([^.]+\.[^.]+\.[^.]+)$ RewriteRule ^(.*)$ http://%1/$1 [R=301,NE,L] |
||
Časová prodleva: 4 dny
|
|||
helpik.JPW Profil |
#6 · Zasláno: 11. 1. 2012, 23:25:23
Děkuji za poměrně značné zkácení kódu.
Jsem zvědavý a rewriterule jsem nenašel co znamená to NE. Souvisí to snad se subdoménou? |
||
Davex Profil |
#7 · Zasláno: 12. 1. 2012, 00:01:12
helpik.JPW:
„Jsem zvědavý a rewriterule jsem nenašel co znamená to NE.“ Já tam příznak NE vidím - podrobně a příklad Davida Grudla.
|
||
helpik.JPW Profil |
#8 · Zasláno: 12. 1. 2012, 16:40:50 · Upravil/a: helpik.JPW
Davex:
To je jiná stránka :) , nicméně děkuji. Jestli tomu rozumím, tak ten příznak NE by se měl dávat vždy, pokud přesměrovávám a píše mi to nestejnou hodnotu => když nechci escapovat původní? Respektive pokud bych příznak NE nepřidal, tak poznám nějakou chybu jen náhodou a kdo ví kdy, takže NE dávat raději vždy? Davex: > Univerzální přesměrování z varianty s www (doména 4. řádu) na variantu bez www (3. řádu): > > w>ww.subdomain.example.com -> subdomain.example.com > > > RewriteCond %{HTTP_HOST} ^www\.([^.]+\.[^.]+\.[^.]+)$ > RewriteRule ^(.*)$ http://%1/$1 [R=301,NE,L] Je zde nutné něco přepsat? Stále mi to házi chybu: <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>403 Forbidden</title> </head><body> <h1>Forbidden</h1> <p>You don't have permission to access / on this server.</p> <p>Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.</p> </body></html> Vaše zjednodušení na odstranění indexů funguje perfektně. Děkuji |
||
helpik.JPW Profil |
#9 · Zasláno: 12. 1. 2012, 18:34:07
Davex:
„Je tento soubor ve správném adresáři pro subdoménu?“ Pokud jste myslel to, zda je tento soubor hraccess v rootu subdomena.domena.cz , tak odpovídám ANO je. a RewriteBase / Má cenu se vůbec zajímat tím, zda se má po zadání www.subdomena.domena.cz přesmerovat na subdomena.domena.cz? Třeba je to zcela zbytečné. Chtěl jsem odstranit duplicity. |
||
Davex Profil |
#10 · Zasláno: 12. 1. 2012, 20:14:04
helpik.JPW:
„ten příznak NE by se měl dávat vždy, pokud přesměrovávám a píše mi to nestejnou hodnotu => když nechci escapovat původní?“ Vždy, když se přesměrovávají adresy s parametry ve kterých se mohou vyskytovat znaky s diakritikou nebo se zvláštním určením. David Grudl ukazuje co se s tím pak bez příznaku NE stane.
„Je zde nutné něco přepsat? Stále mi to házi chybu:“ Nechybí tam RewriteEngine On ? Nebo jak vypadá celý .htaccess pro subdoménu?
> „Je tento soubor ve správném adresáři pro subdoménu?“ > Pokud jste myslel to, zda je tento soubor hraccess v rootu subdomena.domena.cz , tak odpovídám ANO je. Šlo mi o to, zda varianta s www směřuje do stejného adresáře na webserveru jako bez www a jestli tedy mají společný soubor .htaccess. |
||
Časová prodleva: 3 dny
|
|||
helpik.JPW Profil |
#11 · Zasláno: 15. 1. 2012, 23:21:21
Davex:
„mohou vyskytovat znaky s diakritikou nebo se zvláštním určením“ Rozumím. „Nechybí tam RewriteEngine On? Nebo jak vypadá celý .htaccess pro subdoménu?“ To by mohl být ten problém. Htacess je níže. ########## ## Nastaveni vychozi stranky adresare ## DirectoryIndex index.php ## ########## ########## ## Spuštění mod rewrite RewriteEngine on ########## ########## ## Definice výchozího adresare ## RewriteBase / ## ########## ########## ## Univerzální přesměrování z varianty s www (doména 4. řádu) na variantu bez www (3. řádu): ## ## www.subdomain.example.com -> subdomain.example.com ## NEFUNGUJE !!! #RewriteCond %{HTTP_HOST} ^www\.([^.]+\.[^.]+\.[^.]+)$ #RewriteRule ^(.*)$ http://%1/$1 [R=301,NE,L] ## ########## ########## ## ## Duplicita indexů ## #RewriteCond %{THE_REQUEST} ^.*/index.php #RewriteRule ^(.*)index.php$ http://subdomena.domena.cz/$1 [R=301,L] ## nebo ??? RewriteRule index.php / [R=301,L] #RewriteCond %{THE_REQUEST} ^.*/index.html #RewriteRule ^(.*)index.html$ http://subdomena.domena.cz/$1 [R=301,L] #RewriteCond %{THE_REQUEST} ^.*/index.htm #RewriteRule ^(.*)index.htm$ http://subdomena.domena.cz/$1 [R=301,L] #RewriteCond %{THE_REQUEST} ^.*/default.asp #RewriteRule ^(.*)default.asp$ http://subdomena.domena.cz/$1 [R=301,L] #RewriteCond %{THE_REQUEST} ^.*/default.aspx #RewriteRule ^(.*)default.aspx$ http://subdomena.domena.cz/$1 [R=301,L] ## RewriteCond %{ENV:REDIRECT_STATUS} ="" RewriteRule ^(.+/)?(?:index\.(?:html?|php)|default\.aspx?)$ http://subdomena.domena.cz/$1 [R=301,NE,L] ## ########## # Cacheovani ExpiresActive On # vychozi expirace 5 minut ExpiresDefault A300 # expirace podle typu souboru - 1 týden: # expiruje pocet sekund pote, kdy byl accessnut (A) ExpiresByType application/x-javascript A604800 ExpiresByType text/javascript A604800 ExpiresByType text/css A604800 ExpiresByType image/gif A604800 ExpiresByType image/jpeg A604800 ExpiresByType image/jpg A604800 ExpiresByType image/p-jpeg A604800 ExpiresByType image/png A604800 „Šlo mi o to, zda varianta s www směřuje do stejného adresáře na webserveru jako bez www a jestli tedy mají společný soubor .htaccess.“ adresářová struktura domeny je: / = domena.cz - 3 html podstránky; htaccess zde není ale zcela jistě bych ho měl vytvořit co nejdříve. Předpokládám že bude obdobný se zde probíraným htaccess. subdomena1/ = subdomena1.domena.cz. O této subdoméně se bavíme. Hodně HTML stránek a fotek. O tento htaccess se snažím subdomena2/ = subdeomena2.domena.cz. S touto subdoménou nic neplánuji |
||
Davex Profil |
#12 · Zasláno: 15. 1. 2012, 23:40:53
Takže .htaccess je nejspíš správně.
• Nepřesměruje se ani po odkomentování těch řádků 22 a 23 nebo proč jsou zakomentované? • Přesměruje se adresa w>ww.subdomena1.domena.cz/index.htm nebo podobná s indexem? • Když se přidá do adresáře subdomena1/ nějaký soubor, tak je přístupný na adrese w>ww.subdomena1.domena.cz/nejaky.soubor? |
||
Časová prodleva: 3 dny
|
|||
helpik.JPW Profil |
#13 · Zasláno: 18. 1. 2012, 17:14:43
Davex:
„Nepřesměruje se ani po odkomentování těch řádků 22 a 23 nebo proč jsou zakomentované?“ Zakomentoval jsem je, jelikož nepřesměrovávají. Stále chyba 403 „Přesměruje se adresa w>ww.subdomena1.domena.cz/index.htm nebo podobná s indexem?“ Nikoliv. Tentokráte chyba 404. „Když se přidá do adresáře subdomena1/ nějaký soubor, tak je přístupný na adrese w>ww.subdomena1.domena.cz/nejaky.soubor?“ Nikolov. Tentokráte opět chyba 404. |
||
Davex Profil |
#14 · Zasláno: 19. 1. 2012, 18:55:44
helpik.JPW:
> „Když se přidá do adresáře subdomena1/ nějaký soubor, tak je přístupný na adrese w>ww.subdomena1.domena.cz/nejaky.soubor?“ > Nikolov. Tentokráte opět chyba 404. Subdoména bez www tedy nemá společný prostor s variantou s www a soubor .htaccess pro variantu s www musí být asi ještě jinde. |
||
Časová prodleva: 12 let
|
0