2013-07-01 13 views
6

Potrzebuję użyć SetEnvIf w moim pliku .htaccess.Dodawanie wielu warunków w SetEnvIf

Muszę również spełnić kilka warunków , a następnie pokazać wymagany adres URL.

Oto mój kod:

SetEnvIf Remote_Host "^" press_flag=0 
SetEnvIf Request_URI '/press/$' press_flag=1 
SetEnvIf Cookie 'language\_uiAAAenglishBBB' press_flag=press_flag+1 
SetEnvIf press_flag 2 Request_URI='Remote_Host/eng/test.html' 

Objaśnienie:

  1. W pierwszym wierszu, jestem ustawienie zmiennej press_flag do 0.
  2. Druga linia, sprawdzam, czy adres URL kończy się na tym tekście: /press/, jeśli ustawiona jest wartość true, ustawiam "znacznik stanu" na 1.
  3. Trzecia linia, sprawdzić, czy plik cookie mecze language\_uiAAAenglishBBB tekst, jeśli jest prawdziwa, to przyrost press_flag wartość o 1.
  4. ostatniej linii, sprawdzić czy wartość press_flag wynosi 2, a następnie ustawić HTTP_HOST odpowiednio.

Ale kiedy otworzę w przeglądarce, nie zostanie przekierowany.

Proszę pomóc w debugowaniu i naprawieniu tego kodu.

Dzięki.

+0

Druga linia nie ma sensu, 'HTTP_HOST' to nazwa domeny, nie ma nic wspólnego z segmentem _ścieżkę_ adresu URL. I nie widzę, żebyś robił jakiekolwiek przekierowania w dowolnym miejscu. – CBroe

+0

@CBroe: Ok. Dziękuję za poprawienie mnie. Czy powinienem zastąpić * HTTP_HOST * na * HOST *? –

+1

Nie, nie ma zmiennej środowiskowej o nazwie 'HOST' - a jeśli tak, to HOST nadal nie znaczy" ścieżka ". – CBroe

Odpowiedz

1

Nie sądzę, że można przekierować z SetEnvIf. Należy użyć mod_rewrite zamiast:

RewriteCond %{REQUEST_URI} =/press/ 
RewriteCond %{HTTP_COOKIE} \blanguage=english\b 
RewriteRule .* /eng/test.html [R] 
  1. sprawdza czy/Prasa/żąda
  2. sprawdza, czy plik cookie jest ustawiona na określoną wartość.
  3. zasada Przekierowanie