Директивы .htaccess: различия между версиями

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

правки

Навигация