ho definito un file .htaccess per il mio sito web di avere questo codice:come posso definire la variabile nel file .htaccess e usarla?
RewriteEngine on
RewriteBase/
RewriteRule ^bit_auth\/?(.*)$ /cig/base3/auth/$1 [R=301,NC,L]
RewriteCond $1 !^(index\.php|images|robots\.txt|assets|themes|includes)
RewriteRule ^(.*)$ /cig/base3/index.php/$1 [L]
voglio mantenere il mio percorso principale del sito in una variabile come questo:
RewriteEngine on
RewriteBase/
SetEnv BASE_PATH "/cig/base3"
RewriteRule ^bit_auth\/?(.*)$ %{ENV:BASE_PATH}/auth/$1 [R=301,NC,L]
RewriteCond $1 !^(index\.php|images|robots\.txt|assets|themes|includes)
RewriteRule ^(.*)$ %{ENV:BASE_PATH}/index.php/$1 [L]
perché posso avere bisogno di utilizzare il valore BASE_PATH
in altri codici più tardi e potrebbe anche essere cambiato e non voglio cercare e sostituire ogni volta nel mio file htaccess. Ma quando uso codice di cui sopra, nel file .htaccess %{ENV:BASE_PATH}
restituisce un valore vuoto invece del previsto /cig/base3
ma in php, quando lo chiamo io utilizzando:
<?php $specialPath = getenv('BASE_PATH'); var_dump($specialPath)?>
sta mostrando il valore corretto di /cig/base3
.
Qual è il problema nei miei codici e come posso risolvere questo?
C'è una stranezza nell'ordine in cui i carichi Apache/esegue i moduli - mod_rewrite viene sempre eseguito prima di SetEnv, quindi non è possibile utilizzare SetEnv per impostare una variabile di ambiente che si desidera utilizzare in una RewriteRiule; tuttavia ** puoi ** impostare la variabile con una RewriteRule; per esempio. 'RewriteRule. * - [E = BASE_PATH:/cig/base3]' – CD001
@ CD001 Non ho capito esattamente perché dovrei usarlo in questo modo ma quando ho inserito il tuo codice nel mio file htaccess funziona come previsto. avete riferimenti per ulteriori descrizioni/dettagli e anche esempi per utenti non esperti? o per favore descrivilo di più –