Szukaj…


Uwagi

W tym temacie opisano dwa konteksty, w których można użyć RewriteRule . W przykładach z pominięciem RewriteEngine on zakłada RewriteEngine on , że ta dyrektywa wystąpiła przed tym przykładem.

Przepisz reguły w kontekście poszczególnych katalogów

Kontekst dla katalogu jest częścią statycznego pliku konfiguracyjnego między <Directory> i </Directory> . Cała zawartość dynamicznych plików konfiguracyjnych znajduje się w kontekście katalogu, w którym znajduje się folder .htaccess.

RewriteRule w kontekście dla poszczególnych katalogów pasują do części adresu URL po protokole, nazwie hosta, porcie i prefiksie katalogu, w którym się znajdują, i przed ciągiem zapytania.

W statycznym pliku konfiguracyjnym

Gdy w adresie URL http://example.com/foo?id=1 zostanie użyta następująca reguła, wyrażenie regularne w pierwszym argumencie RewriteRule jest dopasowywane do foo . Protokół ( http ), nazwa hosta ( example.com ) i prefiks tego katalogu ( / ) są usuwane. Na drugim końcu ciąg zapytania ( ?id=1 ) jest również usuwany.

<Directory "/">
  RewriteRule ^foo$ bar [L]
</Directory>

W poniższym przykładzie, używając adresu URL http://example.com/topic/15-my-topic-name , pierwszy argument RewriteRule zostałby dopasowany do topic/15-my-topic-name :

<Directory "/topic/">
  RewriteRule ^topic/([0-9]+)-[^/]*/?$ topics.php?id=$1 [L]
</Directory>

W dynamicznym pliku konfiguracyjnym

Gdy poniższa reguła zostanie umieszczona w pliku .htaccess , który znajduje się w folderze głównym katalogu www, a następnie zostanie użyta w adresie URL http://example.com/foo?id=1 , pierwsze wyrażenie regularne zostanie dopasowane do foo .

RewriteRule ^foo$ bar [L]

W kontekście poszczególnych katalogów dopasowany adres URL nigdy nie zaczyna się od znaku / . W takim kontekście dyrektywa zaczynająca się od RewriteRule ^/ nigdy niczego nie dopasuje.

Przepisz reguły w kontekście wirtualnego hosta

Kontekst hosta wirtualnego jest częścią statycznego pliku konfiguracyjnego między <VirtualHost> i </VirtualHost> .

RewriteRule w kontekście wirtualnego hosta są zgodne z częścią adresu URL po protokole, nazwie hosta i porcie oraz przed ciągiem zapytania.

Gdy dla adresu URL http://example.com/foo?id=1 zostanie użyta następująca reguła, wyrażenie regularne w pierwszym argumencie RewriteRule jest dopasowywane do /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
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow