2011-03-21 4 views
0

J'ai mis à jour le système sur mon site Web et donc je veux faire des redirections pour les liens vers les nouvelles pages.ancienne url ne fonctionne pas dans .htaccess

je suis en train de la rewriterule suivante^jor/index.php? Option = com_content & task = view & id = ([0-9] ) & Itemid = ([0-9]) $ index.php ? page = article & id = $ 1

mais cela ne fonctionne pas. juste un «lien invalide».

et comment faire pour rediriger 302?

Merci

+0

J'ai oublié de répondre à votre deuxième question. Vous faites une redirection 302 avec '[R = 302, L]'. J'ai mis à jour la réponse. – nitro2k01

+0

Merci nitro :) je l'ai trouvé –

Répondre

0

Vous ne pouvez pas correspondre à la chaîne de requête directement avec RewriteRule; il ne correspondra qu'au chemin du fichier. Vous devez utiliser RewriteCond et %1 (plutôt que $1)

RewriteCond %{QUERY_STRING} id=([0-9]+)&Itemid=([0-9]+)$ 
RewriteRule ^jor/index.php index.php?page=article&id=%1&itemid=%2 [R=302,L] 

note quelques petites choses:

1) Il est supposé que id est suivi par itemid qui est suivi à la fin de la chaîne. itemid=1337&id=42 ne fonctionnera pas parce que la commande est permutée.

2) La règle ne fait aucune hypothèse sur le reste de la chaîne de requête. Il pourrait tout aussi bien commencer par option=com_radio.

3) Notez le + après [0-9] qui est nécessaire pour correspondre à plusieurs caractères. (+ signifie «un ou plusieurs»)