Конфигуриране на правила и пренасочвания чрез .htaccess

Файлът .htaccess е конфигурационен файл на ниво директория, поддържан от уеб сървъра Apache. Той ви позволява да променяте настройките на уеб сървъра (като активиране или деактивиране на функции) за конкретен акаунт, без да засягате глобалната конфигурация на сървъра.

Този файл прилага своите настройки към цялата директория, в която се намира, включително всички файлове и поддиректории в нея. Всички промени, направени във файла .htaccess, се прилагат незабавно, без необходимост от рестартиране на сървъра.

Как да намерите файла .htaccess

За да намерите файла .htaccess:  

1. Влезте във вашия Spaceship акаунт >> изберете Hosting Manager в Launchpad >> Manage до хостинг план >> Files and Storage >> Manage Files до името на уебсайта.

2. Ще бъдете пренасочени към основната папка на домейна. 

3.  Ако трябва да редактирате файла .htaccess за домейна, намерете файла .htaccess в основната папка на домейна, щракнете с десния бутон върху него и изберете опцията Edit :


ЗАБЕЛЕЖКА: Уверете се, че "Show Hidden Files (dotfiles)" е активирано в менюто Settings:


4. Ако няма файл .htaccess във File Manager, можете да създадете нов с бутона + File:


5. Готови сте да добавите свои собствени конфигурационни правила и да ги запазите.
   

Списък с често използвани правила за .htaccess

Блокиране 

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

За да приложите конкретни правила за блокиране, създайте .htaccess файл със следното съдържание:

(За разрешаване на достъп на всички останали и блокиране на потребители с IP адрес X.X.X.X)

<RequireAll>

Require all granted

Require not ip X.X.X.X

</RequireAll>

(За блокиране на всички посетители, с изключение на конкретните IP адреси X.X.X.X и Y.Y.Y.Y)

<RequireAll>

Require all denied

Require ip X.X.X.X

Require ip Y.Y.Y.Y

</RequireAll>

ЗАБЕЛЕЖКА: Не използвайте остарелите директиви Allow, Deny и Order заедно с новата директива Require директива.

Mod_Rewrite (правила за пренасочване)

Mod_Rewrite определя как уеб страниците и URL адресите се представят на посетителите.

По подразбиране Mod_Rewrite съпоставя URL адрес с отговарящ път във файловата система. Въпреки това, може също да пренасочва един URL към друг.

Преди да настроите пренасочване, важно е да изберете типа пренасочване, който най-добре отговаря на вашите нужди:

  • Постоянно пренасочване (301): Това пренасочване изпраща статус код 301, което означава, че страницата е преместена постоянно. То се кешира в браузъра и сигнализира на търсачките и потребителските агенти да актуализират URL адреса в своите бази данни. Това е най-често използваният тип пренасочване.

  • Временно пренасочване (302): Това пренасочване изпраща статус код 302, което означава, че преместването е временно. Браузърът няма да кешира това пренасочване и въпреки че ще пренасочи посетителите и търсачките, оригиналната страница ще продължи да се индексира. Този тип пренасочване се препоръчва, освен ако не сте сигурни, че URL адресът няма да се промени в бъдеще.

По-долу е даден списък с някои от най-често използваните и полезни пренасочвания, които могат да бъдат конфигурирани чрез файла .htaccess:

Постоянно пренасочване от example1.com към example2.com

RewriteEngine On

RewriteCond %{HTTP_HOST} ^example1\.com$ [OR]

RewriteCond %{HTTP_HOST} ^www\.example1\.com$

RewriteRule ^(.*)$ "http\:\/\/example2\.com/$1" [R=301,L]

Временно пренасочване от exampledomain1.com към exampledomain2.com

RewriteEngine On

RewriteCond %{HTTP_HOST} ^example1\.com$ [OR]

RewriteCond %{HTTP_HOST} ^www\.example1\.com$

RewriteRule ^(.*)$ "http\:\/\/example2\.com\/" [R=302,L]

ЗАБЕЛЕЖКА: По-долу са дадени примери за постоянни пренасочвания. Временни пренасочвания могат да се дефинират чрез замяна на [R=301,L] с [R=302,L] в края на кода (където е необходимо).

Пренасочване от example1.com/subfolder към example2.com

RewriteEngine On

RewriteCond %{HTTP_HOST} ^example1\.com$ [OR]

RewriteCond %{HTTP_HOST} ^www\.example1\.com$

RewriteRule ^subfolder/$ "http\:\/\/example2\.com\/" [R=301,L]

Пренасочване от HTTP към HTTPS за example.com

RewriteEngine On

RewriteCond %{HTTPS} !=on

RewriteRule .* https://example.com%{REQUEST_URI} [R,L]

или

RewriteCond %{SERVER_PORT} 80

RewriteCond %{HTTP_HOST} ^example\.com$ [OR]

RewriteCond %{HTTP_HOST} ^www\.example\.com$

RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]

Пренасочване от non-WWW към WWW

  • за всеки домейн, .htaccess влиза в сила:

RewriteEngine On

RewriteCond %{HTTP_HOST} !^www\.

RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

  • за определен домейн:

RewriteEngine On

RewriteCond %{HTTP_HOST} ^example\.com$ [NC]

RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]

Пренасочване от WWW към non-WWW

  • за всеки домейн .htaccess влиза в сила:

RewriteEngine On

RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]

RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

  • за определен домейн:

RewriteEngine On

RewriteCond %{HTTP_HOST} ^www\.example\.com [NC]

RewriteRule (.*) http://example.com/$1 [R=301,L]

Пренасочване на всички страници от example.com към съответните страници на domain.com

RedirectMatch 301 ^/(.*)$ http://domain.com/$1

ЗАБЕЛЕЖКА: Имената на всички страници трябва да съвпадат и на двата домейна, в противен случай пренасочването ще доведе до съобщение "Page not Found".

Пренасочване на една страница към нов URL адрес

Redirect 301 /old_page.html http://www.domain.com/new_page.html

ЗАБЕЛЕЖКА: Тази техника може да бъде полезна за пренасочване на изтрита страница към грешка 404 или за SEO корекции след актуализиране на съдържанието.

Удостоверяване/автентикация 

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

За да настроите тази защита:  

1. Създайте директорията, която искате да защитите, в папката /home/cpanel_user/.htpasswds/ (например за domain.com/test, пътят е .htpasswds/domain.com/test/).

2. В тази директория създайте файл passwd и добавете хеширани данни за достъп с помощта на онлайн генератор.

3. Добавете следните директиви във файла .htaccess:

AuthType Basic

AuthName "Directory Name"

AuthUserFile "/home/cpanel_user/.htpasswds/public_html/test/passwd"

require valid-user

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

Тази функция ви позволява да създавате персонализирани страници за грешки за вашия уебсайт. Това е полезна опция, тъй като ви позволява да представите на посетителите съобщение за грешка, което съответства на темата на вашия сайт, ако има неработещи URL адреси. Това помага да се избегне показването на стандартната грешка '404 File Not Found' и вместо това връща персонализирана страница за грешка с инструкции за връщане към съдържанието на сайта, предотвратявайки объркване.

За да настроите персонализирана страница за грешка, добавете следния текст във файл .htaccess:

ErrorDocument 404 /404.html

Този ред инструктира уеб сървъра Apache да зареди файл 404.html, разположен в основната директория на домейна, когато възникне грешка 404 (File Not Found).

ЗАБЕЛЕЖКА: За да създадете персонализирани страници за други грешки (като 403 или 500), просто заменете 404 със съответния код за грешка и /404.html с пътя до вашия персонализиран файл за грешка.

Деактивиране на съществуващи правила в .htaccess

Ако трябва временно да деактивирате някои от съществуващите правила, например за тестови цели, можете лесно да ги коментирате. За да направите това, просто добавете знак за хаш (#) в началото на реда.

Като алтернатива можете да деактивирате един ред или блок от редове, като ги изберете и използвате клавишната комбинация Ctrl + / .

Изисква се валиден имейл