2012-11-21 2 views
0

인코딩 할 수있는 문자가있는 URL을 캡처해야합니다. 예를 들어, +, {공간}, [,] 등 내가하고 피곤은 다음하지만 작동하지 않았다 -htaccess regex - 인코딩 된 URL을 캡처하는 방법이 있습니까?

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} ^(.*)(\s|\+|\%)+(.*)$ 
RewriteRule ^(.*)$ /content/my-rewrite-redirect.php [L] 
RewriteCond %{HTTPS} off 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ http://mydomain.com/content/$1$1 [QSA,L] 
RewriteCond %{HTTPS} on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ https://mydomain.com/content/$1 [QSA,L] 

(\ S | + | \ %)을 - 공백 문자와 모든 문자를 캡처하는이 시도하는 URL에 인코딩되었지만 - http://mydomain.com/vertical%5B1%5D.jpg

Thansk와 같은 URL은 캡처되지 않습니다.

답변

1

당신이 겪고있는 문제는 htaccess로 가기 전에 URL이 아파치에 의해 해독 될 가능성이 있습니다. 인코딩 된 문자를 검색하는 대신 URL 인코딩해야하는 문자를 검색하는 정규식을 작성해야합니다.

예컨대 : 물론

RewriteCond %{REQUEST_FILENAME} [[email protected]#$%^&*`~\(\)\\/\[\]\{\}\+]+ 

는이

+0

감사합니다 그냥 예입니다 ... 자격이 더 많은 문자가있을 것입니다. 나를 위해 일하는 수정 조금 대답을 수락, 여기에 내가 무엇을 사용했습니다 - RewriteCond % {요청 - 파일 *} [ "- \ *] | \ s의 \ + |, : [: ->] | [\ \ ^] | [{- ~] – user1640119

관련 문제