{"id":1316,"date":"2012-03-28T18:07:17","date_gmt":"2012-03-28T16:07:17","guid":{"rendered":"http:\/\/michauko.org\/blog\/?p=1316"},"modified":"2012-03-28T15:50:38","modified_gmt":"2012-03-28T13:50:38","slug":"catch-all-dns-virtualhost-et-on-fait-mumuse-avec-les-noms-de-sous-domaines","status":"publish","type":"post","link":"https:\/\/michauko.org\/blog\/catch-all-dns-virtualhost-et-on-fait-mumuse-avec-les-noms-de-sous-domaines-1316\/","title":{"rendered":"Catch-all DNS, VirtualHost et on fait mumuse avec les noms de sous-domaines"},"content":{"rendered":"<p>Salut lecteur,<\/p>\n<p>Un bail que je n&rsquo;ai rien \u00e9crit sur ce blog, la faute \u00e0 un petit projet perso qui me prend un peu de temps chez moi, semble-t-il.<\/p>\n<h2>L&rsquo;id\u00e9e<\/h2>\n<p>Ceci dit, je voulais laisser une trace de cette manip&rsquo; qui consiste \u00e0 autoriser n&rsquo;importe quel nom de sous-domaine d&rsquo;un domaine que vous poss\u00e9dez, exemple le fameux \u00ab\u00a0mon_domaine.com\u00a0\u00bb en ayant la possibilit\u00e9 d&rsquo;envoyer vers un site ou un autre (au sens, un VirtualHost\/DocumentRoot ou un autre) suivant le nom de sous-domaine appel\u00e9, la liste de ces sous-domaines \u00e9tant potentiellement illimit\u00e9e.<\/p>\n<p>Bon, OK, pour la formulation, c&rsquo;est pas forc\u00e9ment limpide. Un exemple concret : mon_domaine.com est <!--more-->une soci\u00e9t\u00e9 qui propose un service web personnalis\u00e9 pour ses clients. Le g\u00e9rant de la chose d\u00e9cide de mettre en place les sous-domaines suivants :<\/p>\n<ul>\n<li>www.mon_domaine.com<\/li>\n<li>demo.mon_domaine.com ; m\u00eame mieux : une liste de plusieurs instances de d\u00e9mo : demo1, demo2 etc<\/li>\n<li>une s\u00e9rie infinie de clientXXX.mon_domaine.com, exemples : http:\/\/client.mon_domaine.com, http:\/\/autreclient.mon_domaine.com<\/li>\n<\/ul>\n<p>\nOn voudrait que le \u00ab\u00a0www\u00a0\u00bb renvoie vers le site \u00ab\u00a0commer\u00e7ant\u00a0\u00bb, que les \u00ab\u00a0demoX\u00a0\u00bb renvoient vers le service en mode d\u00e9mo (chacun \u00e9tant une instance diff\u00e9rente, une base de donn\u00e9es diff\u00e9rente, par exemple) et que chaque \u00ab\u00a0clientXXX\u00a0\u00bb pointe vers le vrai outil, dont le code est commun pour tous les clients, l\u00e0 aussi avec une peut-\u00eatre une base de donn\u00e9e diff\u00e9rente par client.<br \/>\nPourquoi ne pas juste passer un param\u00e8tre dans l&rsquo;URL pour indiquer le client ? car dans mon cas, je pr\u00e9f\u00e9rais faire des sous-domaines diff\u00e9rents, \u00e7a enl\u00e8ve un tas d&rsquo;\u00e9pines du pied en ce qui concerne la gestion des sessions, gestion qui est li\u00e9e au nom complet du domaine, pas \u00e0 ce qu&rsquo;il y a apr\u00e8s le \u00ab\u00a0.com\u00a0\u00bb, comme un http:\/\/&#8230;.com\/?client=xxx<\/p>\n<p>On a toujours la possibilit\u00e9 de faire n&rsquo;importe quelle crassouillerie pour avoir un script d&rsquo;index[.php] qui dirige vers tel ou tel code\/outil suivant l&rsquo;URL appel\u00e9e. Pourquoi pas. Mais lorsque l&rsquo;un des outils est par exemple un outil dont on ne veut pas modifier l&rsquo;index[.php], \u00e7a peut poser probl\u00e8me. Exemple, le \u00ab\u00a0www\u00a0\u00bb est un wordpress, le reste un outil maison. Je ne veux pas avoir \u00e0 jouer avec le htaccess du WordPress, ce genre de choses. Bref, je scinde les mondes avant et je limite les risques de passage de l&rsquo;un \u00e0 l&rsquo;autre.<\/p>\n<p>Bon, \u00e7a y est ? le contexte est clair ?<br \/>\nVoici la solution que je trouve la plus \u00e9l\u00e9gante.<\/p>\n<h2>C\u00f4t\u00e9 DNS : catch-all<\/h2>\n<p>Si le g\u00e9rant de votre nom de domaine le permet, cr\u00e9ez d&rsquo;abord un enregistrement DNS type A ou CNAME nomm\u00e9 \u00ab\u00a0*\u00a0\u00bb et pointant vers votre serveur. Exemple : \u00ab\u00a0<code>*.mon_domaine.com CNAME mon_domaine.com<\/code>\u00ab\u00a0.<br \/>\nTous ne le permettent s\u00fbrement pas. Je sais au moins que OVH le tol\u00e8re, il suffit de mettre \u00ab\u00a0*\u00a0\u00bb comme nom de sous-domaine.<br \/>\nEnsuite, on peut tester avec la commande \u00ab\u00a0<code>host\/nslookup nimportequoi.mon_domaine.com<\/code>\u00ab\u00a0.<\/p>\n<h2>C\u00f4t\u00e9 Apache : identification du sous-domaine demand\u00e9<\/h2>\n<p>Avec la manip&rsquo; DNS, on est s\u00fbr que nimportequoi.mon_domaine.com renvoie bien vers le serveur. Reste \u00e0 trier au niveau Apache (plut\u00f4t qu&rsquo;au niveau code derri\u00e8re, comme j&rsquo;ai expliqu\u00e9 plus haut).<br \/>\nD\u00e9j\u00e0 pour \u00eatre s\u00fbr que \u00e7a marche, une conf simpliste consiste \u00e0 cr\u00e9er un unique VirtualHost comme ceci :<\/p>\n<pre>< VirtualHost *>\r\n        ServerName mon_domaine.com\r\n        ServerAlias *.mon_domaine.com\r\n        ServerAdmin webmaster@mon_domaine.com\r\n        ...\r\n        DocumentRoot \/quelque\/part\/\r\n        ...\r\n< \/VirtualHost>\r\n<\/pre>\n<p>Avec \u00e7a, vous pouvez appeler http:\/\/peu_importe.mon_domaine.com ou http:\/\/www.mon_domaine.com et atterrir sur le m\u00eame VirtualHost\/DocumentRoot, le m\u00eame \u00ab\u00a0site\u00a0\u00bb.<\/p>\n<p>Ensuite, on am\u00e9liore pour scinder les 3 jeux de sous-domaines. Supprimez le VirtualHost d&rsquo;avant et mettez :<\/p>\n<pre>< VirtualHost *>\r\n        ServerName www.mon_domaine.com\r\n        ServerAdmin webmaster@mon_domaine.com\r\n        ...\r\n        DocumentRoot \/quelque\/part\/le\/site\/www\/\r\n        ...\r\n< \/VirtualHost>\r\n< VirtualHost *>\r\n        ServerAlias demo*.mon_domaine.com\r\n        ServerAdmin webmaster@mon_domaine.com\r\n        ...\r\n        DocumentRoot \/quelque\/part\/le\/code\/des\/sites\/de\/demo\/\r\n        ...\r\n< \/VirtualHost>\r\n< VirtualHost *>\r\n        ServerName mon_domaine.com\r\n        ServerAlias *.mon_domaine.com\r\n        ServerAdmin webmaster@mon_domaine.com\r\n        ...\r\n        DocumentRoot \/quelque\/part\/le\/code\/des\/sites\/de\/production\/\r\n        ...\r\n< \/VirtualHost><\/pre>\n<p>Bah voil\u00e0, c&rsquo;est tout, les 3 r\u00e9pertoires mentionn\u00e9s dans les DocumentRoot sont ind\u00e9pendants.<br \/>\nIl ne resterait plus que dans l&rsquo;outil, \u00e0 r\u00e9cup\u00e9rer le nom du sous-domaine (exemple \u00e0 partir de <code>$_SERVER['SERVER_NAME']<\/code> en PHP) et faire le traitement ad\u00e9quat.<\/p>\n<p>En esp\u00e9rant que \u00e7a serve \u00e0 quelqu&rsquo;un,<\/p>\n<p>A la prochaine !<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Salut lecteur, Un bail que je n&rsquo;ai rien \u00e9crit sur ce blog, la faute \u00e0 un petit projet perso qui me prend un peu de temps chez moi, semble-t-il. L&rsquo;id\u00e9e Ceci dit, je voulais laisser &hellip;<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_crdt_document":"","_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[2,386,82],"tags":[515,86,430,516],"class_list":["post-1316","post","type-post","status-publish","format-standard","hentry","category-debian","category-dev","category-pl","tag-catch-all","tag-dns","tag-php","tag-virtualhost"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Catch-all DNS, VirtualHost et on fait mumuse avec les noms de sous-domaines - Le blog de Michauko<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/michauko.org\/blog\/catch-all-dns-virtualhost-et-on-fait-mumuse-avec-les-noms-de-sous-domaines-1316\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Catch-all DNS, VirtualHost et on fait mumuse avec les noms de sous-domaines - Le blog de Michauko\" \/>\n<meta property=\"og:description\" content=\"Salut lecteur, Un bail que je n&rsquo;ai rien \u00e9crit sur ce blog, la faute \u00e0 un petit projet perso qui me prend un peu de temps chez moi, semble-t-il. L&rsquo;id\u00e9e Ceci dit, je voulais laisser &hellip;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/michauko.org\/blog\/catch-all-dns-virtualhost-et-on-fait-mumuse-avec-les-noms-de-sous-domaines-1316\/\" \/>\n<meta property=\"og:site_name\" content=\"Le blog de Michauko\" \/>\n<meta property=\"article:published_time\" content=\"2012-03-28T16:07:17+00:00\" \/>\n<meta name=\"author\" content=\"michauko\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"michauko\" \/>\n\t<meta name=\"twitter:label2\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/michauko.org\\\/blog\\\/catch-all-dns-virtualhost-et-on-fait-mumuse-avec-les-noms-de-sous-domaines-1316\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/michauko.org\\\/blog\\\/catch-all-dns-virtualhost-et-on-fait-mumuse-avec-les-noms-de-sous-domaines-1316\\\/\"},\"author\":{\"name\":\"michauko\",\"@id\":\"https:\\\/\\\/michauko.org\\\/blog\\\/#\\\/schema\\\/person\\\/0cd9f3d9ce4dccc05df81a5b27051ea9\"},\"headline\":\"Catch-all DNS, VirtualHost et on fait mumuse avec les noms de sous-domaines\",\"datePublished\":\"2012-03-28T16:07:17+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/michauko.org\\\/blog\\\/catch-all-dns-virtualhost-et-on-fait-mumuse-avec-les-noms-de-sous-domaines-1316\\\/\"},\"wordCount\":686,\"commentCount\":12,\"keywords\":[\"catch-all\",\"dns\",\"php\",\"VirtualHost\"],\"articleSection\":[\"Debian\",\"dev\",\"planet-libre.org\"],\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/michauko.org\\\/blog\\\/catch-all-dns-virtualhost-et-on-fait-mumuse-avec-les-noms-de-sous-domaines-1316\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/michauko.org\\\/blog\\\/catch-all-dns-virtualhost-et-on-fait-mumuse-avec-les-noms-de-sous-domaines-1316\\\/\",\"url\":\"https:\\\/\\\/michauko.org\\\/blog\\\/catch-all-dns-virtualhost-et-on-fait-mumuse-avec-les-noms-de-sous-domaines-1316\\\/\",\"name\":\"Catch-all DNS, VirtualHost et on fait mumuse avec les noms de sous-domaines - Le blog de Michauko\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/michauko.org\\\/blog\\\/#website\"},\"datePublished\":\"2012-03-28T16:07:17+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/michauko.org\\\/blog\\\/#\\\/schema\\\/person\\\/0cd9f3d9ce4dccc05df81a5b27051ea9\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/michauko.org\\\/blog\\\/catch-all-dns-virtualhost-et-on-fait-mumuse-avec-les-noms-de-sous-domaines-1316\\\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/michauko.org\\\/blog\\\/catch-all-dns-virtualhost-et-on-fait-mumuse-avec-les-noms-de-sous-domaines-1316\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/michauko.org\\\/blog\\\/catch-all-dns-virtualhost-et-on-fait-mumuse-avec-les-noms-de-sous-domaines-1316\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\\\/\\\/michauko.org\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Catch-all DNS, VirtualHost et on fait mumuse avec les noms de sous-domaines\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/michauko.org\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/michauko.org\\\/blog\\\/\",\"name\":\"Le blog de Michauko\",\"description\":\"Si tu ne comprends pas le titre de l&#039;article, passe ton chemin\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/michauko.org\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/michauko.org\\\/blog\\\/#\\\/schema\\\/person\\\/0cd9f3d9ce4dccc05df81a5b27051ea9\",\"name\":\"michauko\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5c3a8969c185fd0eef3893a15408f3ef1b36a6681a066b1eb32045643c30ba65?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5c3a8969c185fd0eef3893a15408f3ef1b36a6681a066b1eb32045643c30ba65?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5c3a8969c185fd0eef3893a15408f3ef1b36a6681a066b1eb32045643c30ba65?s=96&d=mm&r=g\",\"caption\":\"michauko\"},\"sameAs\":[\"http:\\\/\\\/michauko.org\\\/\"],\"url\":\"https:\\\/\\\/michauko.org\\\/blog\\\/author\\\/randomized2\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Catch-all DNS, VirtualHost et on fait mumuse avec les noms de sous-domaines - Le blog de Michauko","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/michauko.org\/blog\/catch-all-dns-virtualhost-et-on-fait-mumuse-avec-les-noms-de-sous-domaines-1316\/","og_locale":"fr_FR","og_type":"article","og_title":"Catch-all DNS, VirtualHost et on fait mumuse avec les noms de sous-domaines - Le blog de Michauko","og_description":"Salut lecteur, Un bail que je n&rsquo;ai rien \u00e9crit sur ce blog, la faute \u00e0 un petit projet perso qui me prend un peu de temps chez moi, semble-t-il. L&rsquo;id\u00e9e Ceci dit, je voulais laisser &hellip;","og_url":"https:\/\/michauko.org\/blog\/catch-all-dns-virtualhost-et-on-fait-mumuse-avec-les-noms-de-sous-domaines-1316\/","og_site_name":"Le blog de Michauko","article_published_time":"2012-03-28T16:07:17+00:00","author":"michauko","twitter_card":"summary_large_image","twitter_misc":{"\u00c9crit par":"michauko","Dur\u00e9e de lecture estim\u00e9e":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/michauko.org\/blog\/catch-all-dns-virtualhost-et-on-fait-mumuse-avec-les-noms-de-sous-domaines-1316\/#article","isPartOf":{"@id":"https:\/\/michauko.org\/blog\/catch-all-dns-virtualhost-et-on-fait-mumuse-avec-les-noms-de-sous-domaines-1316\/"},"author":{"name":"michauko","@id":"https:\/\/michauko.org\/blog\/#\/schema\/person\/0cd9f3d9ce4dccc05df81a5b27051ea9"},"headline":"Catch-all DNS, VirtualHost et on fait mumuse avec les noms de sous-domaines","datePublished":"2012-03-28T16:07:17+00:00","mainEntityOfPage":{"@id":"https:\/\/michauko.org\/blog\/catch-all-dns-virtualhost-et-on-fait-mumuse-avec-les-noms-de-sous-domaines-1316\/"},"wordCount":686,"commentCount":12,"keywords":["catch-all","dns","php","VirtualHost"],"articleSection":["Debian","dev","planet-libre.org"],"inLanguage":"fr-FR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/michauko.org\/blog\/catch-all-dns-virtualhost-et-on-fait-mumuse-avec-les-noms-de-sous-domaines-1316\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/michauko.org\/blog\/catch-all-dns-virtualhost-et-on-fait-mumuse-avec-les-noms-de-sous-domaines-1316\/","url":"https:\/\/michauko.org\/blog\/catch-all-dns-virtualhost-et-on-fait-mumuse-avec-les-noms-de-sous-domaines-1316\/","name":"Catch-all DNS, VirtualHost et on fait mumuse avec les noms de sous-domaines - Le blog de Michauko","isPartOf":{"@id":"https:\/\/michauko.org\/blog\/#website"},"datePublished":"2012-03-28T16:07:17+00:00","author":{"@id":"https:\/\/michauko.org\/blog\/#\/schema\/person\/0cd9f3d9ce4dccc05df81a5b27051ea9"},"breadcrumb":{"@id":"https:\/\/michauko.org\/blog\/catch-all-dns-virtualhost-et-on-fait-mumuse-avec-les-noms-de-sous-domaines-1316\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/michauko.org\/blog\/catch-all-dns-virtualhost-et-on-fait-mumuse-avec-les-noms-de-sous-domaines-1316\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/michauko.org\/blog\/catch-all-dns-virtualhost-et-on-fait-mumuse-avec-les-noms-de-sous-domaines-1316\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/michauko.org\/blog\/"},{"@type":"ListItem","position":2,"name":"Catch-all DNS, VirtualHost et on fait mumuse avec les noms de sous-domaines"}]},{"@type":"WebSite","@id":"https:\/\/michauko.org\/blog\/#website","url":"https:\/\/michauko.org\/blog\/","name":"Le blog de Michauko","description":"Si tu ne comprends pas le titre de l&#039;article, passe ton chemin","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/michauko.org\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Person","@id":"https:\/\/michauko.org\/blog\/#\/schema\/person\/0cd9f3d9ce4dccc05df81a5b27051ea9","name":"michauko","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/secure.gravatar.com\/avatar\/5c3a8969c185fd0eef3893a15408f3ef1b36a6681a066b1eb32045643c30ba65?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/5c3a8969c185fd0eef3893a15408f3ef1b36a6681a066b1eb32045643c30ba65?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/5c3a8969c185fd0eef3893a15408f3ef1b36a6681a066b1eb32045643c30ba65?s=96&d=mm&r=g","caption":"michauko"},"sameAs":["http:\/\/michauko.org\/"],"url":"https:\/\/michauko.org\/blog\/author\/randomized2\/"}]}},"_links":{"self":[{"href":"https:\/\/michauko.org\/blog\/wp-json\/wp\/v2\/posts\/1316","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/michauko.org\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/michauko.org\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/michauko.org\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/michauko.org\/blog\/wp-json\/wp\/v2\/comments?post=1316"}],"version-history":[{"count":14,"href":"https:\/\/michauko.org\/blog\/wp-json\/wp\/v2\/posts\/1316\/revisions"}],"predecessor-version":[{"id":1330,"href":"https:\/\/michauko.org\/blog\/wp-json\/wp\/v2\/posts\/1316\/revisions\/1330"}],"wp:attachment":[{"href":"https:\/\/michauko.org\/blog\/wp-json\/wp\/v2\/media?parent=1316"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/michauko.org\/blog\/wp-json\/wp\/v2\/categories?post=1316"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/michauko.org\/blog\/wp-json\/wp\/v2\/tags?post=1316"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}