2012-08-10 2 views
9

나는 나의 htaccess로 파일에 다음과 같은 구조를 만들려면 : 내가 아래에있는 내 현재 코드가아파치 htaccess에서 if/else 재 작성 방법이 있습니까?

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 
} 

를하지만에 대해 징징 내 아파치 오류 로그와 500S를 던지고 :

[오류] [ client :: 1] mod_rewrite : 도달 한 내부 리다이렉션의 최대 수. 구성 오류가 있다고 가정합니다. 필요한 경우 'RewriteOptions MaxRedirects'를 사용하여 제한을 늘리십시오. referer :

내가 뭘 잘못하고 있니? 감사!

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] 

답변

15

건너 뛰기 플래그보다 조건을 사용하여 제외/포함하는 것이 약간 깔끔할 수 있습니다 (혼동을 일으킬 수 있음). 하지만 리디렉션 루프로 인해 500이 발생하는 것 같습니다. 다음을 시도해보십시오.

# 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

감사합니다. –