2012-08-10 8 views
9

Chcę utworzyć następującą strukturę w moim pliku .htaccess:Czy istnieje sposób, aby/else przepisać w Apache htaccess?

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 
} 

Mam aktualny kod poniżej, ale to rzuca 500S z moich dzienników błędów Apache narzekać:

[Błąd] [ client :: 1] mod_rewrite: maksymalna liczba wewnętrznych przekierowań osiągnięta. Zakładając błąd konfiguracji. Użyj "RewriteOptions MaxRedirects", aby zwiększyć limit, jeśli to konieczne., Referer:

Co robię źle? Dzięki!

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] 

Odpowiedz

15

To może być trochę czystsze po prostu włączyć/wyłączyć za pomocą warunków niż flagami SKIP (które można dostać trochę mylące, aby przeczytać). Ale wygląda na to, że istnieje pętla przekierowania powodująca 500. Wypróbuj:

# 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

Dzięki, udało się! –