Користење на htaccess. Како да креирате и правилно да ја конфигурирате датотеката htaccess? Одбијте пристап до сите датотеки со одредена екстензија

Ние користиме Apache httpd како главен веб-сервер. Apache се користи за организирање на повеќето веб-сервери во светот и е најмасовниот производ од својата класа. Овој сервер е многу конфигуриран, многу способен и ги поддржува сите познати протоколи за водење на веб-сервери. Специјално за Apache, создадени се верзии на такви популарни програмски јазици како Perl и PHP, а овој сервер исто така лесно се интегрира со широко користени DBMS (на пример, MySQL).

Главното место на проектот е на httpd.apache.org, а главната документација за верзијата 1.3.xx е достапна на httpd.apache.org/docs/.

На корисниците им нудиме можност самостојно да го конфигурираат Apache со користење на соодветни директиви во . На овој начин, можете да ги решите повеќето од задачите за конфигурирање на веб-сервер во масовна средина за хостирање.

Индекс датотека

Индекс-датотека или индексна датотека е датотеката што стандардно се отвора кога корисникот пристапува до директориумот преку веб, а не кон одредена датотека. На пример, вашиот посетител ќе побара http://your_domain/price/ , каде што цената е името на директориумот. Индекс-датотека е датотеката што ќе му се прикаже на корисникот кога ќе пристапи до директориумот без да го наведете името на одредена датотека во него.

Стандардните индексни датотеки се: index.html, index.htm, index.php, index.php3, index.phtml, index.shtml, default.htm или default.html. Ако сакате прво да се отвори некоја друга датотека, треба да ги отфрлите тековните вредности. Прочитајте како да го направите тоа.

Цел и употреба на датотеката .htaccess

Датотеката .htaccess (забележете дека првиот знак во името на датотеката е точка) се користи за контрола на веб-серверот на Apache од страната на крајниот корисник на хостинг. Во оваа датотека ставате директиви, кои веб-серверот ги прифаќа и обработува, преземајќи дејства според поставките што ги направил корисникот.

Датотеката .htaccess може да се смести во root директориумот на веб-серверот (десно во директориумот www). Во овој случај, директивите од таков .htaccess важат за целиот веб-сервер. Исто така, .htaccess може да се наоѓа во одредена поддиректориум на серверот. Тогаш директивите кои се наведени во оваа датотека го „префрлаат“ дејството на директивите од „главната“ датотека, која се наоѓа во директориумот www или во кој било директориум од повисоко ниво. Односно, ефектот на директивите од .htaccess се наследува од врвот до дното, но не и обратно. Промените направени во датотеката стапуваат на сила веднаш. Ова се должи на фактот што информациите од .htaccess се препрочитуваат секој пат кога ќе се пристапи до веб-серверот на Apache.

Повеќето од достапните директиви за веб-сервер може да се стават во .htaccess. Треба да се забележи дека директивите, во чиј опис во полето Контекст не се споменува .htaccess, не се достапни за употреба во оваа конфигурациска датотека. Користејќи ја директивата AddType како пример, гледаме дека полето Контекст содржи споменување на .htaccess, па можете да го користите:

Ако не успеавте да ја искористите потребната директива и видовте грешка откако ја додадовте директивата на .htaccess, најверојатно, употребата на командата е забранета во услови на споделен хостинг. Пишете до техничка поддршка, ние ќе се обидеме да ви помогнеме. Ве молиме детално опишете го проблемот и наведете ги целите што сакате да ги постигнете со користење на оваа директива.

Заштитен ѕид на веб-апликации

За откривање и спречување напади на веб-локации, потребен е заштитен ѕид на веб-апликации (ModSecurity). Проверката се врши со одреден сет на правила, а доколку не се помине, барањето до страницата се одбива со грешка (403 забрането).

Во случај на лажни позитиви, можно е да се оневозможат правилата преку .htaccess користејќи ги опциите подолу:

  • SecRuleRemoveById - отстранете правило по id
  • SecRuleRemoveByTag - отстранете правило по ознака.

Може да одредите кое правило треба да се оневозможи во error log error.log

Пример за оневозможување со ID:

SecRuleRemoveById 933100 933150

Примери за оневозможување со ознака:

SecRuleRemoveByTag "attack-injection-php" SecRuleRemoveByTag "CWAF" Префрлање на кодирање:

Стандардно, веб-серверот ги „дава“ сите html документи што се хостирани на серверот во кодирањето на Windows-1251. Можете да го промените типот на кодирање во кој веб-серверот ќе „дава“ информации во вашата лична сметка.

За да го направите ова, одете во делот Стебло на услуги и изберете го доменот за кој сакате да го промените типот на кодирање. Следно, во списокот со параметри, пронајдете го кодирањето на линијата (стандардно) и кликнете на додадете, како што е прикажано на сликата подолу.

Можете исто така да го промените кодирањето користејќи ја датотеката .htaccess. За да го направите ова, додадете ја линијата

AddType "text/html; charset=koi8-r" .html .htm .shtml

По добивањето на таков .htaccess, веб-серверот на Apache ќе издаде заглавие на прелистувачот на клиентот, што ќе покаже дека документот има кодирање koi8-r.

Ако вашиот ресурс има html документи во различни шифри (ISO-8859-1, Windows-1250, Windows-1252, UTF-8), тогаш можеби ќе треба да го оневозможите присилниот излез на заглавието со кодирањето на Windows-1251. За да го направите ова, линијата се додава на .htaccess:

AddDefaultCharset Исклучено

Во овој случај, соодветното кодирање мора да биде напишано на секоја HTML страница во форма на ознака

Пример: како да заклучите директориум со лозинка

Една од вообичаените задачи што ги решава .htaccess е ограничување на пристапот до одреден директориум на серверот. На пример, треба да им дадете пристап до одреден директориум на поединечни посетители, притоа обезбедувајќи им единствен најава и лозинка.

Во директориумот до кој сакаме да го ограничиме пристапот со лозинка, креирајте датотека .htaccess со следните директиви:

AuthType Основно AuthName "Some Name" AuthUserFile /home/uXXXX /.htpasswd бара валиден корисник

Патеката /home/uXXXXX/.htpasswd е целосната патека до датотеката со лозинка на дискот на нашиот сервер. Ако, на пример, ја ставите датотеката .htpasswd (ќе содржи лозинки) во вашиот домашен директориум, каде што доаѓате до серверот преку FTP, тогаш патеката до оваа датотека ќе изгледа како /home/uXXXXXX/.htpasswd , каде што uXXXXX е името на вашите виртуелни страници (на пример, u12345).

Во директивата AuthUserFile, ја одредуваме апсолутната патека до датотеката со најавувања/лозинки, која ќе ја креираме малку подоцна. Ако ја креирате датотеката .htaccess на вашиот компјутер, а не директно на серверот користејќи уредувач на текст, ве молиме имајте предвид дека .htaccess мора да се пренесе преку FTP во строго текстуален режим (ASCII).

Направете датотека со лозинка. Датотеката со лозинка мора да содржи линии како login:password. Лозинката мора да биде шифрирана со помош на алгоритмот MD5. Еден начин да се создаде таква датотека е да се користи програмата што доаѓа со Apache - htpasswd (на нашиот сервер се наоѓа во директориумот /usr/local/bin/, целосната патека е /usr/local/bin/htpasswd ).

Размислете како да креирате датотека со лозинка во unix школка директно на серверот. Ајде да одиме во школка и ќе ги извршиме следните команди:

  • htpasswd -mbc .htpasswd user1 sNQ7j9oR2w креирајте нова .htpasswd датотека и додадете запис за user1 со лозинката наведена во командната линија. Ве молиме не заборавајте да го замените sNQ7j9oR2w со која било лозинка по ваш избор - оваа лозинка е дадена овде само на пример
  • htpasswd .htpasswd user2 се додава во веќе постоечката .htpasswd датотека на user2 и лозинката се внесува рачно како одговор на соодветното барање на програмата

Ако користите Windows и не сакате да ја користите Unix школка за да генерирате лозинки, можете да ја преземете верзијата на Windows на програмата htpasswd и да креирате датотека со лозинка на вашиот компјутер, а потоа да ја поставите на серверот. Ако веќе имате инсталирано Windows верзија на Apache, htpasswd.exe може да се најде во директориумот Program Files\Apache Group\Apache\bin\.

Значи, земете htpasswd.exe и користете го за да генерирате лозинки како ова:

  • htpasswd.exe -mc .htpasswd user1 креирајте нова датотека со лозинка htpasswd.exe, лозинката и потврдата ќе бидат побарани интерактивно
  • htpasswd.exe -m .htpasswd user2 додадете го корисникот2 во постоечката датотека со лозинка htpasswd.exe со интерактивно барање за лозинка

По завршувањето на сите најавувања, датотеката мора да се постави на серверот.

Пример: отфрлање на индексна датотека

Ситуација: корисникот пристапи до директориумот http://www.your_domain.ru/price/. Со такво барање, првиот што ќе се отвори и ќе се покаже. Ако сакате да ја отфрлите индексната датотека и да ја направите така што првата што ќе се отвори да не биде index.htm, туку, на пример, датотеката myindex.php , тогаш можете да го направите ова со поставување на следната инструкција во датотеката .htaccess во соодветниот директориум:

DirectoryIndex myindex.php

Откако доби .htaccess со оваа содржина, веб-серверот на Apache стандардно ќе ја отвори датотеката myindex.php.

Пример: забрана и дозвола за издавање оглас

Во некои случаи, потребно е да се прикаже список на датотеки во директориумот (список на директориуми) во случај да нема датотека во директориумот, што е стандардно прикажано. За да го направите ова, додадете ја следнава линија во .htaccess:

Опции + Индекси

Датотеката .htaccess мора да биде креирана токму во директориумот во кој планирате да го дозволите огласот. Оваа директива ќе влијае и на сите поддиректориуми (ова се постигнува со директивата AllowOverride All стандардно овозможена во поставките за виртуелен хост).

Директивата Options -Indexes е стандардно овозможена, и ако е така, ќе добиете 403 HTTP грешка.

Ако кодирањето во имињата на датотеките не се прикажува правилно, користете го својството Charset за да го наведете правилното кодирање. На пример, за прикажување на кирилични знаци во UTF-8 кодирање, додадете ја следната инструкција во датотеката .htaccess:

IndexOptions Charset=UTF-8 Пример: сопствени страници за грешки Пример: одбивање пристап од одредени IP адреси

Понекогаш станува неопходно да се забрани пристап до страницата или дел од неа од одредени IP адреси.

Во овој случај, треба да креирате датотека .htaccess со директиви во саканиот директориум. На пример, за да го одбиете пристапот од IP адресата 172.16.16.16:

Нарачајте Дозволи, Одбијте дозволи од сите Одбијте од 172.16.16.16

Сега, кога се обидувате да пристапите на страницата од IP адресата 172.16.16.16, посетителот ќе добие грешка 403 или вашата страница за оваа грешка.

Наведувањето дел од адресата во формата 172.16.16 ќе го ограничи пристапот од подмрежата 172.16.16/24.

Понекогаш треба да го направите спротивното и да го блокирате пристапот до страницата за сите IP-адреси освен вашата (). На пример, за да дозволите пристап само до IP адресата 172.16.16.16, додајте ја следнава изјава во вашата датотека .htaccess:

Нарачајте Дозволи, Одбијте дозволи од 172.16.16.16

За подетална документација, видете ја документацијата Apache.

Пример: Ограничете го пристапот до одредени датотеки

Понекогаш станува неопходно да се одбие пристапот до одредени датотеки. На пример, кон конфигурациските датотеки што содржат детали за пристап до бази на податоци, интерфејси итн. На пример, во датотеката config.cfg го складирате најавувањето/лозинката за пристап до базата на податоци. Направете датотека .htaccess во овој директориум со директиви:

Нарачајте дозволи, одбијте одбијте од сите

Сега, ако посетителот напише нешто како http://www.your_domain.ru//config.cfg во прелистувачот, тој ќе добие грешка 403 или вашата страница за оваа грешка.

Пример: последно изменето заглавие

Во некои случаи, потребно е веб-серверот да го емитува последното изменето заглавие HTTP. На пример, при регистрирање на вашиот ресурс на Yandex, се појавува грешка „ Погрешни датуми». За статични документи, серверот секогаш ќе ја враќа последната изменета вредност. Ова важи за html датотеки. За SSI, серверот ќе ја врати последната изменета вредност ако е наведена директивата „XBitHack full“ (само напишете ја оваа линија во .htaccess ), а атрибутот „извршна“ за групата е поставен за датотеката до која се пристапува. Во скриптите, последното изменето се враќа со други средства. На пример, имајќи предвид дека скриптата php генерира код динамички, најлогично би било да се наведат тековниот датум и време како последно изменети./>

Ова се спроведува на следниов начин:

Внимание: командата за заглавие мора да се изврши во скриптата php пред скриптата да започне да издава html текст во прелистувачот на корисникот.

„1C-Bitrix: Управување со сајтови“ работи со кое било ниво на права што сте ги навеле при поставувањето (инсталирањето).

За да може производот правилно да работи со папки и датотеки со даден CHMOD (напишан и креиран), треба да поставите датотека / bitrix/ php_ интерфејс/ dbconn. php следните константи:

Ова се типични поставки за дозволи за повеќето хостинг (0644 за датотеки, 0755 за папки). Ако имате какви било проблеми со работата, тогаш контактирајте со техничката поддршка на вашиот хостинг.

Можете сами да го поставите потребното ниво на права користејќи ја командата CHMOD во режим на конзола.

Следниот повик го поставува нивото на дозвола и за датотеките и за папките:

Можете да ја користите следнава синтакса за да поставите дозволи за папките одделно:

најдете. - тип d - exec chmod 0755 () ";"

Ако треба да поставите различни дозволи за папки и датотеки, тогаш извршете ја следнава скрипта:

define ("BX_FILE_DOZE", 0644);

define ("BX_DIR_PERMISSIONS", 0755);

функција chmod_R($path) (

$handle = opendir($path);

додека (неточно!== ($датотека = readdir($handle))) (

ако (($file!== ".") && ($file!== "..")) (

if (is_file($path."/".$file)) (

chmod($path. "/" . $file, BX_FILE_PERMISSIONS);

chmod($path. "/" . $file, BX_DIR_PERMISSIONS);

chmod_R ($ патека. "/" . $датотека);

closeir ($рачка);


$path=dirname(__FILE__);

Некои FTP-клиентски програми може да се користат за рекурзивно поставување на дозволи одделно за датотеки и папки. На пример, FlashFXP верзија 3.xx и повисока.

FlashFXP исто така ви овозможува да споделувате дозволи за датотеки и папки, но ги менува дозволите побавно.

Обрнете внимание на поставките на соодветните знаменца:

· Одделно поставете ги атрибутите Датотека и Папка (одделно поставете ги правата на датотеките и папките);

· Применете ги промените на сите подпапки и датотеки (рекурзивно поставување права на потпапки и датотеки).

За секоја од инсталациите, сопственото ниво е конфигурирано (сл. 10.3 и сл. 10.4):

https://pandia.ru/text/80/333/images/image084.gif" width="353" height="310 src=">

Ориз. 10.4 Поставување дозволи за папки

Забелешка: Модулот за управување со структурата ви овозможува да ги видите дозволите за датотеки и папки поставени на системско ниво (сл. 10.5):

Сопственик" href="/text/category/vladeletc/" rel="bookmark">сопственик и група на корисници (за *nix).

Употреба на датотека. htaccess

Овој дел дискутира како да го конфигурирате веб-серверот Apache користејќи ја датотеката .htaccess.

Во повеќето случаи, корисникот на серверот нема дозвола за пристап до датотеката за конфигурација на серверот (httpd.conf ), што важи за сите корисници. Датотеката .htaccess ви овозможува да направите промени во конфигурацијата што ќе влијаат само на вашата страница.

Со цел поставките на датотеката .htaccess да не бидат игнорирани од системот, во httpd. conf ја поставува дозволата за користење .htaccess .. Проверете со поддршка за оваа дозвола.

Датотеката .htaccess содржи директиви кои се однесуваат на директориумот во кој се наоѓа датотеката, како и на сите поддиректориуми во овој директориум. Ако .htaccess се наоѓа во root директориумот на серверот, тогаш неговиот ефект се однесува на целиот сервер, освен за оние директориуми во кои се наоѓа датотеката .htaccess. Директивите за датотеки .htaccess се применуваат по редоследот по кој се наоѓаат. Така, директивите за датотеки во даден директориум имаат предност пред директивите во директориум повисоко во дрвото на директориуми.

Кога правите промени во датотеката .htaccess, нема потреба да го рестартирате серверот. Датотеката .htaccess се проверува секој пат кога се пристапува до серверот, така што промените стапуваат на сила веднаш штом ќе се направат. Бидејќи датотеката е услужна датотека, таа не е достапна за корисниците од веб-прелистувач.

Генерално, синтаксата на датотеката .htaccess е слична на синтаксата на главната конфигурациска датотека. Сепак, директивите за датотеки може да бидат ограничени со директивата AllowOverride. Дефинира кои типови на директиви за датотеки .htaccess можат да ги отфрлат претходните поставки за пристап.

Забелешка: За време на инсталацијата, чекорот пред лет го проверува ракувањето со датотеките .htaccess.

Во испратениот производ, датотеката .htaccess стандардно ги содржи следните директиви:

Опции - Индекси

ErrorDocument 404 /404.php

#php_flag allow_call_time_pass_reference 1

#php_flag сесија. use_trans_sid off

#php_value display_errors 1

php_value mbstring. func_преоптоварување 2

php_value mbstring. внатрешно_кодирање UTF-8

Опции +FollowSymLinks

Препишете го моторот вклучен

RewriteRule.* -


RewriteCond %(REQUEST_FILENAME) !-f

RewriteCond %(REQUEST_FILENAME) !-l

RewriteCond %(REQUEST_FILENAME) !-d

RewriteCond %(REQUEST_FILENAME) !/bitrix/urlrewrite. php$

RewriteRule ^(.*)$ /bitrix/urlrewrite. php[L]

Индекс на DirectoryIndex. php индекс. html

ExpiresActive на

ExpiresByType слика/jpeg „пристап плус 3 дена“

ExpiresByType слика/гиф „пристап плус 3 дена“

Забелешка: за да ги активирате коментираните PHP директиви, отстранете го знакот за коментар (#) на почетокот на линијата. Ако вашиот Apache-сервер нема дозвола да користи PHP знаменца, извршувањето на овие директиви ќе резултира со внатрешна грешка (500). Ако се појави грешка, коментирајте ги директивите повторно со ставање знак # на почетокот на секоја.

За други PHP директиви кои не се означени со знак за коментар (#), додадена е проверка за присуство на потребните Apache-модули во системот. Извршувањето на овие директиви нема да доведе до грешка во системот.

· PHP директива php_flag сесија. use_trans_sid off оневозможува замена на ID на сесијата во врската на страницата.

· Знамето PHP php_value display_errors вредност еднаква на 1 покажува дека дозволата за прикажување пораки за грешка е овозможена, директивата php_value error_reporting го одредува нивото на грешки, по чие појавување ќе се прикаже порака. Користејќи ги овие директиви, можете да го конфигурирате излезниот режим на преведувачот PHP за пораки за грешки.

· php_value mbstring директиви. func_overload 2 и php_value mbstring. interior_encoding UTF-8 го контролира поставката на библиотеката mbstring.

блок на директиви IfModule mod_rewrite. c е поставката за правила за mod_rewrite.

· Директивата ExpiresActive on овозможува кеширање на слики, што овозможува да се забрза нивното вчитување при повторен пристап до страниците на страницата. Директивите ExpiresByType image/jpeg „пристап плус 3 ден“ и ExpiresByType image/gif „пристап плус 3 ден“, пак, го дефинираат форматот на сликата и периодот за кој ќе се врши кеширањето. Стандардно, сликите *.jpeg и *.gif се кешираат 3 дена.

Забелешка: откако ќе направите промени, датотеката .htaccess мора да се зачува во формат UNIX (за FAR школка, опцијата „Зачувај како UNIX текст“).

Грешка на серверот 500 - Внатрешна грешка на серверот

Грешка на серверот може да биде предизвикана од различни причини, така што нејзината дијагноза е доста комплицирана и одзема многу време. Ова не е грешка „1C-Bitrix: Управување со локацијата“. Грешка на серверот често се појавува на споделениот хостинг поради ограничување на системските ресурси.

Кога ќе се појави грешка на серверот, првото нешто што треба да направите е да ја погледнете грешката на серверот. дневник. Оваа датотека може да содржи линија со код за грешка.

· Типичен пример за причината за грешка на серверот може да биде надминување на дозволените права на хостингот.

На пример, се прави обид да се изврши датотека со атрибути кои не смеат да се извршуваат на серверот (на пример, датотеката има атрибути 0755 , но 0711 е дозволено).

· Исто така, можна причина може да биде временското ограничување за извршување на PHP скриптите. Или системот нема дозвола за пишување или читање на датотеката, итн.

· Друга честа причина за внатрешна грешка на серверот е прекршување на конфигурацијата на серверот или обид да се користат неовластени инструкции, како на пример во датотеката .htaccess. Во овој случај, треба да коментирате или да ја избришете линијата што ја содржи нерешената директива во соодветната датотека (на пример, .htaccess ).

Забелешка: Ако PHP работи како CGI, тогаш грешката 500 на серверот може да се должи на PHP фатална грешка. Во овој случај, се препорачува да се провери програмскиот код и да се дијагностицира грешката.

htaccess датотека - примери за поставување и употреба - 3,8 од 5 врз основа на 21 глас

Датотеката htaccess ви овозможува да ги конфигурирате и отфрлите поставките на веб-серверот Apache и слични сервери. Со него, можете да поставите дозволи и параметри за серверот да работи со одредени корисници на хостинг, па дури и на поединечни папки на одреден корисник.

Најчесто се користи за креирање 301 пренасочувања од старите URL-адреси на нови, повторно мапирање на типови на датотеки, контролиран пристап до директориумот и многу повеќе. Благодарение на датотеката htaccess, не треба да пристапувате до главната конфигурациска датотека и да влијаете на работата на серверот како целина.

Што е датотека htaccess и за што се користи

Како што споменавме, htaccess се користи за поставување на некои опции за Apache и други сервери. И покрај големата и чудна екстензија, приспособувањето на датотеката .htaccess се прави со отворање и менување на нејзината содржина користејќи кој било уредувач на текст.

Датотеката htaccess е измислена специјално за да му овозможи на секој корисник да ја промени конфигурацијата на серверот, влијаејќи само на нивната сопствена локација, а не на целиот сервер. Секој знае дека главните директиви за конфигурација на Apache се во датотеката httpd.conf. Сепак, повеќето корисници, и ако зборуваме за виртуелен хостинг, тогаш сите корисници, немаат можност да пристапат до него и правата да го менуваат, бидејќи оваа акција ќе важи за сите.

Датотеката htaccess често се нарекува динамична датотека. Тоа е затоа што серверот мора да му пристапи секој пат кога треба да го побара директориумот што содржи. Можеби ова е значајна предност, бидејќи промените направени од корисникот во датотеката веднаш ќе стапат на сила без потреба од рестартирање на серверот. Доколку се направат промени во главната конфигурациска датотека, рестартирањето на серверот е предуслов тие да стапат на сила.

Се разбира, не е сè толку мазно како што би сакале, бидејќи употребата на htaccess малку влијае на перформансите на серверот, меѓутоа, во случај на затворен пристап до главната конфигурациска датотека, овој метод е наједноставниот и најзгодниот метод за менување на параметрите.

Некои карактеристики на користење на htaccess:

1. Може да отфрли голем број на директиви во главната датотека httpd.confg

2. Ако ја ставите датотеката htaccess во root директориумот, таа ќе се прошири на целата локација (единствените исклучоци се оние директориуми во кои се наоѓа сопствената конфигурациска датотека и директориумите лоцирани подолу во структурата на дрвото)

3. Можете да ја поставите датотеката htaccess во кој било директориум, а неговите директиви ќе се применат на сите поддиректориуми

4. Htaccess не е достапен за корисникот за преглед од прелистувачот, бидејќи припаѓа на категоријата „систем“.

Така, со htaccess, корисникот добива флексибилност да постави свој сервер и може да ги примени следниве опции:

  • Едноставни директиви за пренасочување (пренасочување);
  • Комплексни директиви за пренасочување (mod_rewrite);
  • Индекс страници;
  • Грешка при обработка;
  • Дефиниција за кодирање;
  • Управувајте со пристапот до директориуми и датотеки;
  • Заштита со лозинка на директориумот;
  • PHP опции.
Примери за најчестата употреба на датотеката htaccess

Сега ќе ги разгледаме најчестите работни опции за користење на htaccess за прилагодување на страницата.

Пред да започнеме, обрнете внимание на следниве точки:

2. За да креирате нова датотека со наставката htaccess, треба да отворите бележник или друг уредувач на текст, да напишете код, да ја зачувате датотеката, наведувајќи ја наставката .htaccess (точка напред). Потоа останува да го фрлиме во директориумот за кој е наменет.

3. Синтакса.htaccess

Патеките до датотеките (директориумите) се наведени почнувајќи од коренот на серверот.

DirectoryIndex /home/st5155/www/data/home.html

Ако ја конфигурирате датотеката htaccess лоцирана во основната папка на страницата, патеките се наведени од коренот на оваа папка.

DirectoryIndex /home.html

Домените се напишани со протокол http:// или https://

Пренасочи / http://your-sait.ru

Датотеката го има името „точка“ htaccess.

Користете го знакот # за да креирате коментирана линија.

Најзгодно е да уредувате датотека користејќи го уредникот AkelPad, кој е дел од Total Commander, само изберете го и притиснете F4.

Едноставно пренасочување - Директива за пренасочување

1. Имплементација на пренасочување кон нови страници на страницата

Ако страниците на страницата се преместени на нови адреси, тогаш корисникот или роботот за пребарување, откако ја контактирале старата адреса, веројатно нема да ги видат. За да ги залепите старите и новите адреси на страницата, можете да користите едноставно пренасочување 301. За да го направите ова, следниов код мора да биде напишан во конфигурациската датотека htaccess:

Пренасочи 301 /staraya.html http://vash-sait.ru/novaya.html

2. Донесување доводи во заеднички формат

Претходно се користеа различни формати на довод, како што се: Atom, RSS, Rdf. Денес, RSS е главен и најпопуларен меѓу нив, така што може да се внимава другите формати да се пренасочат на еден. Ова исто така ја користи датотеката htaccess и следниов код:

RedirectMatch 301 /feed/(atom|rdf|rss|rss2)/?$ http://your-sait.ru/feed/

Комплексно пренасочување - директива RewriteRule

1. Пренасочување на домен од www на без www.

Многу често треба да користите пренасочување 301 во htaccess за да ги залепите домените со www и без www. Претходно, пребарувачите сметаа дека таквите адреси се сосема различни и ги гледаа како различни сајтови. Денес, задачата за лепење е доделена на роботот за пребарување, но никогаш нема да биде излишно да се означи правилното огледало. Покрај тоа, тие самите нема да имаат никаква забуна.

Опции +FollowSymLinks RewriteEngine On RewriteCond %(HTTP_HOST) ^www.vash-sait\.ru$ RewriteRule ^(.*)$ http://vash-sait.ru/$1

2. Пренасочување на посетителите на различни страници во зависност од IP адресата на посетителот.

Во htaccess, можно е да се одреди на која страница ќе биде пренасочен корисникот со одредена IP адреса. На пример, пренасочување на посетители со IP адреса 183.11.101.1 на страницата kontakt.html

SetEnvIf REMOTE_ADDR 183.11.101.1 REDIR="redir" RewriteCond %(REDIR) redirect RewriteRule ^/$ /kontakt.html

3. Пренасочување во случај на ажурирање на веб-ресурс

За време на тестирањето или ажурирањето на ресурсот, корисникот нема да може да дојде до страницата. Сепак, би било погрешно да не го предупредиме за ова. Во .htaccess, можете да напишете код кој ќе го пренасочи корисникот на страница со информации што ја опишува суштината на проблемот (причини, време, итн.).

RewriteEngine на RewriteCond %(REQUEST_URI) !/info.html$ RewriteCond %(REMOTE_HOST) !^14\.124\.354\.80 RewriteRule $ http://your-sait.ru/info.html

Каде 14.124.354.80 - заменете со вашата IP адреса.

4. Заштита од жешки врски

Не е тајна дека денес се повеќе информации се крадат од веб-страниците. Некогаш само текст, а некогаш заедно со графички слики. И секој пат кога посетител доаѓа на страница од трета страна, овие слики ќе се вчитаат од вашиот хостинг, создавајќи оптоварување и согорување на сообраќајот. За да го спречите ова, додадете го следниов код:

RewriteEngine на RewriteCond %(HTTP_REFERER) !^$ RewriteCond %(HTTP_REFERER) !^http://([ -a-z0-9] \.)?your-sait\.ru RewriteRule \.(gif|jpe?g| png) $ -

Во горниот пример, ќе се појави грешка 403 на страницата што ја вчитува сликата, ако сакате да се прикаже одредена слика наместо сликата, тогаш заменете ја последната линија со следново:

RewriteRule \.(jpg|png|gif)$ http://your-sait.ru/images/imageinfo.jpg

5. Пренасочи кон безбедна https конекција

Во .htaccess, можете да конфигурирате пренасочување кон безбедна https конекција, така што сите корисници работат само преку овој протокол, кој гарантира безбедност и доверливост на преносот на податоци помеѓу серверот и клиентот.

RewriteEngine на RewriteCond %(HTTPS) !на RewriteRule (.*) https://%(HTTP_HOST)%(REQUEST_URI)

6. Автоматска замена на коса црта на крајот од адресата.

Има многу чести ситуации кога URL-то завршува со името на директориумот: http://your-sait.ru/images/raznoe

Apache може сам да ја поправи грешката и да направи пренасочување 301 со додавање на коса црта што недостасува на врската. Така, корисникот нема да почувствува никаква разлика и ќе ја добие потребната страница како одговор. Но, ќе биде потребно двојно повеќе време за да се заврши таквата акција. Следниот код секогаш ќе додава / на крајот од адресата.

RewriteCond %(REQUEST_URI) /+[^\.]+$ RewriteRule ^(.+[^/])$ %(REQUEST_URI)/

7. Блокирање на корисници кои дојдоа од одредена локација

Ако сопственикот на страницата не сака неговиот ресурс да биде посетен од корисници кои се најавиле од одреден домен и тие треба да го блокираат пристапот, htaccess е исто така подготвен да помогне. Можете да го блокирате сообраќајот од одредени страници користејќи страница 403 или „одбијте пристап“. Оваа поставка е корисна кога на вашата страница се појавуваат врски од страници со забранета содржина и сообраќајот оди на вашата страница преку нив.

RewriteEngine на RewriteCond %(HTTP_REFERER) zapretnui-sait.com RewriteCond %(HTTP_REFERER) zapretnui-sait.com RewriteRule .* - [F]

Индекс страници - Директива DirectoryIndex

1. Промена на страницата со индекс што е стандардно вчитана

Обично стандардните индексни страници се index.htm, index.php или index.html, кога се пристапува до директориумот на страницата, овие датотеки се пребаруваат веднаш. Но, доколку е потребно, можете да ја редефинирате страницата со индекс на која било друга. Слична задача се решава и со помош на датотеката htaccess.

DirectoryIndex mypage.html

Можно е да се наведат две или повеќе страници. Треба да се земе предвид дека тие ќе се бараат по редоследот по кој се наведени во конфигурациската датотека по директивата DirectoryIndex.

DirectoryIndex index.shtml index3.php index.html index.htm

Ракување со грешки - Директива за документ за грешка

1. Прилагодена страница за грешка

И покрај фактот дека многу сајтови сè уште ја користат стандардната страница за грешка 404, мала е веројатноста да го задоволи корисникот кој не го добил очекуваниот резултат и наместо тоа гледа информации што му се неразбирливи. Неопходно е да се понуди страница која ќе одговара на главниот стил, на која ќе бидат прикажани подетални информации за причините за неуспехот на барањето. За да го направите ова, можете да наведете во htaccess која датотека да се вчита наместо стандардната страница за грешка 404.

Документ за грешка 404 "/404.html"

2. Направете ваши сопствени страници за грешки

За оние кои се уморни од вообичаените страници кои прикажуваат опис на грешките што се случиле на страницата, постои можност да ги користат сопствените празни места. Само треба сами да креирате неколку *.html датотеки, со потребната содржина и да направите запис во датотеката htaccess.

ErrorDocument 401 /errors401.html ErrorDocument 403 /errors403.html ErrorDocument 404 /errors404.html ErrorDocument 500 /errors505.html

За да знаете што да ставите на секоја од страниците за грешки, накратко ќе ги опишеме нивните значења.

  • 401 - Потребно е овластување
  • 403 - Корисникот не е автентициран, пристапот е одбиен (забранет)
  • 404 - Бараниот документ (датотека, директориум) не е пронајден (Не е пронајден)
  • 500 - Внатрешна грешка на серверот - Грешка во скриптата или грешка во синтаксата на датотеката .htaccess - (Внатрешна грешка на серверот)
Дефиниција за кодирање

1. Одредување на кодирањето во кое серверот „дава“ датотеки

За да се спречи корисникот да прикажува знаци кои му се неразбирливи, од кои не е можно да се прочитаат зборовите, мора да се наведе точното кодирање. Дури и ако нема ознака< Мета http-equiv = "Content-Type">текстот на страницата секогаш ќе биде точен и датотеката htaccess повторно ќе помогне во тоа.

AddDefaultCharset UTF-8

2. Одредување на кодирање за поставени датотеки

Слична ситуација може да се појави кога корисникот ќе постави датотека на серверот и нејзината содржина може повторно да се кодира. За да се користи потребното кодирање, htaccess мора да содржи код што покажува дека сите поставени датотеки мора да се отворат со UTF-8 кодирање.

CharsetSourceEnc UTF-8

Управување со пристап до директориуми и датотеки

1. Одбијте пристап до сите датотеки

Најлесен начин да спречите гледање датотека е да поставите лозинка, но тоа не е секогаш доволно. Во некои случаи, корисникот не треба да има права да гледа датотеки или директориуми (на пример, треба да ги заклучите системските директориуми, чии промени може да ги влошат перформансите на серверот). Датотеката htaccess содржи парче код што ги лишува сите кориснички привилегии.

2. Дозволете пристап од одредена IP адреса

.htaccess (од англиски хипертекст пристап) е дополнителна конфигурациска датотека за веб-серверот Apache и некои други слични сервери.

Кога се користи правилно, конфигурациската датотека на веб-серверот Apache .htaccess (пристап за хипертекст) е многу моќна алатка во комплетот со алатки на развивачот. Како и обично, главната датотека се наоѓа во root директориумот на вашиот веб-сервер (може да има и посебни датотеки во секоја папка - за контрола на пристап) и може да се коригира со кој било уредувач на текст. Во оваа статија ви се претставени 24 правила за .htaccess со објаснување за нивната употреба.

Важно! Како по правило, датотеката. За да го направите ова, отворете бележник, додајте ги директивите што ви се потребни таму, чии примери ќе бидат дадени подолу и зачувајте како текстуален документ со името .htaccess. Потоа само отстранете ја наставката .txt и датотеката е подготвена.

Важно! Пред да направите промени во датотеката .htaccess, направете резервна копија за да може да ги вратите сите промени ако вашиот сајт се урна.

Важно! Изведбата на следните правила (директиви) зависи од поставките на вашиот веб-сервер поставени од домаќинот, така што некои директиви може да бидат забранети и да не работат.

Важно! Злоупотребата на .htaccess може да доведе до побавно работење на вашата страница. Користењето .htaccess за спроведување на одредена задача вреди само ако нема други опции.

Правила.htaccess

1. Забрануваме преземање датотеки од надворешни страници
Кодот подолу поставен на крајот од вашата датотека .htaccess ќе спречи слики од вашиот ресурс да бидат поставени на страници на трети страни, со што ќе ви заштеди сообраќај и ќе го спречи непотребното оптоварување на вашиот хостинг.

Опции +FollowSymlinks
#Забрани преземање датотеки од надворешни страници
Препишете го моторот вклучен
RewriteCond %(HTTP_REFERER) !^$
RewriteCond %(HTTP_REFERER) !^http://(www.)?your_domain.com/
RewriteRule .*.(gif|jpg|png)$ http://your_domain.com/img/goaway.gif

Не заборавајте да го промените your_domain.com во името на вашиот домен и да креирате слика goaway.gif што ќе биде прикажана наместо бараната слика.

2. Блокирајте ги сите барања од несакани кориснички агенти
Ова правило ви овозможува да блокирате несакани кориснички агенти кои можат да бидат потенцијално опасни или едноставно непотребни барања за преоптоварување на серверот:

#Блокирајте ги несаканите ботови и роботи
SetEnvIfNoCase кориснички агент ^FrontPage
SetEnvIfNoCase кориснички агент ^Java.*
SetEnvIfNoCase кориснички агент ^Microsoft.URL
SetEnvIfNoCase кориснички агент ^MSFrontPage
SetEnvIfNoCase кориснички агент ^Offline.Explorer
SetEnvIfNoCase кориснички агент ^ebandit
SetEnvIfNoCase кориснички агент ^Zeus

Нарачајте Дозволи, одбијте
Дозволи од сите
Негирај од env=bad_bot

Список на прелистувачи на кориснички агенти, роботи и пајаци на пребарувачите, веб директориуми, менаџери за преземање, ботови за спам и лоши ботови може да се најдат на http://www.user-agents.org/

3. Одбијте пристап до сите освен наведените IP адреси
Ако, од која било причина, сакате да одбиете секого или само да дозволите пристап до одредени IP адреси до вашиот сајт, додадете го овој код во вашата датотека .htaccess:

# Одбијте пристап до сите освен наведените IP адреси
ErrorDocument 403 http://your_domain.com
Нарачајте одбие, дозволи
Демантирај од сите
Дозволи од IP1
Дозволи од IP2, итн.

Не заборавајте да ги промените your_domain.com и IP1,2 итн. на вашето име на домен и бараните IP адреси соодветно.

4. Направете црна листа на IP адреси
Ако сакате да го блокирате пристапот до вашиот ресурс за одредени IP адреси, тоа може да се направи со користење на следниов код додаден во датотеката .htaccess:

#Креирајте црна листа на IP адреси
дозволи од сите
негираат од IP1
одбие од IP2, итн.

Ако причината за блокирање на IP адресата се досадни спам коментари, можете да ги дознаете IP адресите на коментаторите или во дневниците на Apache или користејќи статистички услуги. За WordPress, IP адресите на коментаторите може да се видат во административниот панел. На ист начин, можно е да се блокира пристапот до мрежа од IP адреси со наведување „негирај од IP/мрежна маска“.

#Креирајте црна листа за подмрежата
дозволи од сите
негираат од 192.168.0.0/24

5. Поставете SEO-Friendly 301 Redirect
Ако сте префрлиле име на домен или сакате да го пренасочите корисникот на одредена страница(и) без да бидете казнети од пребарувачите, користете го овој код:

#Поставување SEO-Friendly 301 Redirect
Пренасочи 301 /d/file.html http://your_domain.com/r/file.html

Не заборавајте да го промените your_domain.com во името на вашиот домен и /d/file.html и /r/file.html во соодветните директориуми и страници.

6. Направете ваши сопствени страници за грешки
Ако сакате да ја зголемите уникатноста на вашиот ресурс и за ова сакате да го замените стандардниот изглед на страниците со грешки, тоа е можно со следниов код:

ErrorDocument 401 /error/401.php
ErrorDocument 403 /error/403.php
ErrorDocument 404 /error/404.php
ErrorDocument 500 /error/500.php

Не заборавајте да креирате папка „грешка“ во root директориумот на вашиот сервер и да ги поставите соодветните датотеки во неа.

7. Поставете ја стандардната адреса за е-пошта за администраторот на серверот
Користете го овој код за да ја поставите стандардната адреса за е-пошта за администраторот на серверот:

#Поставете ја стандардната адреса за е-пошта за администраторот на серверот
Е-пошта со потпис на серверот
SetEnv SERVER_ADMIN default@your_domain.com

Не заборавајте да го замените default@your_domain.com- со адресата за е-пошта што ви треба.

8. Заштитете одредена датотека
Кодот подолу ви овозможува да одбиете пристап до која било датотека - на барање ќе се врати грешка 403. Во примерот, пристапот до самата датотека .htaccess е блокиран - на овој начин можете да го зголемите нивото на безбедност на страницата:

#Заштитете ја датотеката .htaccess

нарачајте дозволи, одбијте
негираат од сите

9. Компресирајте ги компонентите на страницата со овозможување на Gzip
Кога користите Gzip, серверот ќе ги компресира датотеките пред да ги испрати до корисникот, така што вашата страница ќе се вчита побрзо:

#Компресирај ги компонентите на страницата со овозможување Gzip
AddOutputFilterByType DEFLATE текст/html текст/обичен текст/xml апликација/xml апликација/xhtml+xml текст/javascript текст/css апликација/x-javascript
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4.0 no-gzip
BrowserMatch bMSIE !no-gzip !gzip-only-text/html

Ве молиме имајте предвид дека овозможувањето на компресија ќе предизвика поголемо оптоварување на процесорот на серверот.

10. Компресирајте елементи со mod_deflate
Како алтернатива за компресирање датотеки со Gzip, можете да користите mod_deflate (веројатно побрзо). Ставете го следниов код на врвот на вашата датотека .htaccess (може да додадете и .jpg|.gif|.png|.tiff|.ico):

#Компресирајте елементи со mod_deflate


SetOutputFilter DEFLATE

11. Додадете истекување на заглавијата
Овој код ви овозможува да додадете датуми на истекување на заглавијата:

#Додајте истекување во заглавијата

Сетот за заглавија истекува „Сре, 31 декември 2014 20:00:00 GMT+2“

12. Поставете ги стандардните страници
Обично стандардната страница е index.html, но со овој код можете да поставите која било друга страница како стандардна:

#Поставете алтернативна стандардна страница
DirectoryIndex yourpage.html

Не заборавајте да го замените yourpage.html со страницата што ви треба

13. Папки и датотеки за заштита со лозинка
Можете да овозможите проверка на лозинка за пристап до која било папка или датотека на вашиот сервер користејќи го овој код:

#password заштитете ја датотеката

AuthType Basic
AuthName „Prompt“

Потребен е валиден корисник

#папка заштита со лозинка
престојува
Основен AuthType
AuthName „Овој директориум е заштитен“
AuthUserFile /pub/home/.htpasswd
AuthGroupFile /dev/null
Потребен е валиден корисник

За да го организирате пристапот до датотека со лозинка, треба да креирате датотека .htpasswd и да внесете пар најава-лозинка во формат user:password. Меѓутоа, во овој случај, лозинките ќе се чуваат во обичен текст, што не е многу добро од безбедносна гледна точка. Затоа, најдобро решение би било шифрирањето на лозинката. За да го направите ова, користете ги услугите за генерирање записи во датотеките .htpasswd.
На пример, http://www.htaccesstools.com/htpasswd-generator/
Во примерот, датотеката со лозинки за пристап се наоѓа во root директориумот на страницата и се нарекува .htpasswd. Директориумот е наведен од коренот на серверот, и ако патеката е неточна - Apache, кој нема пристап до датотеката, ќе го одбие пристапот до папката на кој било корисник - вклучувајќи го и оној што го внел точниот пар најава:лозинка.

14. Пренасочување од стариот домен на новиот
Користејќи .htaccess, можете да поставите пренасочување од старото име на доменот кон новото со додавање на следниов код:

#Пренасочување од стариот домен на новиот
Препишете го моторот вклучен
RewriteRule ^(.*)$ http://www.yournewdomain.com/$1

Пренасочување се користи ако ја преместувате вашата постоечка локација на ново име на домен. Во овој случај, секој корисник што ќе напише http://www.yourolddomain.com во лентата за адреси ќе биде пренасочен на http://www.yournewdomain.com.

15. Зајакнете го кеширањето
Користењето на ова правило не директно го забрзува вчитувањето на вашата страница. Наменет е сајтот да се вчитува побрзо - за посетител кој веќе го посетил, со испраќање статус 304 за оние елементи кои не се ажурирани. Така, при повторно вчитување на страницата, прелистувачот на посетителот нема повторно да презема слики, скрипти или CSS, туку ќе ги прикаже оние датотеки што се веќе зачувани во неговата кеш. Можете да го промените животниот век на кешот со прилагодување на неговата вредност во години (година), месеци (месец) или, на пример, секунди (секунди):

# Зајакнување на кеширањето
Големина на FileETag MTtime


ExpiresActive на
Expires Стандарден „пристап плус 1 месец“


Во примерот е наведен 1 месец.

16. Отстранете ја „категоријата“ од URL-то
За да ја смените врската од http://yourdomain.com/category/news во http://yourdomain.com/news, едноставно додајте го следниов код на крајот од вашата датотека .htaccess:

#Отстрани ја категоријата од URL-то
RewriteRule ^category/(.+)$ http://www.yourdomain.com/$1

Не заборавајте да го промените http://www.yourdomain.com во името на вашиот домен.

17. Забрануваме гледање на содржината на папката
За да го ограничите пристапот до директориумите што може да содржат различни информации и да ја осигурате безбедноста на серверот, додајте го овој код во датотеката .htaccess:

#Забрани гледање на содржината на папката
Опции Сите-индекси

Постои алтернативно решение кое го има истиот резултат, за ова треба да поставите празна датотека index.html во секоја папка на вашата страница. Овој метод ќе работи само ако не сте ја смениле стандардната страница (видете правило 12). Ако се направени промени, мора да поставите датотеки со новото име што сте го поставиле како стандардна страница.

18. Пренасочи WordPress RSS Feed на FeedBurner
Овој код ви овозможува да го пренасочите изворот на WordPress CMS RSS на услугата Google Feedburner:

#Пренасочи WordPress RSS довод на FeedBurner

Препишете го моторот вклучен
RewriteCond %(HTTP_USER_AGENT) !FeedBurner
RewriteCond %(HTTP_USER_AGENT) !FeedValidator
RewriteRule ^rss.xml$ http://feeds.feedburner.com/yourfeed

Првично, треба да го регистрирате вашиот блог со услугата Feedburner на Google. Следно, не заборавајте да го замените вашиот довод со името на вашиот довод веќе во Feedburner.

19. Оневозможете коментари од корисници без упатувач
Почесто отколку не, спамботови директно пристапуваат до датотеката wp-comments-post.php без да одат на страниците за објавување на вашиот блог. Кодот подолу ви овозможува да блокирате коментари испратени од корисници кои дојдоа „од никаде“, дозволувајќи им на читателите кои дојдоа на страницата на вашиот блог од некоја друга страница (на пример, резултати од пребарување на Google, Yandex итн.):

#Оневозможи коментари од корисници без реферер
Препишете го моторот вклучен
RewriteCond %(REQUEST_METHOD) POST
RewriteCond %(REQUEST_URI) .wp-comments-post\.php*

RewriteCond %(HTTP_REFERER) !.*yourblog.com.*
RewriteCond %(HTTP_USER_AGENT) ^$
RewriteRule (.*) ^http://%(REMOTE_ADDR)/$
Не заборавајте да го замените yourblog.com со името на доменот на вашиот блог.

20. Отстранете ја наставката на датотеката од URL-то
Овој код ви овозможува да ја отстраните наставката на датотеката .php (можете да ја промените во која било друга, на пример, t 2.html) од URL-адресите на страниците:

#Отстранете ја наставката на датотеката од URL-то
RewriteRule ^(([^/]+/)*[^.]+)$ /$1.php [L]

21. Заштита на локацијата
Овој код ви овозможува да ја заштитите вашата страница од вбризгување скрипти и несакани модификации на „_REQUEST“ и/или „GLOBALS“:

#Овозможи следење на врската со SIM-картичката
Опции +FollowSymLinks
# Стартувај url_препишување
Препишете го моторот вклучен
#Блокирајте ги сите врски што содржат
RewriteCond %(QUERY_STRING) (\|%3E)
# Блокирајте ги сите скрипти што се обидуваат да ги променат променливите на PHP Globals:
RewriteCond %(QUERY_STRING) GLOBALS(=|\[|\%(0,2))
# Блокирајте ги сите скрипти што се обидуваат да ја променат променливата _REQUEST:
RewriteCond %(QUERY_STRING) _REQUEST(=|\[|\%(0,2))
#Пренасочување на сите слични на страница со грешка 403 - забрането
RewriteRule ^(.*)$ index.php

Денес сакам да зборувам за htaccess, датотека што ви овозможува да го конфигурирате веб-серверот Apache. Директивите што се напишани во оваа датотека директно влијаат на излезот што го генерира веб-серверот. Оваа алатка е доволно моќна, треба паметно да ја користите. Оваа статија е напишана пред повеќе од шест месеци, сега повторно се враќам на неа за да го направам најдеталниот прирачник на оваа тема.

Веднаш да ве потсетам, пред да промените нешто во htaccess, направете копија од вашата работна датотека на едно затскриено место. Никогаш не се знае, резервната копија е генерално добра работа, не заборавајте за тоа. Ќе ја поделам статијата на неколку подсекции - пренасочување страници, ограничување на пристапот до одредени датотеки, забрзување на страницата и други работи што на еден или друг начин можат да бидат корисни во работењето на ресурсот.

Прво, неколку зборови, што е htaccess? За да ја цитирате официјалната веб-страница на веб-серверот Apache:

Датотеките Htaccess (или „дистрибуирани конфигурациски датотеки“) ви дозволуваат да поставите голем број дополнителни параметри и дозволи за работа на веб-серверот во посебни директориуми (папки), како што се контролиран пристап до директориуми, преназначување типови датотеки итн. без промена на главната конфигурациска датотека .

Тоа е, можеме да го контролираме однесувањето на серверот во секоја поединечна папка, што е многу погодно.

htaccess директиви. пренасочување

Блокирање жешки врски од други сајтови

Има лоши другари кои можат да користат слики од вашиот ресурс за употреба во нивните проекти. Тие ги користат вашите слики на нивните сајтови, со други зборови тие го користат вашиот пропусен опсег за свои цели, слично на . Ќе се бориме со нив... Ајде да ја замениме секоја слика која е поврзана со хотлинк од друг сајт со некаква предупредувачка слика или што и да е доволна вашата фантазија. Во кодот, не заборавајте да ги промените адресите на вашите URL-адреси.

RewriteEngine On RewriteCond %(HTTP_REFERER) !^http://(.+\.)?yourl\.com/ RewriteCond %(HTTP_REFERER) !^$ #Rewrite image path RewriteRule .*\.(jpe?g| gif|bmp |png)$ /images/noHL.jpg [L]

Пренасочете ги доводите на WordPress RSS на Feedburner

Мислам дека никој не користи ништо друго освен Feedburner. Пријателски за корисниците, пријателски за сопственикот на блог, статистика, повторно. Ако сè уште не сте го користеле, топло ви го препорачувам. Кодот подолу ќе ги пренасочи сите ваши RSS доводи на вашата сметка, не заборавајте само да ја вметнете точната адреса.

RedirectMatch 301 /feed/(atom|rdf|rss|rss2)/?$ RedirectMatch 301 /comments/feed/(atom|rdf|rss|rss2)/?$ http://feedburner.com/yourfeed/

Во овој пример, два доводи се пренасочуваат: главниот RSS довод и ажурирање на коментарите доколку посетителот е претплатен на ажурирања.

Променете ги страниците за грешки

Сè што се случува со хостинг и веб-локација, така што треба однапред да бидете подготвени за проблеми и да направите свои страници за грешки. И корисниците во случај на проблеми ќе бидат пренасочени на соодветната страница. На овие страници, можете да му дадете кратки информации на корисникот зошто тоа се случило. Оставете ги вашите контакти, како последно средство.

ErrorDocument 400 /errors/badrequest.html ErrorDocument 401 /errors/authreqd.html ErrorDocument 403 /errors/forbid.html ErrorDocument 404 /errors/404.html ErrorDocument 500 /errors/serverr.html# на вашите страници за грешки

Во овој пример, постои пренасочување во случај на основни грешки. Додадов и 404, иако CMS обично ги разработува таквите моменти, но имало случаи.

301 и 302 пренасочуваат или пренасочуваат

301 пренасочување или таканаречено трајно пренасочување - означува дека страницата ја променила адресата или URL-то и се пренасочува на нова страница. Ако сте имале страница индексирана од PS на вашата страница и сте ја смениле нејзината адреса, не заборавајте да направите пренасочување 301 на нова страница. Со пренасочување 301, старата страница не се индексира, туку наместо тоа се „заменува“ нова.

RewriteEngine на Redirect 301 /old-page http://your-url.ru/new-page

Всушност, внимателен читател ќе види сличен пример погоре, во случај на пренасочување на RSS. Да, технологијата е иста.
Се случува страницата да се пресели во нов домен, треба да ја зачувате структурата на врската, а може да има стотици и илјадници, нереално е да поставите пренасочување за секој. Кодот подолу ќе помогне да се справите со оваа ситуација:

Опции +FollowSymLinks RewriteEngine на RewriteRule (.*)

Има интересна техника за „криење“ на надворешни врски преку 301 пренасочувања. Да речеме дека имате врска „преку“ во страничната лента што води до вашиот профил на Google+, таа е надворешна, односно води до надворешен ресурс. За оптимизација, многу е добро кога има што помалку такви врски. Можете да ги скриете и да ги направите внатрешни.

Технологија за производство на внатрешни врски од надворешни:

  • стави линк до имагинарна страница, да речеме сајт / google-plus
  • поставете пренасочување 301 во htaccess од оваа страница до вашата вистинска страница на профилот
  • посетителот не чувствува ништо, ПС се задоволни

Слично на тоа, можете да поставите какви било други условно постојани врски.
Пренасочување 302 или привремено пренасочување му кажува на веб-роботот дека страницата е привремено поместена, така што двете страни, старата и новата, треба да се индексираат.

RewriteEngine на Redirect 302 /old-page http://your-url.ru/new-page

Кодот е потполно ист како и во случај на трајно пренасочување.
Пренасочувањето 302 е погодно за користење кога се врши долгорочна работа на страницата и не треба на посетителите да им прикажувате „скршени“ страници. Во тој случај, овој код ќе ви помогне:

RewriteEngine на RewriteCond %(REQUEST_URI) !/inside.html$ RewriteCond %(REMOTE_ADDR) !^123.123.123.123 RewriteRule $ /inside.html

Ние лепиме страници со www и без него

Многу е лошо кога сајтот е достапен на две адреси, PS не ми се допаѓа многу. Кодот подолу ќе помогне да се залепи на една адреса:

Опции +FollowSymLinks RewriteEngine On RewriteCond %(HTTP_HOST) ^www.yoururl\.com$ RewriteRule ^(.*)$ http://yoururl.com/$1

Во овој пример, главното огледало е адресата без www. Ако треба да го направите спротивното - заменете го www на места, отстранете го одозгора, додајте го на дното.

Прикажи страници базирани на IP SetEnvIf REMOTE_ADDR 192.168.0.1 REDIR="redir" RewriteCond %(REDIR) redir RewriteRule ^/$ /about.html

Можете да додавате адреси со дуплирање на првата линија, во последната линија се менува страницата за пренасочување.

Пренасочи на почетната страница

Пренасочи од site.com/index.php и site.com/index.html на site.com/. Благодарност до Василиј Красноженов за кодот.

RewriteCond %(THE_REQUEST) ^(3,9)\ /index\.html\ HTTP/ RewriteRule ^index\.html$ http://site.com RewriteCond %(THE_REQUEST) ^(3,9)\ /index\. php\ HTTP/ RewriteRule ^index\.php$ http://site.com

htaccess директиви. Го споделуваме пристапот

Одбијте пристап до страницата

Се случува да е неопходно да се одбие пристапот до посетителите од одредена IP адреса, спамери или кој било друг што не е добар.

Нарачајте Дозволи, Одбијте дозволи од сите Одбијте од 192.168.0.1

Можете да додадете IP на списокот едноставно со додавање на последната линија и менување на адресата таму на онаа што ви треба.
Спротивна ситуација, кога сите треба да бидат банирани, освен некои IP-адреси, тогаш го користиме следниот код:

Нарачајте Одбијте, Дозволи Одбијте од сите Дозволете од 192.168.0.1

Додадете адреси слични на претходниот пример.

Забрануваме гледање од несакан кориснички агент

Секој прелистувач или апликација што бара страница некако има идентификатор - кориснички агент. Можете да го блокирате гледањето од несакани другари. Овие можат да бидат и програми што скенираат страници и стари прелистувачи, чија поддршка целосно ја одбивте. Ситуациите се различни.

SetEnvIfNoCase user-Agent ^FrontPage SetEnvIfNoCase user-Agent ^Java.* SetEnvIfNoCase user-Agent ^Microsoft.URL SetEnvIfNoCase user-Agent ^MSFrontPage Нарачка Дозволи, Одбиј Дозволи од env= Debad

Комплетна листа на познати кориснички агенти може да се најде на http://www.user-agents.org/

Одбијте пристап до одредена датотека

Во примерот, постои забрана за пристап до датотеките wp-config и htaccess, со што се зголемува нивото на општа заштита. Многу неопходна директива, препорачувам да ја додадете во вашите датотеки

# заштита на wpconfig.php нарачајте дозволи, негирајте одбијте од сите # заштита на htaccess нарачајте дозволи, негирајте одбијте од сите

Слично на тоа, можете да ги заштитите датотеките css и js што ги користат приклучоците:

нарачајте дозволи, одбијте дозволи од сите

Преземање специфични типови датотеки

Современите прелистувачи се толку паметни што понекогаш станува страшно. Мојот Chrome понекогаш се обидува во себе да отвори PDF-датотеки за гледање, понекогаш се обесува до смрт. Со htaccess, можете насилно да му кажете на прелистувачот што да прави со одреден тип на датотека, без да го оставите овој момент на неговата дискреција. Во овој случај, тоа е преземање. Дополнителни типови на датотеки може да се додадат по аналогија.

AddType application/octet-stream .pdf AddType application/octet-stream .zip AddType application/octet-stream .avi

Ограничување на пристапот до администраторот на WordPress

Ако имате постојана IP адреса, можете да му дадете пристап само до административниот панел на WordPress

AuthUserFile /dev/null AuthGroupFile /dev/null AuthName „Пример за контрола на пристап“ AuthType Основна нарачка дозволи, отфрли одби од сите дозволи од вашата IP адреса

htaccess директиви. Техничка оптимизација и забрзување

Оневозможи автоматско индексирање на датотеки

Во секоја папка на страницата, Apache стандардно создава индексни датотеки што наведуваат кои датотеки се во папката. Ако не сакате да дадете дополнителна дупка за напаѓачите, оневозможете индексирање.

Опции-Индекси

Овозможи компресија на gzip

Дали знаете дека податоците на серверот може да се компресираат, а клиентот ќе ги декомпресира дома? Кодот подолу само вклучува такво нешто. Треба само да бидете сигурни дека gzip е дозволен на вашиот домаќин, но обично тоа е така.

ForceType text/javascript Header set Content-Encoding: gzip ForceType text/css Header set Content-Encoding: gzip ForceType text/javascript RewriteEngine On RewriteCond %(HTTP_USER_AGENT)!".*Safari:Aconding % gzip RewriteCond %(REQUEST_FILENAME).gz -f RewriteRule (.*)\.js$ $1\.js.gz [L] ForceType text/javascript ForceType text/css RewriteEngine On RewriteCond %(HTTP_USER_AGENT) .*. " RewriteCond %(HTTP:Accept-Encoding) gzip RewriteCond %(REQUEST_FILENAME).gz -f RewriteRule (.*)\.css$1\.css.gz [L] ForceType text/css

Кодот не работи за слики, но gzip не се препорачува за нив. Ова е кодот што го имам.

Компресирање со mod_deflate

Има гласини дека со овој мод е подобро да се компресираат податоците и страницата работи побрзо. Не можам да тестирам, а не сум видел слични тестови на Интернет. Ако некој има таква информација, ќе му бидам благодарен. И јас ќе го објавам кодот, никогаш не се знае

SetOutputFilter DEFLATE

Овозможете кеширање на прелистувачот на клиентот

Интересна директива која ви овозможува да користите кеширање на прелистувачот. Наведените типови на датотеки се запишуваат во кешот на прелистувачот и ќе бидат вчитани од таму кога ќе се повикаат повторно, што значително ја забрзува вкупната брзина на вчитување на страницата и става помалку оптоварување на вашиот хостинг.

Заглавие се додава Кеш-Контрола „приватна“ датотека FileETag MTime Size ExpiresActive On ExpiresDefault „пристап плус 0 минути“ ExpiresByType слика/ико „пристап плус 1 година“ ExpiresByType текст/css „пристап плус 1 година“ ExpiresByType „access“ години ExpiresByType слика/гиф „пристап плус 1 година“ ExpiresByType слика/jpg „пристап плус 1 година“ ExpiresByType слика/jpeg „пристап плус 1 година“ ExpiresByType слика/bmp „пристап плус 1 година“ ExpiresByType слика/png „пристап“ плус 1 година

Наведете го стандардното кодирање

WordPress работи со UTF8 кодирање и го прави тоа добро, но за да бидете сигурни дека ќе избегнете проблеми со кодирањето - наведете го насилно, сигурно нема да биде полошо.

AddDefaultCharset UTF-8

Ограничување на бројот на врски со страницата

Современите прелистувачи можат да создадат неколку истовремени врски со серверот што ја дава страницата. Ако немате доволно ресурси, можете да го ограничите бројот на врски.

MaxClients

Кога се става во root директориумот, директивата работи за целата локација, но ако ја ставите во папка со датотеки што ги давате за преземање, можете да го ограничите преземањето на неколку стримови.

Дозволете php да работи во JavaScript

Понекогаш е неопходно да се изврши некој код во скрипта. Овој код ќе помогне да се овозможи оваа функција

AddType апликација/x-httpd-php .js AddHandler x-httpd-php5 .js SetHandler апликација/x-httpd-php

Тоа е сè за htaccess и неговата стандардна употреба. Не спомнав заштита на папки со лозинки, затоа што мислам дека не е правилно, за „заштита“ од спам со блокирање на барањата за барања без да се помине Реферерот, бидејќи сите модерни спам-машини одамна можат да го направат тоа. Па, и други работи кои не ги сметам за компетентно спроведени.

Конечно, сакам да ви претставам услуга за тестирање на вашата датотека htaccess - http://htaccess.madewithlove.be/ . Едноставно е, имајте убав ден


Коментари: 112

  • Константин

    Сè е во ред, само мојот сајт се пренасочува на страницата 404 и серверот го враќа кодот 200.
    Можете ли да предложите како да го поправам?

  • Означи

    Ви благодариме за деталната статија!

  • Роман

    Кажи ми, го избришав делот, +300 страници, како да се пренасочам од сите страници на делот на страницата на главната. Каков код, услов да се додаде покрај ова? RewriteRule ^different(.*)$ /

  • Серж Холмберг

    Ви благодариме за статијата. Многу корисна статија. Би сакал да дознаам повеќе. И како да се направи така што пристапот до директориумите на сајтовите е возможен само преку index.html, а не директно? објаснувам. Имам многу меѓусебно поврзани страници во мојот директориум. Сепак, можам да побарам секој поединечно од прелистувачот. Оние. на пример, има страница page_1.html во главниот директориум. Влезот во него доаѓа од index.html (има копче). Сепак, можам да ја преземам и страницата page_1.html со посебно пристапување на http://www.mysite.com/main/page_1.html . Како да го спречите ова, како да бидете сигурни дека само index.html е достапен за посетителите на страницата, а преку него и пристап до други страници. Односно, размената помеѓу страниците беше можна само внатрешно на серверот. Тогаш посетителите нема да можат произволно да отвораат ниту една страница на страницата. Благодарам однапред. Ви благодарам.

  • Виктор

    Здраво! Ви благодариме за статијата! Во моментов ја поставувам мојата прва веб-страница. Го прочитав многу внимателно, благодарам повторно! Постои прашање: за заштита на одредени видови датотеки.
    Ти напиша:
    „Слично на тоа, можете да ги заштитите датотеките css и js што ги користат приклучоците:
    #
    #нарачај дозволи, одбиј
    #дозволи од сите
    #
    - крајниот цитат
    Дали има печатна грешка во претпоследната линија од кодот? Ако сакаме да ги заштитиме овие датотеки, можеби треба да има DENY? Или не разбирам нешто?

  • клуб со слива

    Ви благодарам многу за статијата, толку јасно и разбирливо објаснување одамна не сум видел. Почит

  • Донелиј

    Доцна за пиење Боржоми кога бубрезите се во тоалет!

  • Андреј

    Добра статија! Ви благодарам!

    Има прашање.

    Имам стара страница сè уште во .ASP, решив да ја преправам, да го сменам типот на веб-серверот, да инсталирам WordPress таму и, соодветно, морав да ги отстранам сите стари страници на страницата затоа што ASP не работи под Apache. Воопшто не сакам да станат недостапни и направив поддомен (http://www.old.mysite.ru) и префрлив се што е старо таму и се работи таму.

    Сега треба да се увериме дека ако корисникот пристапи на која било ASP страница, тој автоматски ќе биде пренасочен кон поддоменот http://www.old.mysite.ru, т.е. пренасочувајте САМО за ASP страниците, не пренасочувајте ги останатите.

    и „www“ - може или не е на адресата

      Не сум сигурен што треба да залепиш. Поставете една од страниците да забрани индексирање и тоа е тоа

  • zeleniyalex

    Здраво.
    Ви благодариме за статијата, одлични работи, обележани.
    Имам прашање. Се префрлив на услугата за проверка на датотеки htaccess што ја наведовте.

    Влегов во мојата:
    # ЗАПОЧНЕТЕ со WordPress

    Препишете го моторот вклучен
    RewriteBase /
    RewriteRule ^index\.php$ - [L]
    RewriteCond %(REQUEST_FILENAME) !-f
    RewriteCond %(REQUEST_FILENAME) !-d
    RewriteRule. /index.php [L]

    Го добив овој резултат:
    # ЗАПОЧНЕТЕ со WordPress
    1
    2 Препишете го моторот вклучен
    3 RewriteBase /
    4 RewriteRule ^index\.php$ - [L]
    5 RewriteCond %(REQUEST_FILENAME) !-f ——————— Оваа променлива не е поддржана: %(REQUEST_FILENAME)
    6 RewriteCond %(REQUEST_FILENAME) !-d ——————— Оваа променлива не е поддржана: %(REQUEST_FILENAME)
    7 RewriteRule . /index.php [L], ——————— Ова правило не беше исполнето бидејќи еден од условите не беше исполнет
    8
    9#КРАЈ WordPress

    Што значат коментарите на ставовите 5,6,7?
    Ви благодарам.

  • Анти надвор

    Виктор, кажи ми, те молам, за да направиш лепење, треба да го внесеш URL-то на твојот сајт, поентата е, не разбирам. com се менува или останува во самата директива?
    Која опција е точна (на примерот на вашата страница)?

    Опции +FollowSymLinks
    Препишете го моторот вклучен
    RewriteCond %(HTTP_HOST) ^www.gering111\.com$
    RewriteRule ^(.*)$

      Втората опција е точна, страницата е пример. Во вашиот случај тоа може да биде site.ru или site.org

  • Олег

    Мега корисна статија!
    Но, кеширањето на датотеките на клиентот не е „јавно“ на Cache-Control, туку „приватно“ на Cache-Control.
    Јавно - на прокси-серверот

      Точно! Ви благодариме за вниманието

  • Александар

    Здраво!
    Имаше страница како site.ru/club/ Неопходно е да се пренасочат сите страници на оваа страница на една страница на нова со приближно следнава структура: new-site.ru/step/stranica.html.
    Те молам кажи ми како да го направам тоа правилно преку htaccess?

  • Мајкл

    Добар ден. Сакав да предупредам дека се користи овој код
    RewriteCond %(THE_REQUEST) ^(3,9)\ /index\.html\ HTTP/
    RewriteRule ^index\.html$ http://site.com
    RewriteCond %(THE_REQUEST) ^(3,9)\ /index\.php\ HTTP/
    RewriteRule ^index\.php$ http://site.com
    може да го блокира пристапот до административниот панел на страницата, тоа ми се случи со CMS ShopScript и VamShop

      Го користам овој код со WP, ImageCMS - сè е во ред, нема проблеми. Всушност, не го тестирав на други системи, нема да кажам ништо.

  • Влад

    Ви благодарам! Конечно го разбрав со gzip!!!

  • Роман
  • Мајкл

    Прашање за пренасочување.
    Потребно е да се пренасочиме на една страница ако влегуваме од прелистувач, но на друга ако од мобилна апликација (не на мобилен прелистувач). Во исто време, и во двата случаи, лична врска до коренот на страницата.

      Василиј, не сум го видел ова, да бидам искрен ...

  • praktik_man

    Секаде има само општи описи на HTACCESS, а има малку вистински примери, исто така би било убаво да се опише синтаксата на она што се користи со што.

  • praktik_man

    Можете ли да помогнете ако некој го знае одговорот?
    Има каталог

    http://site.ru/catalog.php/ (куп различни страници)
    и да се пренасочи од која било внесена адреса која започнува со catalog.php на:

    http://site.ru/products/10
    и не додаде ништо повеќе. односно едноставно да се пренасочи кон директориумот.

    Испробано преку RedirectMatch ^catalog\.php(.+) http://site.ru/products/10
    Тоа не функционира ((

  • Иако не можам да помогнам, далеку од компјутерот. На прв поглед се е во ред. Најверојатно, проблемот е во синтаксата, но треба да проверите

  • praktik_man

    односно и папката и наставката на страницата се сменети, но името на производот остана исто.

    Направи вака пренасочување:
    RewriteRule ^content/(.+)$ http://site.ru/new folder/$1.html
    И не работи ;(
    Што е проблемот?