| 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 A604800Ten 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 A604800Dě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: 15 let
|
|||
0