2013-07-01 19 views
6

Devo utilizzare SetEnvIf nel mio file .htaccess.Aggiunta di più condizioni in SetEnvIf

Devo anche soddisfare condizioni multiple e quindi, mostrare l'URL richiesto.

Ecco il mio codice:

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' 

Spiegazione:

  1. Nella prima riga, io pongo una variabile press_flag-0.
  2. Seconda riga, controllo se l'URL termina con questo testo: /press/, se è vero, ho impostato il 'press_flag' su 1.
  3. Terza linea, posso controllare se il cookie corrisponde language\_uiAAAenglishBBB testo, se è vero, allora incrementiamo press_flag valore di 1.
  4. Ultima riga, verifico se il valore press_flag è 2, quindi ho impostato la HTTP_HOST conseguenza.

Tuttavia, quando apro URL/press/ nel browser, non viene reindirizzato.

Si prega di aiutare a eseguire il debug e risolvere questo codice.

Grazie.

+0

Seconda linea non ha senso, 'HTTP_HOST' è il nome del dominio, non ha nulla a che fare con il segmento _path_ dell'URL. E non ti vedo in alcun modo reindirizzare da nessuna parte. – CBroe

+0

@CBroe: Ok. Grazie per la correzione. Quindi, dovrei sostituire * HTTP_HOST * in * HOST *? –

+1

No, non esiste una variabile di ambiente chiamata 'HOST' - e se ci fosse, HOST non significherebbe ancora" percorso ". – CBroe

risposta

1

Non penso che sia possibile reindirizzare con SetEnvIf. Si dovrebbe usare mod_rewrite invece:

RewriteCond %{REQUEST_URI} =/press/ 
RewriteCond %{HTTP_COOKIE} \blanguage=english\b 
RewriteRule .* /eng/test.html [R] 
  1. Controlla se/stampa/è richiesto
  2. Controlla se il cookie è impostato certo valore.
  3. regola di reindirizzamento