2012-03-22 3 views
-1

이전 사이트를 새 서버로 업그레이드 중입니다. 내 오래된 사이트가 정적 URL로 모든 동적 URL을 리디렉션 할 계획 인 메신저가 너무 많은 동적 URL을 가지고 있기 때문입니다. 내 동적 URL 중 일부를 정적으로 리디렉션하는 데 성공했지만 여기서 문제는 약 5000 개의 동적 URL이 있다는 것입니다. 그래서 .htaccess를 사용하여 모든 동적 URL을 홈 페이지로 리디렉션하고 싶습니다. 이것을 달성하는 방법. 이 점에서 어느 누구도 나를 도울 수 있습니까?.htaccess를 사용하여 모든 동적 URL을 홈페이지로 리디렉션하는 방법

내 동적 URL 구조 I는 다음의 구조를 사용하는 URL (50)에 정적 주변 일부를 리디렉션 한 본 http://www.mysite.com/play.php?id=4818

같다.

RewriteCond %{QUERY_STRING} ^id=4818$ 
RewriteRule ^play\.php$ http://www.mysite.com/play/Dinos_Egg_Hatch? [R=301,L] 

내 목표는 이미 리디렉션 된 URL을 제외한 모든 URL을 홈페이지로 리디렉션하는 것입니다.

아이디어가 있으십니까?

+0

이미 리디렉션 된 URL을 어떻게 알 수 있습니까? 목록? 필터? 정규 표현식? 방법? 너는 매우 모호하다. –

+0

@ Olivier Pons : 내 북마크 된 URL 중 일부는 이미 내 북마크 된 URL이므로 정적 인 URL로 리디렉션됩니다 ... – phphunger

+0

정적이 아니며 동적이지만 Google 자체 게임 URL입니다. 사용자가 해당 URL을 북마크에 추가하면 해당 URL에서 오는 트래픽이 느슨해지기를 원하지 않습니다.모든 동적 URL을 홈페이지 (index.php)로 리디렉션하는 방법을 알려주십시오. – phphunger

답변

9

리디렉션이 많은 경우 here의 질문에 대한 거대한 답변을 만들었지 만 리디렉션과 관련된 질문이지만 원리는 완전히 동일합니다.

당신은 그런 리디렉션의 톤이 있었다 : 당신이 원하는 내가 파일에 덤프 한

RewriteCond %{QUERY_STRING} ^id=4177$ 
RewriteRule ^play\.php$ http://www.diz.com/play/Game1 [R=301,L] 

RewriteCond %{QUERY_STRING} ^id=4195$ 
RewriteRule ^play\.php$ http://www.diz.com/play/Game2 [R=301,L] 

RewriteCond %{QUERY_STRING} ^id=4303$ 
RewriteRule ^play\.php$ http://www.diz.com/play/Game3 [R=301,L] 

............... 

모든 URL을


는 우리가 가진 긴 대화 후, 나는 해결책을 넣어 리디렉션 할 수 있습니다. 이렇게 :

4177 Game1 
4195 Game2 
...... 

등등.

이 간단한 텍스트 파일을 해시 맵으로 변환했습니다. 이처럼 :

httxt2dbm -i dynamic.txt -o dynamic.map 

지금 내가 시험에 대한 내 가상 호스트이 재 작성 규칙을했습니다 그들은 일 :

RewriteMap dynamic \ 
    dbm:/pathtofile/dynamic.map 

RewriteCond %{QUERY_STRING} (^|&)id=([0-9]+)(&|$) 
# if condition met, don't touch the URL but set an environment variable: 
RewriteRule ^play\.php$ - [E=DYNAMIC:${dynamic:%2|}] 

# if environment variable not empty = found => redirect: 
RewriteCond %{ENV:DYNAMIC} !^$ 
RewriteRule ^play\.php$ http://www.mysite.com/play/%{ENV:DYNAMIC} [R=301,L] 

NB을 : 당신은 당신이 당신의 자신의 서버가 내게 말했다. 그게 내가 당신이 그렇지 않으면 지금


작업 대신에 100 개 이상의되지 않습니다 아닌 htaccess 파일에, 당신의 vhost 파일에 다음의 RewriteRules를 추가해야합니다 이 대답을했고, 한 이유 재 작성 규칙을 사용하면 5 개 좋은 재 작성 규칙을하고 동적이다, 해킹 : 당신은 그냥 dynamic.txt에 게임을 추가, 다른 리디렉션을 추가 할 경우 다시 컴파일

httxt2dbm -i dynamic.txt -o dynamic.map 

필요 없음을 서버를 다시 시작, 그것을 완벽하게 작동해야합니다!

희망이 도움이되었습니다!

관련 문제