2012-10-25 3 views
15

나는 성공적으로 Wordpress 사이트를 Drupal로 옮겼다. 불행히도 Wordpress에서는 콘텐츠 URL이 www.example.org/?p=123과 비슷했습니다. 내 도메인은 여전히 ​​동일하지만, htaccess을 통해 리디렉션하고 싶습니다. Drupal은 URL이 www.example.org/?p=123이되도록 허용하지 않습니다. 즉, 콘텐츠는 Wordpress에서와 동일한 URL을 가지고 있지 않습니다. 예를 들어, 새로운 드루팔 URL은 내 htaccess로 파일이 시도 www.example.org/content/MyNewPage쿼리 문자열을 기반으로 URL을 리디렉션하는 방법은 무엇입니까?

같은 것을 할 것입니다 그리고

Redirect 301 /\?p=375 http://www.example.org/content/MyNewPage 

그래서 나는 아래의 시도 작동하지 않지만,이 중 하나가 작동하지 않습니다.

Redirect 301 /\?p\=375 http://www.example.org/content/MyNewPage 

테스트와 마찬가지로 아래에서 시도해 보았습니다.

Redirect 301 http://www.example.org http://www.google.com 

내 리디렉션 규칙이 내 .htaccess의 목록 맨 위에 오도록 먼저 평가됩니다. 이 문제를 어떻게 해결할 수 있습니까?

답변

29

리디렉션이나 RedirectMatch를 사용하면 리디렉션 소스에 대한 쿼리 문자열을 지정할 수 없습니다. [Source]

당신은 쿼리 문자열을 기반으로 방향 전환 모드 - 재를 사용해야합니다 : 당신은 당신의 htaccess로에서 ModRewrite를 사용 고려할 수

RewriteCond %{QUERY_STRING} ^p=375$ 
RewriteRule (.*) http://www.example.org/content/MyNewPage? [R=301,L] 
+0

불행히도 404 페이지가 리디렉션되지 않고 http://www.example.org/?p=375 페이지가 계속 표시됩니다. "content/MyNewPage"가 존재하고 작동한다는 것을 확인할 수 있습니다. Drupal에서 제대로 작동하기 때문에 RewriteRules이 작동하는지 확인할 수도 있습니다. – user785179

+0

브라우저의 캐시를 지우고 다시 시도하십시오. 브라우저는'301 Permanent redirect'를 캐시합니다. – undone

+0

좋은 제안이지만, 이제는 Firefox가 무한 루프로 리디렉션한다고합니다. "Firefox가 서버가이 주소에 대한 요청을 완료되지 않는 방식으로 리디렉션 중임을 감지했습니다." URL이 http://www.example.org/content/MyNewPage?p=375로 나오고 있습니다. – user785179

1

<IfModule mod_rewrite.c> 

RewriteEngine On 

RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

RewriteCond %{QUERY_STRING}  ^p=345$ [NC] 
RewriteRule index.php content/MyNewPage [NC,L,R=301] 

</IfModule> 

그리고 당신은 또한을 통과 할 수 있습니다 이전 페이지 ID를 연결 한 새 URL (또는 QS?) :

<IfModule mod_rewrite.c> 

RewriteEngine On 

RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

RewriteCond %{QUERY_STRING}  ^p=(.*)$ [NC] 
RewriteRule index.php content/MyNewPage-%1 [NC,L,R=301] 

</IfModule> 
+0

귀하의 방법을 시도했지만 404 오류 페이지로 이동합니다. – user785179

관련 문제