문제

나는 다음을 수행하기 위해 IIS ISAPI를 다시 작성하려고 노력하고 있습니다 ...

SEO 친화적 인 URL이 (조용히) 응용 프로그램 친화적 URL로 다시 변환해야합니다.

RewriteRule ^/seo-friendly-url/ /test/index.cfm [I,L]

충분히 간단합니다.

그러나 검색 엔진에서 이미 인덱싱 된 URL (예 : SEO 친화적 버전으로 301 개를 바꾸려면 URL이 필요합니다. 그렇게 :

RewriteRule ^/test/index.cfm    /seo-friendly-url/ [I,R=301]

이들 각각은 분리되어 잘 작동합니다. 그러나 .ini 파일에 둘 다가있을 때, 나는 /seo-friendly-url /내 브라우저 주소 표시 줄에 표시되지만 404로 제공되고 있습니다. (예, /test/index.cfm은 확실히 존재합니다!)

나는 그것이 원형 참조처럼 보이지만 첫 번째 규칙은 IIS와 응용 프로그램 사이의 URL 만 다시 작성합니다. 리디렉션이 없으므로 ISAPI를 다시 작성하지 않습니다. 아니면 내가 틀렸어?

Isapi Rewrite의 로깅을 활성화했으며 다음을보고 있습니다.

HttpFilterProc SF_NOTIFY_PREPROC_HEADERS
DoRewrites
New Url: '/seo-friendly-url/'
ApplyRules (depth=0)
Rule 1 : 1
Result (length 15): /test/index.cfm
ApplyRules (depth=1)
Rule 1 : -1
Rule 2 : 1
Result (length 18): /seo-friendly-url/
ApplyRules: returning 301
ApplyRules: returning 1
Rewrite Url to: '/seo-friendly-url/'

누구든지 아이디어가 있습니까?

도움이 되었습니까?

해결책 2

시행 착오를 통해 나는 이것에 대한 솔루션을 생각해 냈습니다.

리디렉션 일치가 $ 기호를 사용하여 문자열의 끝에 있음을 지정하십시오.

RewriteRule ^/test/index.cfm$    /seo-friendly-url/ [I,R=301]

다시 쓰여진 URL을 리디렉션 일치 문자열과 사소하게 다르게 만드십시오 -이 경우 불필요한 "불필요한": ":

RewriteRule ^/seo-friendly-url/ /test/index.cfm? [I,L]

다른 팁

여기에는 두 개의 다른 다시 쓰기가 있으며 제대로하면 작동해야합니다.

  1. 첫 번째는 클라이언트 사용자 에이전트에 의해 보이지 않습니다. 요청 /SEO 친화적이며 내부적으로 다시 작성하고 응답합니다.

  2. 두 번째는 실제로 재 작성이 아니라 리디렉션입니다. 당신은 그것을 클라이언트에게 돌려 보내고 /seo 친화적 인 /seo 친화적입니다. 나는 당신이 [r = 301, l]를 사용하여 라인의 끝이라고 말해야한다고 생각합니다. 저것)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top