2012-12-12 3 views
1

현재 vhost_config.conf에는 작동하는 매핑 및 다시 쓰기 규칙이 있으며 아래에 나와 있습니다.대소 문자를 무시하고 매핑을 사용한 RewriteMap

1: RewriteMap vanityURL txt: vanity_map.txt 
2: RewriteCond ${vaintyURL:$1|not-found} ^(.+)$ 
3: RewriteCond %1 ~^not-found$ 
4: RewriteRule ^/(.*) /${vanityURL:$1|/$1} [L] 

내가해야 할 일은 매핑 된 URL이 대소 문자를 무시하는 것입니다.

"[NC]을 추가하십시오."라고 생각하면 올바르게 생각할 수 있지만 효과는 없습니다.

나는 소문자로 모든 매핑을 가져 얘기 질문을 본 적이 있지만 그 누군가 유형 /BlackFriday 또는 /BlaCKFridAY에서 (어떤 이유 하나가 그런 일을 강요 할 수 있음) 문제가 해결되지 않습니다.

제가하는 데 문제는 라인과 같은

RewriteRule ^/(.*) /${vanityURL:$1|/$1} [L, NC] 

을 사용하면 아무런 영향을주지 않는다는 것이다.

조건 중 하나 또는지도 선언에서 더 일찍 [NC] 플래그가 있어야합니까?

4 번 줄의 'ignore-case'플래그가 작동하지 않는 이유는 무엇입니까? 내가 놓친 다른 것이 있습니까?

+0

흠 보존 중첩하지 작업? 'RewriteMap lc int : tolower','$ {vanityURL : $ {lc : $ 1}}'과 같은 것을 시도한 적이 없습니까? – Wrikken

+0

정상적으로 작동하면 매핑 된 모든 URL은 대소 문자를 구분하지 않고 소문자입니다. 기본 문제가 남아 있습니다. –

+0

님, 당신은 URL의 해당 부분을 바꾸고 있습니다. 강제 소문자 만 일치합니다. 대체품에 고정식 케이스가 있니? – Wrikken

답변

1

이 현재 작동 : URL을 오

목록 'list.txt

test1 POMPOM 
test2 pompom 
test3 PomPom 

아파치 호스트 설정 :

RewriteEngine On 
RewriteMap lc int:tolower 
RewriteMap test txt:/var/www/list.txt 
RewriteRule /(.*)$ /${test:${lc:$1}|$1} [R=301] 

(외부 리디렉션 그래서이 시험에서 쉽게 관찰 할 수 있어요) 즉,

example.com/TEST1 
example.com/test1 
example.com/TeSt1 

10 ... 모두 모두 example.com/pompom

리디렉션 ... example.com/POMPOM

example.com/TEST2 
example.com/test2 
example.com/TeSt2 

리디렉션 ... 그래서 여분의 경우,

관련 문제