{"id":231567,"date":"2022-12-24T18:17:00","date_gmt":"2022-12-24T15:17:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=231567"},"modified":"2022-12-07T11:02:04","modified_gmt":"2022-12-07T08:02:04","slug":"uudelleenohjauksen-maeaeraenpaeaen-loeytaeminen-php-n-avulla","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fi\/uudelleenohjauksen-maeaeraenpaeaen-loeytaeminen-php-n-avulla\/","title":{"rendered":"Uudelleenohjauksen m\u00e4\u00e4r\u00e4np\u00e4\u00e4n l\u00f6yt\u00e4minen PHP:n avulla"},"content":{"rendered":"\n<p>Ty\u00f6skentelin \u00e4skett\u00e4in projektin parissa, joka kommunikoi kolmannen osapuolen API:n kanssa, joka monien sovellusliittymien tapaan l\u00e4hett\u00e4\u00e4 takaisin paljon dataa, joista osa sis\u00e4lt\u00e4\u00e4 URL-osoitteen sovellusliittym\u00e4\u00e4n liitetylle tuotteelle.<\/p>\n<p>Sovellusliittym\u00e4\u00e4n liittyv\u00e4 asia, jota palautettiin, ei ollut oikea kohde-URL. Sen sijaan se oli URL-osoite, joka lopulta ohjasi toiseen URL-osoitteeseen.<\/p>\n<p>Joten kuvittele, ett\u00e4 osut esimerkiksi <strong>osoitteeseen acme.site-info.com<\/strong> ja ohjaat sen suoraan osoitteeseen <strong>acme.com<\/strong>. Teemme t\u00e4m\u00e4n manuaalisesti koko ajan, mutta minun piti saada varsinainen \u2013 tai lopullinen \u2013 kohde suoraan URL-osoitteesta.<\/p>\n<p>Ja uudelleenohjauksen kohteen l\u00f6yt\u00e4minen PHP:n avulla on helppoa; T\u00e4m\u00e4 kuitenkin edellytt\u00e4\u00e4, ett\u00e4 on vain yksi uudelleenohjaus.<\/p>\n<p>T\u00e4ss\u00e4 on kuitenkin, miten se tehd\u00e4\u00e4n.<\/p>\n<p>Huomaa, ett\u00e4 seuraava oletus olettaa, ett\u00e4 tunnet <a href=\"https:\/\/curl.haxx.se\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">cURL<\/a> :n .<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-160277-61e708790bd4a.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-160277-61e708790bd4a.png\" alt=\"Uudelleenohjauksen m\u00e4\u00e4r\u00e4np\u00e4\u00e4n l\u00f6yt\u00e4minen PHP:n avulla\" ><\/a><\/p>\n<p>Ja jos ei, toiminnon k\u00e4ytt\u00e4minen on tarpeeksi helppoa.<\/p>\n<blockquote>\n<p>curl-komentoa k\u00e4ytet\u00e4\u00e4n komentoriveiss\u00e4 tai skripteiss\u00e4 tiedon siirt\u00e4miseen. Sit\u00e4 k\u00e4ytet\u00e4\u00e4n my\u00f6s autoissa, televisioissa, reitittimiss\u00e4, tulostimissa, \u00e4\u00e4nilaitteissa, matkapuhelimissa, tableteissa, digisovittimissa, mediasoittimissa ja se on Internetin siirtorunko tuhansille ohjelmistosovelluksille, jotka vaikuttavat miljardeihin ihmisiin p\u00e4ivitt\u00e4in.<\/p>\n<\/blockquote>\n<p>Lis\u00e4ksi PHP-k\u00e4sikirjassa on siit\u00e4 paljon tietoa, <a href=\"https:\/\/www.php.net\/manual\/en\/book.curl.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">jota voit selata<\/a> tarpeen mukaan (ja todenn\u00e4k\u00f6isesti tarvitset sit\u00e4 my\u00f6s tulevaisuudessa).<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-160277-61e7087de6a45.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-160277-61e7087de6a45.png\" alt=\"Uudelleenohjauksen m\u00e4\u00e4r\u00e4np\u00e4\u00e4n l\u00f6yt\u00e4minen PHP:n avulla\" ><\/a><\/p>\n<p>Joka tapauksessa, t\u00e4ss\u00e4 on koodi ja hieman selityst\u00e4 <a href=\"https:\/\/gist.github.com\/tommcfarlin\/1e9882520588a5d8ee8948050ce48d69\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">koodin j\u00e4lkeen<\/a> :<\/p>\n<pre><code>&lt;?php\n\/**\n * Determines the destination URL of a provided URL that gives a redirect.\n *\n * @param string $url the specified URL provided by the API.\n * @return string $url the destination of the specified URL.\n *\/\nprivate function getDestinationUrl($url)\n{\n  $ch = curl_init();\n\n  curl_setopt($ch, CURLOPT_URL, $url);\n  curl_setopt($ch, CURLOPT_HEADER, true);\n  curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);\n  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);\n\n  \/\/ Read the headers as provided by cURL.\n  $headers = curl_exec($ch);\n  $url = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL);\n\n  \/\/ We only need the domain so just read the first part.\n  $url = explode('\/', $url);\n  $url = $url[0];\n\n  return $url;\n}<\/code><\/pre>\n<p>Funktio tekee seuraavaa:<\/p>\n<ol>\n<li>hyv\u00e4ksyy sovellusliittym\u00e4n tarjoaman URL-osoitteen,<\/li>\n<li>hakee otsikot pyynn\u00f6st\u00e4 URL-osoitteeseen cURL:n avulla,<\/li>\n<li>tarjoaa otsikot, joista voimme lukea napata URL-osoitteen<\/li>\n<\/ol>\n<p>Huomaa my\u00f6s, ett\u00e4 erotan URL-osoitteen vinoviivan perusteella, jotta voin lukea vain verkkotunnuksen, koska en ole huolissani mist\u00e4\u00e4n p\u00e4\u00e4verkkotunnuksen j\u00e4lkeen (eli jos verkkotunnuksessa on <strong>index<\/strong> .php, <strong>oletus.<\/strong> <em><em> <strong>aspx<\/strong> <\/em><\/em> laajennus jne.), voin k\u00e4ytt\u00e4\u00e4 sit\u00e4 ty\u00f6ss\u00e4ni tarpeen mukaan.<\/p>\n<p>Toiseksi, huomaa, ett\u00e4 en tied\u00e4 toimiiko t\u00e4m\u00e4 useammalla kuin yhdell\u00e4 hyppyll\u00e4. Joten jos sinulla on useita uudelleenohjauksia, voit toistaa t\u00e4m\u00e4n toiminnon useita kertoja. En tied\u00e4, mutta ajattelin sen mainitsemisen arvoisena.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>T\u00e4m\u00e4 ratkaisu uudelleenohjauksen m\u00e4\u00e4r\u00e4np\u00e4\u00e4n l\u00f6yt\u00e4miseen PHP:lla on helppo, mutta se edellytt\u00e4\u00e4 yhden uudelleenohjauksen.<\/p>\n","protected":false},"author":1,"featured_media":235285,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[719,895,803],"tags":[1166],"class_list":["post-231567","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-kehittaejae","category-koodi","category-php-5","tag-affiai-fi"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts\/231567","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/comments?post=231567"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts\/231567\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media\/235285"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media?parent=231567"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/categories?post=231567"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/tags?post=231567"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}