Nginx réécrit les arguments d’URL en sous-domaine

Avoir un nombre de parameters d’URL différents que je souhaite redirect vers un sous-domaine.

mydomain.com/blog/title-of-the-post -> blog.mydomain.com/title-of-the-post

et

mydomain-com / taxonomy / term / id -> mydomain.com/id

La logique est donc plutôt une réécriture, mais vous voulez récupérer et utiliser une partie de l’URL. Est-ce que cela peut être fait?

oui, vous pouvez utiliser des backreferences dans vos réécritures, par exemple:

location /blog/ { rewrite ^/blog/(.*)$ http://blog.mydomain.com/$1 permanent; } 

et les mêmes choses fonctionnent pour votre autre réécriture

METTRE À JOUR:

Si vous voulez conserver la partie blog, vous ne changez plus le $ uri, seulement le $ host, cela devient alors plus facile:

 location /blog/ { rewrite ^ http://blog.mydomain.com/$uri permanent; } 

REMARQUE: les variables standard nginx sont listées sur http://wiki.nginx.org/HttpCoreModule#Variables

pour les parameters multiples, vous utilisez des références supplémentaires $ 2 $ 3 et ainsi de suite (assurez-vous que vous avez des regroupements, par exemple des parenthèses, autour des parties que vous souhaitez utiliser dans votre regex), par exemple:

 location /blog/ { rewrite ^/blog/([0-9]{4})/(.*)$ http://blog.mydomain.com/$1/$2 permanent; } 

qui correspondrait à une année à 4 chiffres dans l’URL de votre blog, voir par exemple http://www.regular-expressions.info/brackets.html pour plus d’informations sur les expressions régulières et les backreferences