2012-08-10 8 views
9

Voglio creare la seguente struttura nel mio file .htaccess:C'è un modo per se/else una riscrittura in htaccess di Apache?

If (SITE A DOMAIN or SITE A SUBDOMAIN) { 
    Rewrite this specific way -> /index.php/$1 
} else { 
    Rewrite this specific way -> /directory/www/index.php/$1 
} 

ho il mio codice corrente al di sotto, ma è gettando 500s con i miei log di errore di Apache lamentarsi:

[errore] [ client :: 1] mod_rewrite: numero massimo di reindirizzamenti interni raggiunti. Supponendo che l'errore di configurazione. Usa "RewriteOptions MaxRedirects" per aumentare il limite se necessario., Referer:

Cosa sto facendo male? Grazie!

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond $1 !^(index\.php|blog) 

RewriteCond %{HTTP_HOST} ^subdomain\.example\.com$ [NC,OR] 
RewriteCond %{HTTP_HOST}^example\.com$ 
RewriteRule .? - [S=1] 
RewriteRule ^(.*)$ /directory/www/index.php/$1 [L] 
RewriteRule .? - [S=1] 
RewriteRule ^(.*)$ /index.php/$1 [L] 

risposta

15

può essere un po 'più pulito per solo includere/escludere condizioni di utilizzo rispetto alle bandiere di salto (che può ottenere tipo di confusione per leggere). Ma sembra che ci sia un loop di reindirizzamento causando il 500. Prova questa:

# If (SITE A DOMAIN or SITE A SUBDOMAIN) 
RewriteCond %{HTTP_HOST} ^subdomain\.example\.com$ [NC,OR] 
RewriteCond %{HTTP_HOST} ^example\.com$ [NC] 
# make sure we haven't already rewritten this URI 
RewriteCond %{REQUEST_URI} !/directory/www/index.php 
# don't rewrite if the resource already exists 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
# rewrite 
RewriteRule ^(.*)$ /directory/www/index.php/$1 [L] 

# IF !(SITE A DOMAIN or SITE A SUBDOMAIN) 
RewriteCond %{HTTP_HOST} !^subdomain\.example\.com$ [NC] 
RewriteCond %{HTTP_HOST} !^example\.com$ [NC] 
# make sure we haven't already rewritten this URI 
RewriteCond %{REQUEST_URI} !/index.php 
# don't rewrite if the resource already exists 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
# rewrite 
RewriteRule ^(.*)$ /index.php/$1 [L] 
+0

Grazie, che ha funzionato! –

Problemi correlati