2011-04-13 15 views
8

questo è il mio codice .htaccess quindi se il tipo di utente appena domain.com verrà reindirizzato alla www.domain.com.htaccess: exluce qualche dominio in RewriteCond

RewriteBase/
RewriteCond %{HTTP_HOST} !^www.domain.com$ [NC] 
RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301] 

il mio problema ora è che ho un nuovo dominio che punta allo stesso percorso di dominio quindi anche il nuovo dominio viene reindirizzato "in modo trasparente" a domain.com ...

come posso escludere qualche nome di dominio da quella regola?

grazie!

risposta

8

Si potrebbe provare a eseguire la riscrittura generica, quindi tutte le richieste che non iniziano con www vengono reindirizzate, ma sul dominio corretto/richiesto.

RewriteCond %{HTTP_HOST} !^www\.(.*)$ [NC] 
RewriteRule ^(.*)$ http://www.%1/$1 [L,R=301] 

In alternativa, è possibile controllare, invece, per se il dominio inizia con domain.com:

RewriteCond %{HTTP_HOST} ^domain\.com$ [NC] 
RewriteRule ^(.*)$ http://www.domain.com [L,R=301] 

Speriamo che questo aiuta.

+1

Grazie per la grande risposta. Puoi descrivere il codice parte per parte? Solo il primo codice – Hamidreza

+0

Ottima risposta. Spiegare la tua sintassi in dettaglio renderebbe questa una risposta eccellente. Sto solo dicendo :) –

+0

L'OP stava tentando di reindirizzare più domini sullo stesso percorso, tuttavia il 'RewriteCond' originale cercava specificamente un singolo dominio (ad esempio www.dominio.com). Il mio primo esempio, reindirizzerà qualsiasi dominio, che non inizia con un '' '' 'al percorso richiesto con il' '. Il 'RewriteRule' fa ciò usando il primo gruppo dall'espressione regolare nel' RewriteCond', questo è ciò che il '% 1' realizza. '$' sono usati per fare riferimento ai gruppi dell'espressione 'RewriteRule', mentre'% 'è usato per fare riferimento ai gruppi di' RewriteCond'. Spero che chiarisca le cose. – clmarquart

Problemi correlati