Натиснете ENTER, за да видите резултатите или ESC за изход.

Блог на SuperHosting.BG

Хитрини с .htaccess файла – част 1

Съвети от support- aДойде ред на новата „порция“ от нашите „Съвети от support- a“. :) Както вече знаете, целта на тази категория е да получавате професионално мнение и полезна информация от вашата хостинг компания СуперХостинг.БГ. Не малко са въпросите ви за .htaccess файла. По тази тема има много какво да се каже… Вече е факт първата от поредицата публикации, в които колегите ще споделят интересни решения и казуси, с които се сблъскват ежедневно. Надяваме се така да ви помогнем в опознаването на възможностите, които дава .htaccess файла. Споделяйте и вие интересни моменти от вашата практика!

В следващите редове нашия колега Алекс от отдел Техническа поддръжка посочва каква настройка е необходима и какво трябва да съобразите, така че основният домейн в акаунта ви да зарежда съдържание от друга, желана от вас поддиректория.

На нашите сървъри за споделен хостинг като глобална настройка е зададено, основния домейн на всеки акаунт да зарежда съдържание от /public_html директория – основна директория (Document Root). След голямото увеличение на Add On домейните, клиентите ни питат как да променят основната директория за конкретния акаунт, без това да променя URL адреса, на който се достъпва сайта. Тъй като това е настройка, зададена в конфигурацията на самия сървър, не е удачно да бъде променяна само за дадения акаунт. В този случай, с колегите съдействаме да се извършат желаните промени на ниво акаунт чрез Rewrite правилата в .htaccess файла.

Пример за подобна ситуация е, когато в даден хостинг акаунт има добавени голям брой Add-On домейни. По подразбиране отделните Add-On домейни се създават с Document Root – поддиректория на /public_html. Клиента желае и основния домейн да зарежда съдържание на поддиректория на /public_html за по-лесно управление на файловете в акаунта.

Чрез добавяне на следните няколко реда в .htaccess файла, разположен в /public_html, вашият сайт ще зарежда съдържание от желаната поддиректория на /public_html, без това да променя URL адреса:

RewriteEngine Оn
RewriteCond %{HTTP_HOST} ^domainname.tld$ [NC,OR]
RewriteCond %{HTTP_HOST} ^www.domainname.tld$
RewriteCond %{REQUEST_URI} !directoryname/
RewriteRule (.*) /directoryname/$1 [L]

* domainname – името на вашия домейн;
* tld – домейн от първо ниво (Top Level Domain) – .com, .bg, .eu, .net, .org …;
* directoryname – името на желаната поддиректория на /public_html;

По този начин, достъпвайки вашия домейн с или без www отпред, ще се зарежда съдържанието, което сте разположили в /directoryname.

Трябва да се вземат предвид следните 2 особености относно действието на .htaccess файла:

1. Аpache уеб сървърът обхожда рекурсивно директориите за .htaccess файлове и те влияят на цялото дърво от поддиректории. Поради тази причина са възможни конфликти между Rewrite правилата, описани в .htaccess файлове, разположени в директории и техните поддиректории. Обикновено при еднакви системи или когато няма специфични правила, това не създава проблеми. Въпреки това, трябва да го имате предвид в случаи на некоректно сработване на други директиви. Добра практика е поставянето на .htaccess файлове със съответните правила в папки, намиращи се на едно и също ниво.

2. Някои системи използват глобално зададената на сървъра основна директория за тяхната работа. С посочените по-горе правила се променя само директорията, от която зарежда съдържание вашето уеб приложение. Глобално зададената на сървъра Document Root, остава непроменена: /home/accountname/public_html. Поради тази причина, е необходимо да съобразите начина на работа на софтуера, който използвате във вашия сайт, за да избегнете възможни конфликти. Проверка за настройки в сървъра можете да направите чрез файл с разширение .php (например: p.php), в който въвеждате следното:

<?php
phpinfo();
?>

*accountname – името на вашия акаунт;

Чрез този .php файл се визуализират глобалните настройки на сървъра, както и локално извършените в собствения php.ini файл, който по подразбиране се намира в основната директория на вашия акаунт. В секцията PHP Variables, за _SERVER[„DOCUMENT_ROOT“], можете да видите зададената на сървъра основна уеб директория. Тази променлива, може да променя стойността си, например за Add-On домейн, тъй като за него вие имате възможност да посочвате Document Root.

Ще се радваме да споделите като коментар под тази публикация интересни случаи и от вашата практика! Имали ли сте подобни казуси и причини, поради които сте желали смяна на основната директория, от която се зарежда вашия сайт? За какви други особени ситуации, директиви или действия на .htaccess файла искате да научите повече? Питайте! А ние ще ви отговорим и ще предоставим информацията, от която имате нужда?

Не пропускайте да се абонирате за нашия блог и да следите нашата фен страница във Facebook, защото сме ви приготвили още много интересна и полезна информация!

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

Оставете коментар

16 Коментара към "Хитрини с .htaccess файла – част 1"

Уведоми ме при
Анонимен

Димитър
Гост
4 години 7 месеца .

Много полезна информация, особено за сайтове които имат проблеми с натоварването, благодаря!

Мирослав
Гост
Мирослав
4 години 7 месеца .

ngnix-а е много добро решение за static content. Не само защото е по-лек от apache, има куп предимства сред, които е и решение на C10k проблема.

Илия Горанов
Гост
4 години 7 месеца .
Нещо много полезно за силно натоварени сайтове е добавянето на CDN – Content Delivery Network – това е отделен адрес, който предоставя съдържание, което рядко се променя, като този сървър има специфични настройки… В моя случай имам форум с доста посещения… в CDN съм изнесъл аватарите, снимките и всякакви други картинки, CSS и JS файлове, които на практика се променят доста рядко. За целта се създава отделен поддомейн в основния домейн на сайта. На този поддомейн в корена се поставя следния .htaccess файл: Header unset Pragma FileETag None Header unset… още »
Vassilev
Гост
Vassilev
4 години 7 месеца .

Ще се радвам за повече инфо как ефикасно да блокираме Китайския и Украински спам народ през .htaccess 😉

монк
Гост
4 години 7 месеца .
Пренасочване на http://www.sitename.com към sitename.com основно заради СЕО причини: RewriteEngine On RewriteCond %{HTTP_HOST} !^your-site.com$ [NC] RewriteRule ^(.*)$ http://your-site.com/$1 [L,R=301] Блокиране на “хотлинкинг“ или още известно като “Стига си ми крал трафика, твойта кожа…“ RewriteEngine On #Replace ?mysite.com/ with your blog url RewriteCond %{HTTP_REFERER} !^http://(.+.)?mysite.com/ [NC] RewriteCond %{HTTP_REFERER} !^$ #Replace /images/nohotlink.jpg with your „don’t hotlink“ image url RewriteRule .*.(jpe?g|gif|bmp|png)$ /images/nohotlink.jpg [L] Къстъм страници за грешки: ErrorDocument 400 /errors/badrequest.html ErrorDocument 401 /errors/authreqd.html ErrorDocument 403 /errors/forbid.html ErrorDocument 404 /errors/notfound.html ErrorDocument 500 /errors/serverr.html Премахване на файлови окончания от URL: RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-d… още »
wpDiscuz

Cloud услуги (SuperCloudVPS)