Конфигурационный файл .htaccess является конфигом для веб-серверов на Apache. Большинство хостингов работают через этот сервер, поэтому на каждом сайте присутствует этот файл. Вебмастера могут частично управлять его работой внося в него свои изменения. В этой статье мы рассмотрим директивы и правила, которые можно менять в работе сервера.
Самый главный файл .htaccess располагается в корне сайта:
Его действия распространяются на текущий каталог и на все вложенные каталоги. Т.е. у владельцев сайтов есть возможность воздействовать только на работу своего проекта, не мешая работе всего сервера. Если этот файл отсутствует, то его можно создать с помощью любого блокнота. Главное, чтобы название файла было ".htaccess" - без форматов.txt, .doc и т.д.
Через файл .htaccess чаще всего настраивают 301 редиректы на уровне сервера, что сильно ускоряет процесс перехода на новую страницу, т.к. не надо загружать промежуточную страницу. Также здесь прописывается какой файл обрабатывает 404 ошибку .
Чуть ниже мы рассмотрим все распространенные варианты редиректов через .htaccess , а для начала ознакомимся с опциями и правилами.
Чтобы иметь возможность работать с редиректами нужно включить модуль ReWriteEngine . Для этого необходимо прописать две строчки кода (желательно в самом верху файла .htaccess ):
Options +FollowSymLinks RewriteEngine OnРазместите эти строки в самом верху файла .htaccess , чтобы иметь возможность работать с директивами модуля mod_write.
Также на хостинге должны быть включены модули mod_alias (для поддержки Redirect, RedirectPermanent и RedirectMatch).
1. Правила Redirect, RewriteRule и RewriteCond 1.1. Директива RedirectСинтаксис Redirect :
Redirect /откуда http://куда_полный_адресRedirect устанавливает прямой редирект с одной страницы на другую.
В status пишут код редиректа. Является необязательным параметром. Чаще всего пишут 301, что сигнализирует о постоянном смене адреса страницы.
Важно, чтобы страница "откуда" была прописана в формате без указания полного адреса сайта, но с указанием полного относительного адреса URL начиная со слэша "/" (т.е. с корня сайта). Страницу куда идет редирект нужно писать полностью, т.е. абсолютный адрес страницы URL (т.е. с названием домена и протокола http или https).
Например
Redirect 301 /oldpage.php http://site/newpage.phpМожно также писать по другому
RedirectPermanent 301 /oldpage.php http://site/newpage.php или Redirect permanent 301 /oldpage.php http://site/newpage.php 1.2. Директива RewriteRuleДиректива RewriteRule устанавливает правила перехода. Синтаксис следующий:
RewriteRule Шаблон Подстановка [коды]- При внешнем редиректе меняется урл адреса в строке браузера - " "
- При внутреннем - не меняет урл адреса в строке браузера - " " или "[L] "
Директива RewriteCond определяет условия при котором выполняется правила в RewriteRule.
RewriteCond Сравниваемая_Строка УсловиеНапример, этими условиями могут быть браузер пользователя, IP-адрес , заголовок и т.д.
1.4. Директива RedirectMatchДиректива RedirectMatch аналогична Redirect с той лишь разницей, что позволяет записывать регулярные выражения.
RedirectMatch Откуда Куда 2. Примеры 301 редиректов в.htaccessМы уже рассматривали множество примеров с редиректом по .htaccess в статьях:
- Смена адреса сайта - редирект со старого домена на новый
Здесь мы дополним варианты редиректов, которых еще не было.
2.1. Редирект с одной страницы на другуюРедирект с site.ru/cat/oldpage на site.ru/newpage.html
RewriteRule ^cat/oldpage.* /newpage.htmlИли второй вариант:
Redirect 301 /cat/oldpage http://www.site.com/newpage.php 2.2. Редирект со всех файлов.htm на.html RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)\.htm$ $1.htmlИли второй вариант:
RewriteRule ^(.*)\.htm$ $1.html 2.3. Редирект всего каталога на другую страницуС любой страницы в каталоге и подкаталогах /old/ будет происходит редирект на /new.php
RewriteRule ^old(.*)$ /new.php 2.4. Удаление лишних слэшей в адресе URLНапример, страница /catalog///stranica.html доступна и открывается. Чтобы избежать такой ситуации и не плодить бесконечное число дублей следует записать следующий редирект
RewriteCond %{REQUEST_URI} ^(.*)//(.*)$ RewriteRule . %1/%2 2.5. Реврайт без редиректаМожно загрузить другую страницу без смены адреса страницы URL. Например, загрузим страницу /news.html , а в адресной строке будет отображаться адрес /news/happy
RewriteRule ^news/happy.* /news.html [L] 2.6. Простановка замыкающего слеша в конце адреса главной страницаНапример, многие сервера работают так, что последний слэш не пишется в URL. Например, http://site.ru . Ниже приведенный код решают это проблему: сайт будет открывать по http://site.ru/
RewriteCond %{REQUEST_URI} /+[^\.]+$ RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ 2.7. Удаляем директорию каталога из URLНапример для редиректа со страницы site.com/directoriya/stranica.html на site.com/stranica.html нужно прописать следующее:
RewriteRule ^directoriya/(.+)$ http://site.com/$1Или второй вариант:
RewriteCond %{DOCUMENT_ROOT}/directoriya/$1 -f RewriteRule ^(.*)$ directoriya/$1 2.8. Редирект GET параметровНапример, сделать редирект со страницы /?act=page&id=2 на /page-2/
RewriteCond %{QUERY_STRING} act=page RewriteCond %{QUERY_STRING} id=(\d+) RewriteRule .* /page/%1/? ] 2.9. Редирект на мобильную версию сайта m.site.ruВ данном примере сначала проверяется факт того, что пользователь открыл сайт с мобильного устройства {HTTP_USER_AGENT} , далее происходит замена адреса сайта на m.URL
RewriteCond %{HTTP_HOST} ^(.*)$ RewriteCond %{HTTP_USER_AGENT} (?i:midp|samsung|nokia|j2me|avant|docomo|novarra|palmos|palmsource|opwv|chtml|pda|mmp|blackberry|mib|symbian|wireless|nokia|hand|mobi|phone|cdm|upb|audio|SIE|SEC|samsung|HTC|mot-|mitsu|sagem|sony|alcatel|lg|eric|vx|NEC|philips|mmm|xx|panasonic|sharp|wap|sch|rover|pocket|benq|java|pt|pg|vox|amoi|bird|compal|kg|voda|sany|kdd|dbt|sendo|sgh|gradi|jb|dddi|moto|iphone|android) RewriteRule ^$ http://m.%1 2.10. Редирект с поддоменаНапример, выполним редирект с любой страницы поддомена poddomen.site.ru на основной домен site.ru
RewriteCond %{HTTP_HOST} ^poddomen.site.ru$ RewriteRule ^(.*)$ http://site.ru%{REQUEST_URI} 3.Другие примеры с htaccess 3.1. Запретить IP-адрес и браузерЗапретим открывать сайт для пользователя с браузера IE с IP-адресом 172.111.222.55
RewriteCond %{HTTP_USER_AGENT} MSIE RewriteCond %{REMOTE_ADDR} ^172\.111\.222\.55$ RewriteRule ^.*$ - [F] 3.2. Запретить конкретный файлЗапретим для всех файл disable_file.html :
deny from all 3.3. Разрешить доступ с одного ipДоступ будет разрешен только с одного ip-адреса 172.111.222.55
order deny,allow deny from all allow from 172.111.222.55 3.4. Запретить доступ с разных ipЗапретить доступ к сайту с нескольких ip-адреса 172.112.222.55, 172.113.222.55, 172.114.*.*
order deny,allow deny from all deny from 172.112.222.55 deny from 172.113.222.55 deny 172.114.*.* 3.5. Редирект в URL с больших символов на маленькиеВсе большие буквы в адресе URL будут переведены на маленькие.
RewriteRule - RewriteRule ! - RewriteRule ^([^A]*)A(.*)$ $1a$2 RewriteRule ^([^B]*)B(.*)$ $1b$2 RewriteRule ^([^C]*)C(.*)$ $1c$2 RewriteRule ^([^D]*)D(.*)$ $1d$2 RewriteRule ^([^E]*)E(.*)$ $1e$2 RewriteRule ^([^F]*)F(.*)$ $1f$2 RewriteRule ^([^G]*)G(.*)$ $1g$2 RewriteRule ^([^H]*)H(.*)$ $1h$2 RewriteRule ^([^I]*)I(.*)$ $1i$2 RewriteRule ^([^J]*)J(.*)$ $1j$2 RewriteRule ^([^K]*)K(.*)$ $1k$2 RewriteRule ^([^L]*)L(.*)$ $1l$2 RewriteRule ^([^M]*)M(.*)$ $1m$2 RewriteRule ^([^N]*)N(.*)$ $1n$2 RewriteRule ^([^O]*)O(.*)$ $1o$2 RewriteRule ^([^P]*)P(.*)$ $1p$2 RewriteRule ^([^Q]*)Q(.*)$ $1q$2 RewriteRule ^([^R]*)R(.*)$ $1r$2 RewriteRule ^([^S]*)S(.*)$ $1s$2 RewriteRule ^([^T]*)T(.*)$ $1t$2 RewriteRule ^([^U]*)U(.*)$ $1u$2 RewriteRule ^([^V]*)V(.*)$ $1v$2 RewriteRule ^([^W]*)W(.*)$ $1w$2 RewriteRule ^([^X]*)X(.*)$ $1x$2 RewriteRule ^([^Y]*)Y(.*)$ $1y$2 RewriteRule ^([^Z]*)Z(.*)$ $1z$2 RewriteRule - [N] RewriteCond %{ENV:HASCAPS} TRUE RewriteRule ^/?(.*) /$1UCP Anti-Cheat - бесплатная античитерская клиент-сервер программа для защиты сервера от недобросовестных игроков.
» Теперь данные с UCP сервера будут отправлятся на сайт в раздел "Монитор"
» Добавлен новый квар ucp_monitor
» HL1. Усовершенствована система защиты античита
» HL2. Улучшена поддержка последней версии CSS
» HL2. Поддержка мода Deathmatch
» HL2. Автоматическая замена binkw32.dll
Возможности:
» Защита от изменения и подмены игровых файлов
» Защита от внедрения и изменения процесса игры
» Защита от использования скриптовых читов
» Система банов по уникальному идентификатору ПК
» Полуавтоматическая установка клиентской части
» Поддержка steam и non-steam версии игр
» Возможность снятия снимков экрана у игроков
» Отладочный режим работы для быстрого выявления проблем
Поддерживаемые игры:
» Half-Life
» Condition Zero
» Counter-Strike 1.6
» Day of Defeat
» Adrenaline Gamer
» Team Fortress Classic
» Counter-Strike Source
» MU Online
» Ragnarok Online
Установка клиентской части:
1. Запустите инсталлятор, выберите понятный вам язык и нажмите "Далее"
2. Согласитесь с условиями лицензии и нажмите "Далее"
3. Нажмите "Обзор" и выберите файл hl.exe, затем нажмите "Открыть"
4. Выберите тип игры и не забудьте добавить ключ -steam
если у Вас steam версия игры либо патч 33 или выше (это билд 4156, чтобы узнать номер билда, достаточно написать в консоли игры команду version
)