2013-07-14 3 views
0

나는이 오래된 URL이 : 이전 쿼리 문자열을 리디렉션하는 방법 301?

/site/index?cat=likes&top=today 
/site/index?cat=likes&top=month 
/tag/TagName/index?cat=likes&top=today 

내가 지금은 404의를 받고 있어요 cat=popular

cat=likes을 변경했습니다. cat = likes의 모든 호출을 cat = popular로 리디렉션하려면 어떻게해야합니까?

참고 : 이미 URL을 아름답게 꾸미는 리디렉션이 있습니다.

/site/index?cat=popular&top=today

이미 GET 변수 cat 어떠했는지

/popular-today

+0

이것은 Yii 문제로 생각되는 경우 URL 규칙의 관련 부분을 추가해야합니다. 그렇지 않으면 Yii 태그를 제거해야합니다. –

답변

0

검사로 리디렉션이 값 '좋아'로 설정되어, 당신은 site/index 또는 tag/tagName 당신 내에서이를 확인할 수 있습니다. 그 후에 PHP의 header()을 사용하여 리디렉션 할 수 있습니다. 이런 식으로 뭔가가 :

public function actionIndex() 
{   
    if ($_GET['cat'] == 'likes') 
    { 
     header('Location: /site/index?cat=popular', false, 301); 
    } 
    ... 
} 

또한 아름답게 URL을 사용할 수 있습니다.

public function actionIndex() 
{   
    if ($_GET['cat'] == 'likes') 
    { 
     header('Location: /popular-today', false, 301); 
    } 
    ... 
} 
+0

현재 내 .htaccess에이 항목이 있으며 완벽하게 작동합니다. 'RedirectMatch 301 /tag/(.*)/likes-(today|week|month|year)/tag/$ 1/popular- $ 2 RedirectMatch 301 /tag/(.*)/likes-(new|all)/tag/$ 1/new RedirectMatch 301 /tag/(.*)/likes-30/ tag/$ 1/popular-month RedirectMatch 301/likes- (오늘 | 주 | 월 | 연도)/popular- $ 1' 나는 당신의 제안이 효과가있을 것이라고 생각하지만 코드 외부에서이를 수행하는 더 깨끗한 방법을 찾고 있습니다. 문제의 쿼리 문자열을 리디렉션하는 적절한 .htaccess 항목을 알고 싶습니다. – Ross

+0

그것은 아마도 Yii와 관련이 없지만 실제로는 더 나은 해결책입니다. – deacs

관련 문제