Какво означават редовете във файла .htaccess?

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

RewriteRule ^ ([^ /.] +) /? $ Index.php? Ref = $ 1 [L]

301 пренасочвания са в ход, но защо? Трябва да рисувате в детайли.

Да вървим по ред.

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

Тази директива ще зададе основния URL адрес в контекста на текущата директория. Например, ако посочите RewriteBase/myurl и физическият път до директорията е/abc/def /, тогава всъщност при достъп до страницата на URL адреса http: /www.server.com/myurl/index.html, ще бъде направена заявка към файла/abc /def/index.html. За вашия случай файловете „RewriteBase /“ в тази директория (където е .htaccess) могат да бъдат достъпни, без да се посочва физическата директория: http: //your_server/your_file.html

Директива RewriteCond - дефинира условието, при което се извършва преобразуването, синтаксисът е следният RewriteCond. Посочили сте като низове повикването към вашия сървър и ресурса, заявен в реда за заявка на HTTP .

Условието за домейна не е напълно ясно, т.е. при какво условие искате да изпълните пренасочването. Обикновено има нещо като RewriteCond% www.domain1.com, т.е. пренасочването ще бъде извършено при достъп до хоста www.domain1.com. А условието RewriteCond%/$ показва, че повикването трябва да е към празен път.

  • RewriteRule ^ (. *) (/) $ $ 1 [L, R = 301] и RewriteRule ^ ([^ /.] +) /? $ Index.php? Ref = $ 1 [L]

Посочете правилата за пренасочване, тоест всъщност тези редове са отговорни за пренасочването.

За съжаление, не посочихте как трябва да пренасочите, при какви условия, затова ще дам пример за пренасочване, да речем от езика на клиента:

  • Пренасочване към http://mysite.com/ru/ при влизане от Русия, Украйна, Беларус, Казахстан

RewriteRule. * Http://mysite.com/ru/ [R = 302, L]

  • Пренасочване към http://mysite.com/lv/ при влизане от Латвия

RewriteRule. * Http://mysite.com/lv/ [R = 302, L]

  • Пренасочване към http://mysite.com/en/ при влизане от други страни

RewriteRule. * Http://mysite.com/en/ [R = 302, L]

По принцип нещо подобно, но е по-добре да зададете конкретна задача за пренасочването и да видите примери и документация на живо, за да се организира правилно.

• условие: ако заявката след хоста завършва с наклонена черта (например test1.ru/news/)

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

• пример: test1.ru/news/ ще се върне в ref с параметъра news

RewriteRule ^ ([^ /.] +) /? $ Index.php? Ref = $ 1 [L]

Най-общо казано, .htaccess файл е документ от страна на сървъра, който се използва за конфигуриране на ниво на достъп до файлове и папки, правила за пренаписване на URL адреси или съобщения за грешки. Най-често този файл е свързан с показването на страница за грешка 404 (когато потребителят се опита да навигира до страница на сайт, който не съществува). Освен това файлът .htaccess често се използва за оптимизиране на сайт за търсачки. Използването на пренасочване 301 ще насочи търсачките към ново местоположение на съдържанието или URL адрес - това по принцип е основната отговорност на раменете на този файл.

По този начин получихме връзки във формата http://web-profy.com/chto-takoe-htaccess.htm

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

Файлът .htaccess е най-тясно свързан с хостинг, базиран на Apache. Те са често срещани при версии на Apache 1.x и 2.x и изпълняват почти същата функция и имат един и същ език за програмиране.