2010-08-04 6 views
4

나는 반대의 예들을 본 적이 있지만 나는 비 앵커 URL에 앵커/해시 URL에서 이동과 같이 찾고 있어요 : http://karoshiethos.com/2008/07/25/handling-urlencoded-swfaddress-links-with-mod_rewrite/의 예mod_rewrite/htaccess를 사용하여 앵커가있는 URL을 탐지하고 리디렉션하는 방법은 무엇입니까?

From: http://old.swfaddress-site.com/#/page/name 
To: http://new.html-site.com/page/name 

없음 나를 위해 기능했습니다. REQUEST_URI/#/stuff이있는 것처럼 들리지만 나와 나 Apache (2.0.54)는 모두 보이지 않습니다.

어떤 아이디어, 과거의 경험 또는 성공?

+0

이 페이지는 '#'이 잘못 인코딩되어 실수로 서버로 전달되는 Apple 제품의 버그를 해결하는 것에 대해 이야기하고 있습니다. 일반적으로 Wrikken이 말했듯이, 이것은 발생하지 않으므로 조각을 읽을 수 없습니다. – bobince

답변

12

# 이후의 내용은 모두 조각이며, 이 아니며이 웹 서버로 전송됩니다. 언제든지 캡처 할 수 없으므로 클라이언트 측 접근 방식을 사용해야 캡처 할 수 있습니다.

1

나는 당신이 연결 한 게시물의 저자입니다. Wrikken이 정확하다. 이름이 지정된 앵커 다음의 콘텐츠는 무언가가 도중에 URL을 엉망이 채우지 않는 한 서버로 보내지지 않는다.

var re = new RegExp('#(.*)'); 
var redirectFragment = re.exec(document.location.toString()); 
if (redirectFragment!=null) 
{ 
    document.location = 'http://new.html-site.com'+redirectFragment[1]; 
} 
2

@RobRuchte : window.location.hash를 사용하도록하지으로, 더 나은 것 것은 대신 대체 클라이언트 측에서 다른 도메인에 대응하는 URL에 swfaddress 링크를 리디렉션하는 방문 페이지에서이 같은 일부 자바 스크립트가 필요합니다 정규식?

var redirectFragment = window.location.hash.replace(/^#/,''); 
if ('' !== redirectFragment) { 
    window.location = 'http://new.html-site.com' + redirectFragment; 
} 
0

나는 @ m14t의 대답의 수정 된 버전을 사용했습니다. >http://example.com/path/to/page/조각 -이 http://example.com/path/to/page#fragment같이 리디렉션 작동합니다. 리디렉션에 대해서도 window.location.pathname을 연결했는지 확인하십시오. 그렇지 않으면 리디렉션의 전체 경로를 얻지 못합니다. 새 파일 경로가 이전 파일 경로와 완전히 다른 경우에는 작동하지 않습니다.

var redirectFragment = window.location.hash.replace(/#/,'/'); 
if ('' !== redirectFragment) { 
    window.location = 'http://example.com' + window.location.pathname + redirectFragment; 
} 

내 경우에는 웹 사이트의 검색 엔진 최적화를 개선하기 위해 일반적으로 수행되는 작업의 일부인 개별 페이지로 단편화 된 링크를 만들어야했습니다.