Директивы .htaccess: различия между версиями
м Откат правок 217.118.81.236 (обс.) к версии Apple-Coffee Well Метки: откат SWViewer [1.3] |
DannyS712 (обсуждение | вклад) м <source> -> <syntaxhighlight> (phab:T237267) |
||
Строка 3: | Строка 3: | ||
==== На другой адрес ==== |
==== На другой адрес ==== |
||
< |
<syntaxhighlight lang="apache"> |
||
Redirect /index.php http://example.com/index.php |
Redirect /index.php http://example.com/index.php |
||
</syntaxhighlight> |
|||
</source> |
|||
==== При запросе определённых страниц ==== |
==== При запросе определённых страниц ==== |
||
< |
<syntaxhighlight lang="apache"> |
||
Redirect /data http://www.example.com/data |
Redirect /data http://www.example.com/data |
||
Redirect /forum http://forum.example.com |
Redirect /forum http://forum.example.com |
||
</syntaxhighlight> |
|||
</source> |
|||
==== По маске имени файла ==== |
==== По маске имени файла ==== |
||
Строка 18: | Строка 18: | ||
Следующие строки определяют, что все запросы, кроме запросов к файлам с расширениями .gif и .jpg, будут перенаправлены на файл index.php: |
Следующие строки определяют, что все запросы, кроме запросов к файлам с расширениями .gif и .jpg, будут перенаправлены на файл index.php: |
||
< |
<syntaxhighlight lang="apache"> |
||
RewriteEngine On |
RewriteEngine On |
||
RewriteRule !.(gif|jpg)$ index.php |
RewriteRule !.(gif|jpg)$ index.php |
||
</syntaxhighlight> |
|||
</source> |
|||
Работает только при наличии '''mod_rewrite'''. |
Работает только при наличии '''mod_rewrite'''. |
||
Строка 29: | Строка 29: | ||
Если посетитель имеет IP-адрес 192.168.11.1, то ему будет открыта страница data.html: |
Если посетитель имеет IP-адрес 192.168.11.1, то ему будет открыта страница data.html: |
||
< |
<syntaxhighlight lang="apache"> |
||
SetEnvIf REMOTE_ADDR 192.168.11.1 REDIR="redir" |
SetEnvIf REMOTE_ADDR 192.168.11.1 REDIR="redir" |
||
RewriteCond %{REDIR} redir |
RewriteCond %{REDIR} redir |
||
RewriteRule ^/$ /data.html |
RewriteRule ^/$ /data.html |
||
</syntaxhighlight> |
|||
</source> |
|||
Если посетители имеют IP-адреса 192.168.11.1 и 192.168.11.2, то им будет открыт адрес <code><nowiki>http://example.com</nowiki></code>: |
Если посетители имеют IP-адреса 192.168.11.1 и 192.168.11.2, то им будет открыт адрес <code><nowiki>http://example.com</nowiki></code>: |
||
< |
<syntaxhighlight lang="apache"> |
||
RewriteEngine on |
RewriteEngine on |
||
RewriteCond %{REMOTE_ADDR} (192.168.11.1|192.168.11.2) |
RewriteCond %{REMOTE_ADDR} (192.168.11.1|192.168.11.2) |
||
RewriteRule .* http://example.com [R=301,L] |
RewriteRule .* http://example.com [R=301,L] |
||
</syntaxhighlight> |
|||
</source> |
|||
Работает только при наличии '''mod_rewrite'''. |
Работает только при наличии '''mod_rewrite'''. |
||
Строка 47: | Строка 47: | ||
==== В зависимости от [[w:реферер|реферера]] (ссылающейся страницы) ==== |
==== В зависимости от [[w:реферер|реферера]] (ссылающейся страницы) ==== |
||
< |
<syntaxhighlight lang="apache"> |
||
RewriteCond %{HTTP_REFERER} http://example.com |
RewriteCond %{HTTP_REFERER} http://example.com |
||
RewriteRule ^/original.html$ /another.html [L] |
RewriteRule ^/original.html$ /another.html [L] |
||
</syntaxhighlight> |
|||
</source> |
|||
В данном случае все посетители пришедшие с сайта example.com вместо файла original.html получат файл another.html. |
В данном случае все посетители пришедшие с сайта example.com вместо файла original.html получат файл another.html. |
||
Строка 58: | Строка 58: | ||
Перенаправление с <code><nowiki>http://www.mydomain.com</nowiki></code> на <code><nowiki>http://mydomain.com</nowiki></code>: |
Перенаправление с <code><nowiki>http://www.mydomain.com</nowiki></code> на <code><nowiki>http://mydomain.com</nowiki></code>: |
||
< |
<syntaxhighlight lang="apache"> |
||
RewriteEngine On |
RewriteEngine On |
||
RewriteBase / |
RewriteBase / |
||
RewriteCond %{HTTP_HOST} ^www.mydomain.com$ [NC] |
RewriteCond %{HTTP_HOST} ^www.mydomain.com$ [NC] |
||
RewriteRule (.*) http://mydomain.com/$1 [R=301] |
RewriteRule (.*) http://mydomain.com/$1 [R=301] |
||
</syntaxhighlight> |
|||
</source> |
|||
Работает только при наличии '''mod_rewrite'''. |
Работает только при наличии '''mod_rewrite'''. |
||
Строка 70: | Строка 70: | ||
==== Переопределение индексного файла ==== |
==== Переопределение индексного файла ==== |
||
< |
<syntaxhighlight lang="apache"> |
||
DirectoryIndex index.html index.php index.shtml |
DirectoryIndex index.html index.php index.shtml |
||
</syntaxhighlight> |
|||
</source> |
|||
==== Запрет на отображение содержимого каталога при отсутствии индексного файла ==== |
==== Запрет на отображение содержимого каталога при отсутствии индексного файла ==== |
||
< |
<syntaxhighlight lang="apache"> |
||
Options -Indexes |
Options -Indexes |
||
</syntaxhighlight> |
|||
</source> |
|||
=== Типы файлов === |
=== Типы файлов === |
||
Строка 85: | Строка 85: | ||
Пример переопределения [[w:HTML|HTML]]-файлов для обработки их с помощью [[w:PHP|PHP]]: |
Пример переопределения [[w:HTML|HTML]]-файлов для обработки их с помощью [[w:PHP|PHP]]: |
||
< |
<syntaxhighlight lang="apache"> |
||
RemoveHandler .html .htm |
RemoveHandler .html .htm |
||
AddType application/x-httpd-php .php .htm .html .phtml |
AddType application/x-httpd-php .php .htm .html .phtml |
||
</syntaxhighlight> |
|||
</source> |
|||
=== Обработка ошибок === |
=== Обработка ошибок === |
||
< |
<syntaxhighlight lang="apache"> |
||
ErrorDocument 401 /401.html |
ErrorDocument 401 /401.html |
||
ErrorDocument 403 /403.html |
ErrorDocument 403 /403.html |
||
ErrorDocument 404 /404.html |
ErrorDocument 404 /404.html |
||
ErrorDocument 500 /500.html |
ErrorDocument 500 /500.html |
||
</syntaxhighlight> |
|||
</source> |
|||
При этом размер конечного файла должен быть больше 515 байт, иначе некоторые браузеры могут подменить страницу своей стандартной. |
При этом размер конечного файла должен быть больше 515 байт, иначе некоторые браузеры могут подменить страницу своей стандартной. |
||
Строка 104: | Строка 104: | ||
==== Отдаваемых файлов ==== |
==== Отдаваемых файлов ==== |
||
< |
<syntaxhighlight lang="apache"> |
||
AddDefaultCharset windows-1251 |
AddDefaultCharset windows-1251 |
||
</syntaxhighlight> |
|||
</source> |
|||
==== Загружаемых файлов ==== |
==== Загружаемых файлов ==== |
||
< |
<syntaxhighlight lang="apache"> |
||
CharsetSourceEnc windows-1251 |
CharsetSourceEnc windows-1251 |
||
</syntaxhighlight> |
|||
</source> |
|||
==== Отдаваемых файлов конкретного типа ==== |
==== Отдаваемых файлов конкретного типа ==== |
||
< |
<syntaxhighlight lang="apache"> |
||
AddCharset windows-1251 .js |
AddCharset windows-1251 .js |
||
</syntaxhighlight> |
|||
</source> |
|||
Вместо '''.js''' можно указать несколько типов файлов, разделяя их пробелами. |
Вместо '''.js''' можно указать несколько типов файлов, разделяя их пробелами. |
||
Строка 127: | Строка 127: | ||
Запрет доступа ко всем файлам и каталогам в текущем каталоге: |
Запрет доступа ко всем файлам и каталогам в текущем каталоге: |
||
< |
<syntaxhighlight lang="apache"> |
||
Deny from all |
Deny from all |
||
</syntaxhighlight> |
|||
</source> |
|||
Запрет доступа к определённому файлу: |
Запрет доступа к определённому файлу: |
||
< |
<syntaxhighlight lang="apache"> |
||
<Files config.php> |
<Files config.php> |
||
Deny from all |
Deny from all |
||
</Files> |
</Files> |
||
</syntaxhighlight> |
|||
</source> |
|||
Запрет доступа к файлам по маске: |
Запрет доступа к файлам по маске: |
||
< |
<syntaxhighlight lang="apache"> |
||
<Files *.inc> |
<Files *.inc> |
||
Deny from all |
Deny from all |
||
</Files> |
</Files> |
||
</syntaxhighlight> |
|||
</source> |
|||
Спецсимволы для определения маски: |
Спецсимволы для определения маски: |
||
Строка 155: | Строка 155: | ||
Запрет доступа к файлам по [[w:регулярные выражения|регулярному выражению]]: |
Запрет доступа к файлам по [[w:регулярные выражения|регулярному выражению]]: |
||
< |
<syntaxhighlight lang="apache"> |
||
<Files ~ "\.(inc|conf|cfg)$"> |
<Files ~ "\.(inc|conf|cfg)$"> |
||
Deny from all |
Deny from all |
||
</Files> |
</Files> |
||
</syntaxhighlight> |
|||
</source> |
|||
==== Определение доступа по [[w:IP-адрес|IP]] ==== |
==== Определение доступа по [[w:IP-адрес|IP]] ==== |
||
< |
<syntaxhighlight lang="apache"> |
||
Order deny,allow |
Order deny,allow |
||
Deny from all |
Deny from all |
||
Allow from 192.168.11.1 |
Allow from 192.168.11.1 |
||
</syntaxhighlight> |
|||
</source> |
|||
Строка order deny, allow определяет, в каком порядке следует выполнять директивы. Сначала выполняется директива запрета доступа, а затем разрешается доступ только для IP-адреса 192.168.11.1. |
Строка order deny, allow определяет, в каком порядке следует выполнять директивы. Сначала выполняется директива запрета доступа, а затем разрешается доступ только для IP-адреса 192.168.11.1. |
||
< |
<syntaxhighlight lang="apache"> |
||
Order Allow,Deny |
Order Allow,Deny |
||
Allow from all |
Allow from all |
||
Deny from 192.140.170.219 |
Deny from 192.140.170.219 |
||
Deny from 10.10.220.201 |
Deny from 10.10.220.201 |
||
</syntaxhighlight> |
|||
</source> |
|||
В этом примере наоборот запрещается доступ с определённых IP-адресов. |
В этом примере наоборот запрещается доступ с определённых IP-адресов. |
||
Строка 181: | Строка 181: | ||
==== Закрытие каталогов [[w:пароль|паролем]] ==== |
==== Закрытие каталогов [[w:пароль|паролем]] ==== |
||
< |
<syntaxhighlight lang="apache"> |
||
AuthName "Auth message" |
AuthName "Auth message" |
||
AuthType Basic |
AuthType Basic |
||
require <valid-user | user <username1> [username2] ... [usernameN]> |
require <valid-user | user <username1> [username2] ... [usernameN]> |
||
AuthUserFile "/full/path/to/.htpasswd" |
AuthUserFile "/full/path/to/.htpasswd" |
||
</syntaxhighlight> |
|||
</source> |
|||
Пароли хранятся в файле [[w:.htpasswd|.htpasswd]]. |
Пароли хранятся в файле [[w:.htpasswd|.htpasswd]]. |
Версия от 16:06, 16 апреля 2020
Перенаправление (редирект)
На другой адрес
Redirect /index.php http://example.com/index.php
При запросе определённых страниц
Redirect /data http://www.example.com/data
Redirect /forum http://forum.example.com
По маске имени файла
Следующие строки определяют, что все запросы, кроме запросов к файлам с расширениями .gif и .jpg, будут перенаправлены на файл index.php:
RewriteEngine On
RewriteRule !.(gif|jpg)$ index.php
Работает только при наличии mod_rewrite.
По IP-адресам
Если посетитель имеет IP-адрес 192.168.11.1, то ему будет открыта страница data.html:
SetEnvIf REMOTE_ADDR 192.168.11.1 REDIR="redir"
RewriteCond %{REDIR} redir
RewriteRule ^/$ /data.html
Если посетители имеют IP-адреса 192.168.11.1 и 192.168.11.2, то им будет открыт адрес http://example.com
:
RewriteEngine on
RewriteCond %{REMOTE_ADDR} (192.168.11.1|192.168.11.2)
RewriteRule .* http://example.com [R=301,L]
Работает только при наличии mod_rewrite.
В зависимости от реферера (ссылающейся страницы)
RewriteCond %{HTTP_REFERER} http://example.com
RewriteRule ^/original.html$ /another.html [L]
В данном случае все посетители пришедшие с сайта example.com вместо файла original.html получат файл another.html.
Удаление префикса «www.» из адреса
Перенаправление с http://www.mydomain.com
на http://mydomain.com
:
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^www.mydomain.com$ [NC]
RewriteRule (.*) http://mydomain.com/$1 [R=301]
Работает только при наличии mod_rewrite.
Индексные страницы
Переопределение индексного файла
DirectoryIndex index.html index.php index.shtml
Запрет на отображение содержимого каталога при отсутствии индексного файла
Options -Indexes
Типы файлов
Изменение обработчика по типу файла
Пример переопределения HTML-файлов для обработки их с помощью PHP:
RemoveHandler .html .htm
AddType application/x-httpd-php .php .htm .html .phtml
Обработка ошибок
ErrorDocument 401 /401.html
ErrorDocument 403 /403.html
ErrorDocument 404 /404.html
ErrorDocument 500 /500.html
При этом размер конечного файла должен быть больше 515 байт, иначе некоторые браузеры могут подменить страницу своей стандартной.
Кодировка
Отдаваемых файлов
AddDefaultCharset windows-1251
Загружаемых файлов
CharsetSourceEnc windows-1251
Отдаваемых файлов конкретного типа
AddCharset windows-1251 .js
Вместо .js можно указать несколько типов файлов, разделяя их пробелами.
Управление доступом
Запрет доступа к файлам
Запрет доступа ко всем файлам и каталогам в текущем каталоге:
Deny from all
Запрет доступа к определённому файлу:
<Files config.php>
Deny from all
</Files>
Запрет доступа к файлам по маске:
<Files *.inc>
Deny from all
</Files>
Спецсимволы для определения маски:
- ? — любой одиночный символ
- * — любая последовательность символов, исключая символ / (слэш)
Запрет доступа к файлам по регулярному выражению:
<Files ~ "\.(inc|conf|cfg)$">
Deny from all
</Files>
Определение доступа по IP
Order deny,allow
Deny from all
Allow from 192.168.11.1
Строка order deny, allow определяет, в каком порядке следует выполнять директивы. Сначала выполняется директива запрета доступа, а затем разрешается доступ только для IP-адреса 192.168.11.1.
Order Allow,Deny
Allow from all
Deny from 192.140.170.219
Deny from 10.10.220.201
В этом примере наоборот запрещается доступ с определённых IP-адресов.
Закрытие каталогов паролем
AuthName "Auth message"
AuthType Basic
require <valid-user | user <username1> [username2] ... [usernameN]>
AuthUserFile "/full/path/to/.htpasswd"
Пароли хранятся в файле .htpasswd.