2016-08-11 1 views
3

/topics/blog/dot-net/?page_id=386http://www.example.com/dot-net으로 리디렉션하려고합니다.동적 URL의 301 리디렉션 수정 시도 | Wokring이 아닙니다

나는 다음과 같은 시도 :

Redirect 301 /topics/blog/dot-net/?page_id=386 http://www.example.com/dot-net 

위는 확실하지만, 단지 시도했다 작동하지 않습니다.

그리고이 하나

RewriteCond %{THE_REQUEST} ^(GET|POST)\ /topics/blog/dot-net/?page_id=386(.*)\ HTTP 
RewriteRule^/dot-net? [R=301,L] 

이 문제에 대해 뭔가를 알고있는 경우. .htaccess에서 어떻게 해결할 수 있을지 제안 해주세요.

답변

0

mod_alias Redirect은 쿼리 문자열과 일치시키는 데 사용할 수 없습니다. 귀하의 mod_rewrite 시도가 잠재적으로 작동합니다. 이전 실패한 시도에서 캐싱 문제가있을 수 있습니다. 그냥 다음 명시된 URL을 리디렉션 할 경우, 그것을 기록 할 수있는 일이 같은 :

RewriteEngine On 
RewriteCond %{QUERY_STRING} ^page_id=396$ 
RewriteRule ^topics/blog/dot-net/$ /dot-net? [R=302,L] 

RewriteRule패턴의 URL 경로를 확인하기보다는 일반적인 캐치를 사용하는 것이 더 효율적입니다 -all.

다시 쓰기 루프를 방지해야하는 경우에만 THE_REQUEST을 확인하면되지만 질문에 명시된 내용은 아닙니다.

정상적으로 작동하면 302 (임시)을 301 (영구)으로 변경하십시오.

+0

작동하지 않았습니다. 나는 아래 코드를 사용했다. 나는 HTACCESS에서 이전 코드를 사용했다. 코드를 다른 곳에 두어야합니까? '번호 301 한다 RewriteEngine 한다 RewriteCond % 당 {HTTP_HOST}!^WWW \ .EXAMPLE \ .COM [NC] RewriteRule의 (^. *) $ http://www.example.com/$1 [L, R 시작 = 301] RewriteCond % {QUERY_STRING}^page_id = 386 $ RewriteRule^주제/블로그/dot-net/$/dot-net? [R = 302, L]' –

+1

"작동하지 않았다"- 어떤 방식으로 작동하지 않았습니까? 아무것도 안했어? .htaccess의 지시문 순서가 중요합니다. 다른 지시어가있는 경우 위의 리디렉션은 표준 리디렉션을 거쳐야하지만 다른 모든 재 작성보다 먼저 수행되어야합니다. 귀하의 의견에있는 코드는 괜찮아 보입니다. 질문에 전체 .htaccess 파일을 포함 시켜서 더 자세히 디버깅 할 수 있도록해야합니다. 아마도 'example.com'에서 'www.example.com'으로의 리다이렉트가 정상적으로 작동하고 있을까요? – MrWhite

+1

내가 링크 한'.htaccess' 파일을 잠시 살펴 봤습니다. 솔직히 말하면, 불행하게도 "마쉬"가 조금 있습니다 (101 개의 다른 WordPress 플러그인은 "가버린"것 같습니다!). 그러나 위의 지시문을 .htaccess 파일의 맨 위에두면 명시된대로 리디렉션을 수행해야합니다. 하지만 ... "최상위"는 아마도 이러한 지시문에 대한 _correct_ 장소가 아닙니다. 모든 표준 리디렉션과 액세스 제어 (mod_rewrite를 통해 수행됨)가 먼저 와야합니다. – MrWhite