залИнфа

htaccess

.htaccess — это конфигурационный файл веб-сервера Apache, позволяющий управлять работой веб-сервера и настройками сайта с помощью различных параметров (директив) без изменения основного конфигурационного файла веб-сервера.

Перед редактированием файла .htaccess нужно всегда делать резервную копию работающего варианта!

Редирект

Основная функция, которая указывает серверу на наличие правил перенаправления


RewriteEngine On
Options +FollowSymlinks

При смене структуры сайта


RewriteEngine On
Options +FollowSymlinks
RewriteRule ^reference/(.*)$ zalari/reference/$1 [R=301,L]

У меня были ссылки zalinfa.ru/reference/, а сейчас структура изменилась и все ссылки будут по zalinfa.ru/zalari/reference/, т.е. я сдвинул структуру на один уровень.

Перенаправление с домена www на без www


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

Перенаправление с одного доменного имени на другое


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

Перенаправление с одного доменного имени на другое в зоне РФ


RewriteCond %{HTTP_HOST} ^xn-....xn--p1ai$ [NC] 
RewriteRule ^(.*)$ http://www.site.ru/$1 [R=301,L]

Переход сайта на HTTPS для всех страниц сайта


RewriteCond %{SERVER_PORT} ^80$ [OR] RewriteCond %{HTTP} =on
 RewriteRule ^(.*)$ https://domain.ru/$1 [R=301,L]

Обратный переход на HTTP


RewriteCond %{HTTPS} "on"
RewriteRule .* http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L,QSA]

Весь сайт на новый домен


RewriteCond %{REQUEST_FILENAME} robots.txt$ [NC]
RewriteRule ^([^/]+) $1 [L]
RewriteCond %{HTTP_HOST} ^site.ru
RewriteRule ^(.*)$ http://newsite.ru/$1 [R=301,L]
RewriteCond %{HTTP_HOST} ^www.site.ru
RewriteRule ^(.*)$ http://newsite.ru/$1 [R=301,L]

Путь к файлу 404 ошибки

ErrorDocument 404 /404.html

PHP для настройки 301-редиректа


header("HTTP/1.1 301 Moved Permanently");
header("Location: http://site/dir/");

Блокирование прямого доступа к ядру

<Files ~ ".(php)$">
 Deny from all 
 </Files>

Запрет на выполнение php-скриптов в корне сайта


<Filesmatch ".(php)$";>
order deny,allow
deny from all
</Filesmatch>

Перенаправление всех запросов на index.php кроме указанных в RewriteCond


<IfModule mod_rewrite.c>
RewriteEngine On
Options +FollowSymlinks
RewriteBase /
RewriteCond %{REQUEST_URI} !^(.*).(woff|woff2|ttf|otf|eot|svg|mp4|avi|swf|ico|jpg|jpeg|png|gif|bmp|tif|css|js|txt|pdf|xml) [NC]
RewriteRule ^(.*)$ index.php [L]
</IfModule>

Блокировка по IP

	
#Забанить один адрес	
Order Deny,Allow
allow from all
Deny from 192.168.1.1

#Забанить все адреса подсети
Order Deny,Allow
allow from all
Deny from 192.168.1
##или 192.168

Подсеть с диапазоном IP, откуда он пришёл

Пример последний мой надоедливый ip 46.166.190.161

Идем по адресу любого Whois-сервиса, я хожу сюда https://who.is/

В поиск вставляем наш адрес или сразу добавляем к ссылке https://who.is/whois-ip/ip-address/46.166.190.161

Ищем CIDR в моем случае 46.0.0.0/8, записываем в .htaccess

	
##Подсеть с диапазоном IP, откуда он пришёл 46.166.190.161
Order Deny,Allow
deny from all
Deny from 46.0.0.0/8
Deny from 109.0.0.0/8

Если CIDR нет, воспользуемся калькулятором http://ip2cidr.com/

Еще можно заблокировать всех потенциальных пользователей определенного Интернет провайдера


#Блокируем условно плохую компанию bad.company.com
order allow,deny
deny from bad.company.com
allow from all

Записываем ошибки PHP в журнал


# отключаем вывод ошибок пользователям
php_flag display_startup_errors off
php_flag display_errors off
php_flag html_errors off
# заносим ошибки в журнал
php_flag log_errors on
php_value error_log /php_error.log

Запускаем PHP в файлах JavaScript


AddType application/x-httpd-php .js
AddHandler x-httpd-php5 .js

<FilesMatch ".(js|php)$">
SetHandler application/x-httpd-php
</FilesMatch>

Принудительная постановка замыкающего слеша


<IfModule mod_rewrite.c>
 RewriteCond %{REQUEST_URI} /+[^.]+$
 RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ [R=301,L]
</IfModule>

    Cинтаксис регулярных выражений для файла Apache / .htaccess
  • () — используются для выделения нужных групп символов.
  • ^ — спецсимвол начало строки.
  • $ — спецсимвол конец строки.
  • . — обозначает любой символ.
  • | — обозначает альтернативу. Например, выражения «A|B» и «(ABC|DEF)» означают «A или B» и «ABC или DEF» соответственно.
  • ? — ставится после символа (или группы символов), который может как присутствовать, так и отсутствовать.
  • * — ставят после символа (или группы символов), который может отсутствовать или присутствовать неограниченное число раз подряд.
  • + — действует аналогично символу * с той лишь разницей, что предшествующий ему символ обязательно должен присутствовать хотя бы один раз.
  • [] — используются для перечисления допустимых символов. Внутри скобок можно использовать диапазоны: например, выражение «[0-9]» равносильно выражению «[0123456789]». Если символы внутри квадратных скобок начинаются с символа ^, это означает любой символ, кроме перечисленных в скобках.
  • \— ставится перед спецсимволами, если они нужны в своем первозданном виде.
  • {3,9} — фигурные скобки означают диапозон количества символов, в данном случае допускается от 3 до 9 символов, длина строки из символов должна быть равна или более 3 равна или менее 9 символов. Все, что расположено после символа
  • # - считается комментарием.


  •  2019-05-20 14:12:36 
  •  452 
  •  0 
 
  
Ремонт компьютера на раз-два

Перезагружается рабочий стол

Настройка wifi моста между DSL-2750U И DAP-1360U

KVM-переключатель

Распространенные причины поломки материнских плат

Ноутбук внезапно отключается