2009-02-15 13 views

risposta

2

Non ho dimestichezza con il modulo riscrittura di IIS 7, ma ISAPI_Rewrite possono cambiare praticamente qualsiasi intestazione HTTP che si desidera. C'è una versione gratuita che è abbastanza per il nostro sito e potrebbe essere abbastanza per il tuo.

+0

Non voglio reindirizzare. Invece voglio cambiare il {HTTP_HOST} per la richiesta corrente. –

+0

ISAPI_Rewrite può fare esattamente questo: può cambiare l'intestazione HTTP "Host:" per la richiesta corrente, proprio come quando "riscrive" un URL che non invia un reindirizzamento al client. – EMP

1

Se si desidera evitare un reindirizzamento (in base al commento su Evgeny), l'unica altra opzione è un server.transfer. Con server.transfer l'elaborazione viene inviata a una pagina diversa sul server e il client non ne ha idea (non c'è nessun ritorno al client tra le pagine).

parte Server.Transfer redirect effettivi sono abbastanza tipico ISAPI_Rewrite è uno strumento popolare e funziona molto bene come detto Evgeny.

0

UPDATE: esegue un reindirizzamento, non ripristina la variabile. Non voglio eliminare questa risposta come penso che sia pulito ma non rispondere esattamente quello che vuoi

Lo faccio in un modo molto semplice per Economist.com

Si dispone di due siti di IIS per un sito , condividono lo stesso webroot. Il sito Web IIS principale rimane come in ascolto sull'intestazione host corrente, ad es.

216.35.68.215 economist.com 

e l'altro sito IIS ascolta l'indirizzo IP con le altre intestazioni host immesse.

cioè

216.35.68.215 economist.co.uk 

Il secondo slave web nella "Home directory" ha una serie di reindirizzamento, che correggerà qualunque sia il nome dell'host persone arrivano al tuo sito su

Set "L'URL sopra specificato" e "reindirizzamento permanente per la risorsa" e inserire la voce nome host completo come segue

http://www.economist.com $ S $ Q

0.123.

$ S $ Q manterrà tutti gli URL sugli altri nomi host che entrano.

Sentitevi liberi di testare questo

http://www.economist.co.uk/world/americas/

sarà solo spingere per

http://www.economist.com/world/americas/

Questo significa che non c'è bisogno di correre, almeno per questo motivo, il abbastanza costoso modulo riscrittura IIS

3

Sì, è possibile utilizzare il modulo riscrittura IIS 7.È possibile utilizzare la GUI per configurare un reindirizzamento in IIS7 per this blog post.
Inoltre, è possibile utilizzare la riga di comando per this SO answer.
In entrambi questi esempi è necessario disporre di una configurazione del sito Web separata con la propria directory home e collegamenti ai domini che si desidera reindirizzare. Spero che abbia senso.

+0

Peccato che la pagina non venga trovata ... – Abel

+0

Sembra che sia stata spostata su http://www.trainsignal.com/blog/iis7-url-rewrite-extension-on-windows-server-2008 – notandy

3

IIRF è gratuito e consente di riscrivere le intestazioni, incluso HTTP_HOST.

Desidero riscrivere http://abc.xyz.com/ * a http://xyz.com/sites/abc/ *. Questo viene fatto per un sito di SharePoint che utilizza internamente {HTTP_HOST}.

È necessario riscrivere sia l'host che l'URL. Questo lo rende un po 'complicato. In questo set di regole, lo faccio in passi, e utilizzare un nuovo header per memorizzare lo stato tra i gradini:

# detect whether we're using the abc host 
RewriteCond  %{HTTP_HOST}   ^abc\.xyz\.com$ 
RewriteHeader Host-Needs-Rewrite: ^$     YaHuh 

# rewrite the Host: header to the alt host name if necessary 
RewriteCond  %{HTTP_HOST_NEEDS_REWRITE} ^YaHuh$ 
RewriteCond  %{HTTP_HOST}     ^(?!xyz\.com)(.+)$ 
RewriteHeader Host:   .*   xyz.com 

# rewrite the Url to the appropriate place 
RewriteCond  %{HTTP_HOST_NEEDS_REWRITE} ^YaHuh$ 
RewriteCond  %{HTTP_HOST}     ^xyz\.com$ 
RewriteRule  /(.*)$      /sites/abc/$1  [L] 

Si potrebbe jolly parte abc, anche. In questo modo:

# detect whether we're using the abc host 
RewriteCond  %{HTTP_HOST}   ^([^.]+)\.xyz\.com$ 
RewriteHeader Host-Needs-Rewrite: ^$      %1 

# rewrite the Host: header to the alt host name if necessary 
RewriteCond  %{HTTP_HOST_NEEDS_REWRITE} ^.+$ 
RewriteCond  %{HTTP_HOST}     ^(?!xyz\.com)(.+)$ 
RewriteHeader Host:   .*   xyz.com 

# rewrite the Url to the appropriate place 
RewriteCond  %{HTTP_HOST_NEEDS_REWRITE} ^(.+)$ 
RewriteCond  %{HTTP_HOST}     ^xyz\.com$ 
RewriteRule  /(.*)$      /sites/%1/$1  [L] 
Problemi correlati