2011-04-13 21 views
8

to jest mój kod .htaccess więc jeśli typ użytkownika tylko domain.com zostanie przekierowany do www.domain.com.htaccess: exluce jakąś domenę w RewriteCond

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

moim problemem jest to, że teraz mam nowa domena wskazująca tę samą ścieżkę domeny , więc nawet nowa domena jest przekierowywana "przezroczyście" do domeny domain.com ...

Jak mogę wykluczyć niektóre nazwy domeny z tej reguły?

dziękuję!

Odpowiedz

8

Możesz spróbować zrobić przepisany tekst, więc wszystkie żądania, które nie zaczynają się od www, są przekierowywane, ale w poprawnej/żądanej domenie.

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

Lub, można sprawdzić, czy zamiast za domenę zaczyna domain.com:

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

Mam nadzieję, że to pomaga.

+1

Dzięki za wspaniałą odpowiedź. Czy możesz opisać kod części po części? Tylko pierwszy kod. – Hamidreza

+0

Świetna odpowiedź. Dokładne wyjaśnienie składni sprawiłoby, że byłaby to doskonała_ odpowiedź. Tylko mówię. :) –

+0

OP próbował przekierować wiele domen do tej samej ścieżki, jednak oryginalny 'RewriteCond' szukał konkretnie jednej domeny (np. Www.domena.com). Mój pierwszy przykład przekieruje dowolną domenę, która zaczyna się od '' 'do żądanej ścieżki z' ''. 'RewriteRule' robi to poprzez użycie pierwszej grupy z wyrażenia regularnego w' RewriteCond', co jest wynikiem działania '% 1'. '$' są używane do odwoływania się do grup wyrażenia "RewriteRule", podczas gdy '%' służy do odwoływania się do grup 'RewriteCond'. Mam nadzieję, że to wyjaśnia. – clmarquart