URLが404を返すかどうかを確認する方法があります。 私は以下の機能を使用していますが、うまくいきましたが、私の問題は自分の地域で使用されている言語に応じて、私をサブドメインにリダイレクトするドメインのURLを確認することです。PHP - 最終的なURLが存在するかどうか確認してください
https://example.com/video/123456
私は、次のURLにリダイレクトしています:
function page_404($url) {
$handle = curl_init($url);
curl_setopt($handle, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($handle, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($handle, CURLOPT_SSL_VERIFYHOST, false);
/* Get the HTML or whatever is linked in $url. */
$response = curl_exec($handle);
/* Check for 404 (file not found). */
$httpCode = curl_getinfo($handle, CURLINFO_HTTP_CODE);
curl_close($handle);
/* If the document has loaded successfully without any redirection or error */
if ($httpCode >= 200 && $httpCode < 300) {
echo $httpCode."<br/>";
return false;
} else {
echo $httpCode."<br/>";
return true;
}
}
例えば
https://es.example.com/video/123456
それはHTTPコード "301" であることを意味し、私の機能は、としてそれを検出し、私はそのビデオが存在しないという答えを与えてくれるが、実際にはそのサブドメインにリダイレクトされたドメインだけが存在する。
$ httpCode < 303の行を$ httpCode < 300に変更すると動作します。
しかし、問題は、それが無効なURLがその主なウェブに私をリダイレクトする受信したときに、このページは、私は404のコードを受信しないと、それは私が何ができる301または303
に役立つだろうということですか?私はうまくやればいいと思う。
'if($ httpCode!= 404)'をチェックするだけで、ページが '404'かどうかを具体的に確認していると思いますか? –
'CURLINFO_REDIRECT_URL'を使ってリダイレクト先を決定し、与えられたURLが有効かどうかを判断することができます。 – Philipp
'CURLOPT_FOLLOWLOCATION'を使ってリダイレクトに従って最終結果を返すのはなぜでしょうか? – Barmar