Чтобы найти URL для 404 не найден в PHP - PullRequest
0 голосов
/ 05 февраля 2019

Я пытаюсь найти, существует файл или нет.Мой сервер не сообщает 404, скорее он просто перенаправляет на пользовательскую страницу 404 и возвращает 302 (перенаправление) или что-то подобное.Мой сценарий - попробуйте первый URL-адрес, если файл не существует или недействителен, а затем показать альтернативный URL-адрес.Мой сценарий выглядит следующим образом:

$filename= 'http://35.164.39.39/quote1.pdf';
$handle = curl_init($filename);
    curl_setopt($handle,  CURLOPT_RETURNTRANSFER, TRUE);

    /* 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) {
       $new_url = 'http://34.219.140.48/quote1.pdf';
    } else {
    $new_url = 'http://35.164.39.39/quote1.pdf';
    }

А затем я вызову new_url:

<a target="_blank" href="<?php echo $new_url; ?>">Quote</a>

Я могу видеть из приведенного выше кода, что он всегда принимает условие $ filename как истинное изагружает этот URL.Может кто-нибудь предложить мне, как справиться с этим.Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 05 февраля 2019
    $url = 'http://34.219.140.48/quote1.pdf';
    $url1 = 'http://35.164.39.39/quote1.pdf';

    $handle = curl_init($url);
    curl_setopt($handle,  CURLOPT_RETURNTRANSFER, TRUE);

    $response = curl_exec($handle);

    /* Check if not 200 */
    $httpCode = curl_getinfo($handle, CURLINFO_HTTP_CODE);
    if($httpCode !== 200) {
        $url = $url1;
    }

    curl_close($handle);
    echo "<a target=\"_blank\" href=\"$url\">Quote</a>";
0 голосов
/ 05 февраля 2019

Может быть:

$proto = "http://";
$uri = "/quote1.pdf"; 

$success = $proto."34.219.140.48".$uri;
$failed = $proto."35.164.39.39".$uri;

$handle = curl_init($success);
curl_setopt($handle,  CURLOPT_RETURNTRANSFER, TRUE);

/* 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 NOT loaded successfully without any redirection or error */
if ($httpCode !== 200) {
   echo "<a target=\"_blank\" href=\"<?php echo $failed; ?>\">Quote</a>";
}else{
   echo "<a target=\"_blank\" href=\"<?php echo $success; ?>\">Quote</a>"
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...