2012-08-26 3 views
0

내 블로그의 위치를 ​​이동해야하며 이전 링크를 통해 모든 링크를 수신하고 새 링크로 리디렉션하도록 노력하고 있습니다.물음표가 포함 된 URL 리디렉션

블로그는 기억에 남는 URL을 유지하기 위해, 내가하지 않기로 결정했습니다 (기본적으로) 후 이름 앞에 날짜를 생성하는 데 사용 http://example.com/blog/

URL을 http://example.com/에서 이동되었습니다.

문제는 무엇입니까? 원래 URL의 문자 (내가 사용하고 리디렉션에 문제를 일으키는 CMS에 의해 생성 된 기본 URL :?!

RewriteRule ^post.php?s=2012-01-01-blog-post$ /blog/blog-post? [R=301,L] 

그래서 내가 어떻게 든 탈출해야하지만 난 방법을 작동하지 않을 수

아닌 기사 자체

이 난을 피할 수보다 일반적인 리디렉션을 사용할 수 있지만이 리스팅 페이지로 리디렉션 것 :?

RewriteRule ^post.php$ http://tempertemper.net/blog/? [R=301,L] 

어떻게는 URL의 일부로을 읽을 수 있도록 할!?

둘러보기 주셔서 감사합니다!

마틴 :

답변

1

나는 당신이 쿼리 문자열 블로그 패턴과 일치 가정 한 다음 QUERY_STRING 값의 존재를 확인하기 위해한다 RewriteCond를 사용하는 블로그의 이름을 캡처하고 캡처 된 값을 사용할 필요가 있다고 생각 RewriteRule에 있습니다. 이런 식으로 뭔가 :

RewriteCond ${QUERY_STRING} ^s=[0-9]{4}-[0-9]{2}-[0-9]{2}-(.*)$ 
RewriteRule ^post.php$ /blog/%1 [R=permanent,L] 

% 1합니다 (한다 RewriteCond가 일치하지 않는 트리거되지 않고 RewriteRule의) 일치한다 RewriteCond의 첫 번째 캡처 패턴을 의미한다.

RewriteRule이 요청 경로의 일부로 쿼리 문자열을 볼 수 없기 때문에 RewriteRule 앞에 RewriteCond를 사용하여 쿼리 문자열을 확인하고 캡처해야합니다.

+1

'% 1'의 끝에'? '가 필요합니다. 그렇지 않으면 끝에 쿼리 ​​문자열이 추가됩니다. –

+0

{QUERY_STRING} 앞에 $를 %로 바꾸고 사용 했습니까? @jon 제안과 그것이 작동합니다! 고맙습니다! – Martin

+0

@JonLin 전화하세요. 대상 URL에 복사되는 쿼리 문자열을 잊어 버렸습니다. – Bobulous