2014-01-30 4 views
1

내 사이트에 속하지 않는 도메인으로의 시각적 리디렉션을 막으려 고하고 있습니다. 승인 된 도메인 목록이있는 rewritemap을 참조하고 있습니다. 이것은 다음 scenerio를 제외하고 예상대로 작동합니다. 내 정규식은 첫 번째 targetPage = 두 번째 .com까지의 문자열을 캡처하고 있으므로 도메인을 캡처 할 수 있도록 첫 번째 .com에서 중지해야합니다.regex의 두 번째 인스턴스를 캡처하는 RewriteRule

규칙 :

URL이 박히는
RewriteCond %{QUERY_STRING} ^(.*[&?]|)(url=|target=|targeturl=|targetpage=|redirecturl=)(https?)[\%A-Z0-9]*2F(.*\.com|.*\.net|.*\.org)/?.*$ [NC] 
RewriteCond ${validDomains:%4} !validdomain 

은 다음과 같습니다 https://mysite.domain.com/secure/SigninServlet?targetPage=https://mysite.domain.com/mysite/pages/msb/myAccount/correct.jsp?RNRedirectUrl=DSP&referrerUrl=https://mysite.domain.com/mysite/pages/msb/user/signinrn.jsp

반환 % 4 참조 값은 다음과 같습니다 mysite.domain.com/mysite/pages/msb/myAccount/correct.jsp?RNRedirectUrl=DSP&referrerUrl=https://mysite.domain.com

그때 .cim에 종료합니다 referrerUrl를 변경하는 경우 나는 단지 mysite.domain.com을 붙잡는다.

어떻게하면 정규식을 onl y가 아닌 첫 번째 도메인을 볼 수 있습니까?

RewriteCond %{QUERY_STRING} (^|&)(url|target|targeturl|targetpage|redirecturl)=(https?)[\%A-Z0-9]*2F([^&]*?\.(?:com|net|org)) [NC] 
RewriteCond ${validDomains:%4} !validdomain 
+0

왜'사용하지 [A-Z0-9.]'도메인 이름 캡처 등 : – Wrikken

답변

1

는이 규칙을보십시오? 왜 도메인 이름에`%`를 쓰고 싶습니까?
+0

타겟 페이지가 인코딩되지 않았기 때문에 – user3254342

+0

와 (과) 일치하지 않는 것으로 업데이트 할 때 - [[^ &] *? \. (?: com | net | org)의 제안이 효과적입니다. 인코딩되지 않은 섹션에 넣으면 아래처럼 작동합니다. RewriteCond % {QUERY_STRING}^(. * [&?] |) (url = | target = | targeturl = | targetpage = | redirecturl =) (https?) :? // ([^ &] *? \. (?: com | net | org)) [NC] – user3254342

+0

알아두면 좋은 일입니다. 답변을 수락 된 것으로 표시 할 수 있습니까? – anubhava

관련 문제