2010-03-13 2 views
5

나는 코멘트를 한 후 사용자가 주석에 앵커가있는 페이지로 리디렉션되는 (Wordpress) 블로그를 운영합니다.URL을 % 23 (으)로 다시 작성하는 방법은 무엇입니까?

http://example.org/foo-bar/#comment-570630

을하지만 어떻게 든 (404)의 많은 같은 URL에 내 로그 파일을 인 수 : 같이해야

http://example.org/foo-bar/%23comment-570630

하기에 htaccess로 재 작성 규칙을 작성하는 방법이 있나요 이것을 고쳐라?

보너스 질문 : 왜 이런 일이 발생하고 내가 그것에 대해 할 수있는 일이 있습니까?

+1

어떻게 리디렉션이 완료됩니까? – Gumbo

+0

@Gumbo : 302 Found 리디렉션. 생성 된 헤더는 다음과 같습니다 : "Location :/foo-bar/# comment-571738" – janpio

+0

코드를 게시 할 수 있습니까? – Gumbo

답변

4

%23#의 URL로 인코딩 된 표현입니다. 귀하의 재 작성 규칙이 %23을 만족시키지 않을 것으로 판단됩니다. 응답이 어떻게 구성되는지 조사해야합니다. 특히 URL 인코딩 기능.

그러나 다시 쓰기 규칙으로 문제를 해결할 수 있습니다. 의견을 제출 한 후 클라이언트에게 두 가지 응답을 반환 할 것임을 이해합니다. 이것이 첫 번째 응답을 수정하는 것이 바람직한 이유입니다.

# http://example.org/foo-bar/%23comment-570630 -> http://example.org/foo-bar/#comment-570630 
RewriteCond %{REQUEST_URI} %23comment-\d+$ 
RewriteRule (.+)\/%23-comment(\d+)$ http://host/$1/#comment-$2 [R=301] 

이 검증되지 않은,하지만 (나는 그것이 mod_rewrite는 특별한 의미를 가지고로 \% 탈출에 대해 확실 해요) 작동합니다.

+0

문제는 테스트 할 수있는 모든 시스템에서 응답이 양호하다는 것입니다. URL에 리디렉션이 작동하지만 어디에서 왜 이것이 깨질 수 있는지 알 수 없습니다. – janpio

+0

다시 쓰기 규칙의 경우 : 작동하지 않습니다. request_uri의 일치가 작동하지 않는 것처럼 보입니다. 그게 내가 붙어서 묻기 위해 온 곳입니다. – janpio

+0

'RewriteCond'가 만족스럽지 않습니까? 백분율 문자를 이스케이프 해 보셨습니까? –

0

B Flag을 사용해 보셨습니까?

RewriteCond %{REQUEST_URI} %23comment-\d+$ 
RewriteRule (.+)\/%23-comment(\d+)$ http://host/$1/#comment-$2 [B,R=301] 

특정 사례가 테스트되지 않았지만 관련 문제로 사용되었습니다.

+0

이 답변은이 똑같은 문제에 대해 인터넷 검색을하는 사용자를위한 것입니다. – maddrag0n

관련 문제