Пренасочване на Htaccess и неговите настройки

.htaccess файловете могат да бъдат в главната директория на сайта (напр. /Home /user /sitename /) или неговите поддиректории. Те се използват за организиране на пренасочване на посетители от един домейн или документ на вашия уеб сървър към друг. Всеки .htaccess файл съдържа набор от правила (директиви), според които уеб сървърът пренасочва потребителя към една или друга страница. Много системи за управление на съдържанието използват настройките за пренасочване .htaccess. Можете да редактирате файловете, създадени от вашата CMS, като въведете нови директиви за пренасочване или създадете свои собствени .htaccess файлове ръчно.


Създаване на .htaccess файл

Първата стъпка в конфигурирането на .htaccess редиректора всъщност е създаването на самия файл. Вашият .htaccess трябва да бъде обикновен текстов файл. Това означава, че трябва да го създадете в програма за редактиране на текст, който може да генерира файлове с обикновен текст (.txt).
  • На компютър с Windows можете да използвате Notepad, който е един от стандартните вградени програми.
  • На Mac можете да използвате TextEdit. Първо трябва да отворите менюто Настройки в TextEdit и да изберете "Прост текст" в секцията "Нов документ". След това можете да започнете процеса на създаване на нов текстов документ textEdit за вашия .htaccess файл.
  • На Linux можете да използвате всеки от многото текстови редактори, налични за вашата дистрибуция - конзолата (vi, nano) и графиката (например gedit).
  • Когато държите документа задължителенназовете htaccess.txt. Ако го запишете просто като .htaccess, вашият компютър ще скрие файла. Това е така, защото файловете, които започват от една точка, се считат за системни файлове.


    Изтегляне на .htaccess файла на сървъра

    За правилното пренасочване на .htaccess файла, файлът трябва да бъде изтеглен в директорията, в която искате да зададете настройки за пренасочване. Това обикновено е вашата директория с HTML файлове (/var/www/vhosts/example.com/httpdocs/), въпреки че можете да я качите във всяка поддиректория на вашия сървър. След като файлът бъде изтеглен, преименувайте го директно в .htaccess. На този етап файлът може да стане невидим за вашия FTP клиент, тъй като той вече има формата на системния файл. Много FTP клиенти ви позволяват да видите скритите файлове и папки - препоръчително е да активирате тази функция. За инструкции как да го включите, вижте документацията на клиента.

    Проверка на .htaccess

    Най-лесният начин да проверите дали уеб сървърът обработва вашия .htaccess файл е умишлено да го повредите. Редактирайте .htaccess файла, така че първият ред да започва с думата Тест: Тест # Инсталирайте главната страница на DirectoryIndex page.html page.txt Сега, когато рестартирате началната страница на вашия сайт, ще видите следната грешка (вижте снимката по-долу).
    Ако тази грешка се появи, това всъщност е добре - така сървърът обработва файла ви и чете директиви за препращане от него. Ако не, уверете се, че файлът и директорията, в която се намира, са четими и ако е необходимо, променениправа на достъп

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

    Правилата на .htaccess са рекурсивни. Това означава, че директивите, записани във файла /home/user/sitename_html/.htaccess, ще бъдат приложени както към тази директория, така и към нейните дъщерни папки - освен ако определено правило не бъде отменено с директивата в .htaccess файла в дъщерната директория. , По този начин, настройките за пренасочване чрез .htaccess, зададени от файла на по-високо ниво, се заместват от параметрите на файловете, които са на по-ниски нива. Например, ако искате да включите пренасочвания за по-голямата част от вашия сайт, но да го деактивирате за определена директория, можете да създадете отделен .htaccess с подходящите настройки и да го изтеглите само в тази директория. По същия начин файловете с по-ниско ниво .htaccess заменят конфигурацията на файловете PHP vhost.conf и php.ini на по-високи нива, освен ако не е забранено за тези файлове. И накрая, подреждането на правилата за пренасочване на .htaccess във файла може да е от значение за някои типове директиви. Списъкът с правила се обработва последователно от начало до край; Директивите в началото на файла ще бъдат изпълнени първо.

    .htaccess redirect: main types

    Съществуват различни видове пренасочвания, които могат да се изпълняват чрез .htaccess файлове. Ще ги анализираме и ще разгледаме всеки тип, преди да се научим как да ги използваме.

    301: постоянно пренасочване

    Това е най-често срещаният вид пренасочване и най-вероятно той е този, който най-често ще създавате. Във файла.Htaccess 301 пренасочва страницата, за да покаже, че нейният стар URL (препращащ URL адрес) вече не се използва.

    302: Временно пренасочване

    Пренасочване 302 показва, че старият URL на страницата е временно деактивиран, но скоро ще бъде възстановен. За Apache сървъра това правило за пренасочване се използва по подразбиране.
    Следователно, преди да настроите пренасочването .htaccess, трябва да определите дали ще има постоянно или временно пренасочване. За примери в тази статия ще използваме пренасочване 301.

    Примери за скриптове за пренасочване

    Най-често срещаните примери за пренасочвания .htaccess са изброени по-долу. За да използвате някоя от тях, трябва да отворите файла .htaccess, който сте създали с който и да е текстов редактор и да направите необходимия пример за код в него. Кодът е спечелен, модулът за пренаписване (mod_rewrite) трябва да бъде активиран на уеб сървъра на Apache. За да направите това, трябва да извършите няколко действия в зависимост от вашата операционна система. В Windows направете следното:
  • Намерете и отворете файла .http.conf. Тя е в директорията, в която сте инсталирали Apache.
  • Създайте резервен http.conf, за да възстановите файла, ако е необходимо, ако правите някакви грешки.
  • Намерете файла #LoadModule rewrite_module /mod_rewrite.so във файла и го разкоментирайте (вземете #).
  • Намерете блок от тагове и го заменете с Опции Всички AllOverride All.
  • Намерете всички препратки "AllowOverride None" и ги заменете навсякъде с "AllowOverride All".
  • Рестартирайте уеб сървъра и браузъра.
  • Достатъчно е да се работи с Linux в терминала:sudo a2enmod rewrite Тази команда ще стартира модула или ще докладва, че модулът вече работи. За да направите нови промени, рестартирайте Apache с командата в терминала: sudo service apache2 restart
    Сега можем да започнем редактирането на .htaccess файла и да изучаваме най-често срещаните директиви за пренасочване. 1. Пренасочете от една страница към друга .htaccess: Redirect 301 /retiredpage.html http://www.example.com/newpage.html 2. Пренасочете папката (с цялото съдържание): RedirectMatch 301 ^ /olddir /http: //www.yourdomain.com/newdir/3. Пренасочване на страницата .htaccess с премахване WWW: RewriteEngine На RewriteCond% {HTTP_HOST} ^ www.sitename.com $ [NC] RewriteRule ^ (. *) $ http://sitename.com/$ 1 [L, R = 301] 4. Пренасочване с добавяне на WWW: RewriteEngine На RewriteCond% {HTTP_HOST}! ^ Www.samplehost.com $ [NC] RewriteRule ^ (. *) $ Http://www.samplehost.com/$ 1 [L, R = 301] 5. Пренасочва към друг .htaccess домейн (цялото прехвърляне на сайт): RedirectMatch 301 ^ (. *) $ Http://www.yoursite.com 6. .htaccess-пренасочване на HTML файлове към PHP файлове : RedirectMatch 301 (. *). Html $ http: //www.examplesite.com$1.php 7. Препращане Списък със страници с добавяне на HTTPS: RewriteCond% {HTTPS} изключено RewriteRule (. *) Https: //% {SERVER_NAME} /$ 1 [R = постоянен, L] 8. Заменете всички букви в URL адреса в малки: RewriteMap lc int: tolower Този кодов фрагмент трябва да бъде добавен към httpd.conf на вашия уеб сървър. След това отворете .htaccess файла и направете: RewriteEngine На RewriteCond% {REQUEST_URI} [A-Z] RewriteRule. $ {lc:% {REQUEST_URI}} [R = 301, L] 9. Използвайте регулярни изрази. Правилата за пренасочване често съдържат знаци, които са съставени в регулярни изрази. Това позволява на сървъра да знае точно какво искате да промените в URL адреса. Редовните изрази обаче могат да бъдат трудни за разбиране с един поглед. Ето някои общи елементи, които можете да видите и използвате в правилата си за пренаписване на URL адреси:както и конкретни примери за тяхното използване:
  • ^: началото на реда за подмяна;
  • $: краят на реда за подмяна.
  • Пример: регулярният израз ^ folder1 $ дава сигнал да се намери и замени текста "folder1" в линка.
  • . : всеки символ, който не е пропуск (например a, B, 3);
  • *: Показва, че предходният текст може да се повтаря неограничено;
  • Пример: нормален израз ^ качени. * $ Позволява да замените текста "uploads2009", "uploads2010" и т.н .; Редовен израз ^. * $ Означава "намерете нещо". Това е полезно, ако не знаете какво може да въведе потребителят в текста на URL адреса.
  • (): Изберете част от текста, която трябва да се използва в правилото като стойност на променливата $ 1. Това е необходимо, например, за обработване на заявки за файлове, които трябва да бъдат еднакви за старата и новата версия на URL адреса.
  • Грешка 404 не е намерена

    Понякога има грешки в настройката за пренасочване. Нека разгледаме основните причини, поради които пренасочването .htaccess може да не работи. Честа е грешката 404 Not Found, която се появява по време на пренасочването. В този случай внимателно проучете URL адреса, генериран в адресната лента. Има ли необходим файл в новото местоположение на сървъра, определен от правилото за пренасочване? Може да се наложи да копирате файлове от старото ви местоположение на ново място или да направите правилото за пренасочване по-широко, така че при липса на необходимата връзка към файла има пренасочване към началната страница на сайта. Ако URL адресът е неправилен (напримерhttp://example.com/folder1//file.html - отбележете двете наклонени черти), трябва да видите синтаксиса на правилото за пренасочване.

    Endless URL, timeout или loop

    Ако URLът за пренасочване е генериран твърде дълго или страницата не е изтеглена твърде дълго или браузърът ви изпраща грешка при пренасочване, повечето пренасочвания вероятно ще се конфронтират помежду си. Трябва да проверите целия файл .htaccess за правилата за пренасочване, които могат да съвпадат с други правила. Може също да се наложи да проверите .htaccess файловете в поддиректории. Имайте предвид, че FTP няма да показва .htaccess файлове, освен ако не сте активирали възможността за преглед на скритите файлове и папки. Освен това можете да включите пренасочване в HTML и PHP страници. Проверете страницата, която причинява проблема, за вътрешни пренасочвания. Добавянето на [L] правила за пренасочване може да помогне в някои случаи, тъй като този флаг командва сървъра да спре да се опитва да пренасочи URL адреса след прилагане на правилото.

    Как да направим пренасочване без .htaccess

    И накрая, нека погледнем как да пренасочим URL адреса без да редактираме .htaccess файла, като използваме виртуалния хост на Apache. Между другото, този метод е по-прост от правилата за съставяне на страницата .htaccess. Отворете текстовия редактор с конфигурационния файл vhost (httpd.conf), който обикновено се намира в директорията /etc /apache2 /sites /sitename. Избраната извадка от файла показва пренасочването: ServerName www.mysite.com ServerAlias ​​www.mysite.comПренасочване /http://mysite.com Конфигурацията по-горе, пренасочва всички заявки за домейн без поддомен WWW. За да пренасочите всички заявки за домейн с WWW поддомейн, променете конфигурацията, както е показано по-долу. Името на сървъра anywebsite.com ServerAlias ​​anywebsite.com Пренасочване /http://www.anywebsite.com Рестартирайте Apache и сайтът ще започне да се пренасочва правилно. Горният метод е най-лесният и по-лесен за изпълнение, отколкото пренасочване от една страница към друга в htaccess.

    Свързани публикации