2009-10-17 5 views
1

J'ai changé ma plate-forme de site Web et je reçois maintenant des appels de google pointant vers l'ancien emplacement des recherches de balises sur mon site. Fondamentalement, je dois signaler:Réécriture de Nginx pour la valeur de la chaîne de queues URI

http://www.website.com/articles/Subject%3Alist=Music-Oldies&review_state=published 

à:

http://www.website.com/tags/Music-Oldies 

..dans mon fichier site Nginx. Seul le tag 'Music-oldies' doit être extrait. 'Subject% 3Alist' est en fait 'subject: list'.

EDIT: '.... articles/subject% 3Alist ...' aurait dû » .... 'articles soumis% 3Alist ....'

+0

Pourquoi ne recherche que vous avez non seulement l'URL pour 'la liste = Music-Oldies' (pas nécessairement en utilisant regex) et le rediriger vers la nouvelle URL si une correspondance est trouvée? Cette chaîne va-t-elle apparaître dans d'autres parties de l'URL? ou y aura-t-il d'autres URL avec cette chaîne? – Amarghosh

+0

désolé, ce ne sera pas toujours «musique-oldies», il peut être n'importe quoi. Mais le tag sera toujours une variable 'subject: list'. L'ancienne plate-forme a été plone, et pour une raison quelconque, il utilise 'subject: list' pour filtrer les données par mots-clés (tags) –

Répondre

1

Vous avez besoin d'une directive rewrite comme ça? :

rewrite Subject:list=([^&]+) /tags/$1 permanent; 
+0

Cela ne semble pas fonctionner, même si je me sens proche. J'ai même essayé: réécriture [\ & &] Sujet: liste = ([^ &] +)/tags/$ 1 permanent; ..pour l'attraper sur n'importe quelle partie de la chaîne mais toujours pas de chance –

+0

Difficile de dire exactement ce qui se passe. Serait-ce la capitalisation du mot "Sujet"? Peut-être: réécrire [sS] ubject: list = ([^ &] +)/tags/$ 1 permanent; travaille pour vous? – windyjonas

+0

après avoir testé cela de manière exhaustive dans un outil regex, tout fonctionne bien avec les réels ':' btw 'subject' et 'list'. La seule conclusion que je peux faire est que nginx ne décode pas '% 3A' en ':' avant de tester –

Questions connexes