Поиск…


замечания

В этом разделе описываются два контекста, в которых может использоваться 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>


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow