mod-rewrite
Contesti delle regole di riscrittura
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 conRewriteRule ^/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>