2010-04-19 3 views
1

여기에서 나를 도울 수 있기를 바랍니다.연결된 RewriteRule에 RewriteCond가있는 파일이 있는지 확인

도메인 이름에 따라 crossdomain.xml 파일을 제공하는 RewriteRule이 있습니다. 나는 ".dev"를 무시하는 방식으로 그것을 가지고있다. 문자열 중간 예 :

요청 : http : // 사이트 1 .dev. mydomain.com의 /crossdomain.xml
반환 파일 :/등/아파치/conf의/교차 도메인/site.mydomain.com .XML

RewriteCond %{HTTP_HOST} "^(.*)\.dev\.(.*)" 
RewriteCond %{REQUEST_URI} "/crossdomain.xml" 
    RewriteRule ^(.+) %{HTTP_HOST}$1 [C] 
    RewriteRule ^(.*)\.dev\.([^/]*)/crossdomain.xml /etc/httpd/conf/crossdomain/$1.$2.xml [L] 

질문 : 파일이 존재하는 경우 내가 확인 방법은? 나는 위에이 추가 시도했지만 작동하지 않습니다

RewriteCond /etc/httpd/conf/crossdomain/$1.$2.xml -f 

그것은 체인 규칙, 아니 생각하기 때문에 나는 것 같아요. 도와주세요.

답변

1

저는 규칙이 연결되어 있다는 것과 아무런 관련이 없다고 생각합니다. 잘못된 값과 비교하는 것입니다.

RewriteCond %{REQUEST_FILENAME} -f 

.

+0

답변을 주셔서 감사합니다. 시도해 보았지만 작동하지 않습니다. 그렇지 않습니다. 왜 그런지 안다. –

2

맞아요, 방금 주위에 길을 찾았습니다. 내가하는 일은 다시 쓰기를 종료하지 않고 처음 적용했을 때만 작동하는 다른 것을 추가하는 것이 아닙니다. 파일이 존재하지 않는 경우 추가 재 작성을 적용하는지 확인합니다.

RewriteCond %{HTTP_HOST} "^(.*)\.dev\.(.*)" 
RewriteCond %{REQUEST_URI} "/crossdomain.xml" 
    RewriteRule ^(.+) %{HTTP_HOST}$1 [C] 
    RewriteRule ^(.*)\.dev\.([^/]*)/crossdomain.xml /etc/httpd/conf/crossdomain/$1.$2.xml 

RewriteCond /etc/httpd/conf/crossdomain/$1.xml !-f 
     RewriteRule /etc/httpd/conf/crossdomain/(.*)\.xml /etc/httpd/conf/crossdomain/crossdomain-default.xml [L] 
관련 문제