2013-07-14 3 views
0

J'ai ces anciennes URL:Comment?

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

j'ai changé cat=likes-cat=popular

Maintenant, je reçois 404 de. Comment puis-je rediriger tous les appels de cat = likes à cat = popular?

Remarque: J'ai déjà une redirection qui embellit l'URL.

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

est déjà redirigé vers

/popular-today

+0

Si vous pensez qu'il s'agit d'un problème Yii, vous devez ajouter la partie relevenat de vos règles d'URL. Sinon, vous devez supprimer la balise Yii. –

Répondre

0

la variable Vérifier la validité cat est réglée avec la valeur GET 'aime', vous pouvez vérifier cela dans votre site/index ou tag/tagName. Après quoi vous pouvez rediriger en utilisant PHP header(). Quelque chose comme ceci:

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

Vous pouvez également utiliser votre URL embelli.

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

J'ai actuellement ces entrées dans mon .htaccess et fonctionne parfaitement: '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/aime- (aujourd'hui | semaine | mois | année)/populaire- $ 1' Je crois que votre suggestion fonctionnerait mais je cherche plus pour une manière plus propre de faire ceci en dehors du code. Donc je veux connaître les bonnes entrées .htaccess pour rediriger ces chaînes de requête en question. – Ross

+0

c'est probablement une meilleure solution, même si ça n'a pas grand chose à voir avec Yii. – deacs