2013-06-02 3 views
0

이전에 대문자로되어 있었고 이제는 lowrcase가 필요한 일부 경로가 있습니다. 여기 이 경로입니다 :/카/განცხადებები 간단하게되어있는 것을/카/განცხადებებიnginx : 재 작성 utf8 : 이유는 소문자

내 conf의 에서

경우 (. $의 URI ~ ^/K (+)) { 세트 $ $ (1) BB; 다시 쓰기^(. *) $ $ scheme : // $ host/k $ bb permanent; }

내가 왜하지만 /카/%의 E1 % 83 % 92 % E1의 % 83 % 90 % E1의 % 83 % 9C % E1 %의 83 % AA의 %의 E1의 % 83 % AE의 %의 E1의 % (83)을 이해하지 못할 % 90 % E1의 % 83 % 93 % E1의 % 83 % 94 % E1의 % 83 % 91 % E1의 % 83 % 94 % E1의 % 83 % 91 % E1의 % 83 % 98/

가 될

/카/% e1 % 83 % 92 % e1 % 83 % 90 % e1 % 83 % 9 % e1 % 83 % a1 % e1 % 83 % e1 % 83 % 90 % e1 % 83 % 93 % e1 % 83 % 94 % e1 % 83 % 91 % e1 % 83 % 94 % e1 % 83 % 91 % e1 % 83 % 98

즉, 모든 대문자가 소문자가되어 내 레일 앱에서 à pb가 발생합니다.

누구나 nginx가이 작업을 수행하는 이유를 알고 있습니까? 이것을 막을 수 있습니까? 거기에 약간의 라틴어 문자 내 경로가

덕분에 진짜 문제에

답변

0

초점 대소 문자를 구별로

난 그냥 모든 것을 대문자 수 없습니다. 이 URL은 동일하기 때문에 레일 앱에 문제가 없어야합니다. 나는 nginx가 일치하는 URL을 디코딩하고 url reencodes를 소문자로 다시 작성해야한다고 생각합니다. 내가 경로-번역기 보석을 사용하고 같은

location ~ ^/K[a-z]/.*$ { 
    rewrite ^/K([a-z])/(.*)$ /k$1/$2; 
} 
+0

을 실제로입니다 : 당신이 정말 어딘가에 선을 아래로는 $ BB 변수를 필요로하지 않는 또한,이 훨씬 쉽게 할 수있는 일이 BB $ -s 한 정규식을 피하기 위해,하지만 어쩌면 그것은 쓸모가 없습니다. 필자는 어딘가에서 변수 "cost"nothink를 regexp와 비교하여 읽었다. – user2016483

+0

그런 다음 경로 변환기 항목의 개발자에게 불만을 제기해야합니다. 변수는 무시할 만하지만 내가 만든 유일한 최적화는 아닙니다. – Melvyn