Ricerca…


Osservazioni

Questo argomento descrive i due contesti in cui è possibile utilizzare RewriteRule . Negli esempi che omettono RewriteEngine on , si presume che questa direttiva si sia verificata prima di quell'esempio.

Riscrivi regole in contesto per directory

Il contesto per-directory fa parte del file di configurazione statico tra i <Directory> e </Directory> . L'intero contenuto dei file di configurazione dinamici si trova all'interno del contesto per directory della cartella in cui risiede il file .htaccess.

RewriteRule contesto di RewriteRule in per-directory coincide con la parte di un url dopo il protocollo, il nome host, la porta e il prefisso della directory in cui risiedono e prima della stringa di query.

Nel file di configurazione statico

Quando viene utilizzata la seguente regola nell'URL http://example.com/foo?id=1 , la regex nel primo argomento di RewriteRule viene confrontata con foo . Il protocollo ( http ), nomehost ( example.com ) e il prefisso per questa directory ( / ) vengono rimossi. All'altra estremità, viene rimossa anche la stringa di query ( ?id=1 ).

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

Nell'esempio seguente, utilizzando l'url http://example.com/topic/15-my-topic-name , il primo argomento di RewriteRule verrà confrontato con topic/15-my-topic-name :

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

Nel file di configurazione dinamico

Quando la seguente regola viene inserita in un file .htaccess che si trova nella cartella www-root e quindi utilizzata nell'URL http://example.com/foo?id=1 , la prima espressione regolare viene confrontata con foo .

RewriteRule ^foo$ bar [L]

In contesto per-directory, l'url corrispondente non inizia mai con un / . In tale contesto, una direttiva che inizia con RewriteRule ^/ non corrisponderà mai a nulla.

Riscrivi le regole nel contesto dell'host virtuale

Il contesto dell'host virtuale fa parte del file di configurazione statico tra i <VirtualHost> e </VirtualHost> .

RewriteRule nel contesto dell'host virtuale corrisponde alla parte di un URL dopo il protocollo, il nome host e la porta e prima della stringa di query.

Quando viene utilizzata la seguente regola per l'URL http://example.com/foo?id=1 , la regex nel primo argomento di RewriteRule viene confrontata con /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
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow