mod-rewrite
Контексты правил перезаписи
Поиск…
замечания
В этом разделе описываются два контекста, в которых может использоваться RewriteRule . В примерах, исключающих RewriteEngine on , предполагается, что эта директива произошла до этого примера.
Переписать правила в контексте для каждого каталога
Контекст для каждого каталога является частью статического файла конфигурации между тегами <Directory> и </Directory> . Все содержимое файлов динамической конфигурации находится внутри контекста для каждой папки, в которой находится .htaccess.
RewriteRule в контексте каждого каталога сопоставляется с частью URL-адреса после протокола, имени хоста, порта и префикса каталога, в котором они находятся, и перед строкой запроса.
В статическом файле конфигурации
Когда на URL http://example.com/foo?id=1 используется следующее правило, регулярное выражение в первом аргументе RewriteRule сопоставляется с foo . Протокол ( http ), hostname ( example.com ) и префикс для этого каталога ( / ) удаляются. На другом конце строка запроса ( ?id=1 ) также удаляется.
<Directory "/">
RewriteRule ^foo$ bar [L]
</Directory>
В следующем примере, используя URL http://example.com/topic/15-my-topic-name , первый аргумент RewriteRule будет сопоставлен с topic/15-my-topic-name :
<Directory "/topic/">
RewriteRule ^topic/([0-9]+)-[^/]*/?$ topics.php?id=$1 [L]
</Directory>
В файле динамической конфигурации
Когда следующее правило помещается в файл .htaccess который находится в папке www-root, а затем используется на url http://example.com/foo?id=1 , первое регулярное выражение сопоставляется с foo .
RewriteRule ^foo$ bar [L]
В контексте для каждого каталога совпадающий URL никогда не начинается с
/. В таком контексте директива, начинающаяся сRewriteRule ^/, никогда не будет соответствовать чему-либо.
Переписать правила в контексте виртуального хоста
Контекст виртуального хоста является частью статического файла конфигурации между тегами <VirtualHost> и </VirtualHost> .
RewriteRule в контексте виртуального хоста сопоставляется с частью URL-адреса после протокола, имени хоста и порта и перед строкой запроса.
Когда для URL-адреса http://example.com/foo?id=1 используется следующее правило, регулярное выражение в первом аргументе RewriteRule сопоставляется с /foo .
<VirtualHost 1.2.3.4:80>
ServerName example.com
RewriteEngine on
RewriteRule ^/foo$ /bar [L]
</VirtualHost>