404 Ошибка страницы ~ Перенаправить изображение - PHP - PullRequest
0 голосов
/ 14 апреля 2009

Я использую пользовательскую страницу 404 в приложении PHP.

На этой странице 404 я проверяю некоторые «известные» старые страницы, которые больше не существуют, и затем перенаправляю пользователя на новую или наиболее релевантную текущую страницу. Прекрасно работает.

Теперь я столкнулся с серией старых изображений, которые были удалены, и ищет способ перенаправить изображения на новое изображение (если возможно, внутри кода php). 1007 *

Я ненадолго охотился и пустовал.

Есть ли способ сделать это?

Вот пример моего кода:

<?php
    //-- grab info regarding bad request --
    $root       = $_SERVER['DOCUMENT_ROOT'];
    $page       = parse_url($_SERVER['REQUEST_URI']);
    $page       = $page['path'];
    $referer        = $_SERVER['HTTP_REFERER'];
    $host       = $_SERVER['REMOTE_HOST'];

    //-- try to redirect old pages/files ----------------------
    //
    $page = urlencode($page);

    if ( stristr($page, "some_old_file.zip") ) {
        // Example file redirect
        echo    "<META HTTP-EQUIV=\"refresh\" CONTENT=\"0;URL=http://www.site.com/the/new/file.zip\">";

    } elseif ( stristr($page, "some_old_page.php") ) {  
        // example webpage redirect
        echo    "<META HTTP-EQUIV=\"refresh\" CONTENT=\"0;URL=http://www.site.com/the/new/page.php\">";

    } elseif ( stristr($page, "some_old_image.jpg") ) {
        // not sure how to do this ...
        // ...
        // ...
        // ...
        // ...
        // ...
        // not sure how to do this ...          
    } else {
        // everything else - direct to custom 404 search page
        echo    "<META HTTP-EQUIV=\"refresh\" CONTENT=\"0;URL=http://www.site/com/the/custom/404_help.php?page={$page}\">";
    }
    //
    // -------------------------------------------------------

?>

Ответы [ 3 ]

5 голосов
/ 14 апреля 2009

вместо вывода метаобновления используйте заголовок местоположения

header("Location: /path/to/image.jpg\r\n");

\ r \ n - это просто новая строка для разделения заголовков.

Примечание: заголовки должны отправляться перед любым другим выводом

1 голос
/ 14 апреля 2009

Вам потребуется перенаправление на стороне сервера. Посмотрите на функцию php "header" и код статуса http 301 (перенесены навсегда). Вы найдете тонну готовых 5 линейных решений.

На вашем месте я бы использовал этот метод и для html-контента, чтобы информировать поисковые системы о новом местоположении того же контента.

0 голосов
/ 14 апреля 2009

Я бы порекомендовал сделать это внутри Apache, используя перенаправления Apache (в ваших файлах Apache conf или .htaccess). Вы можете сделать что-то вроде этого:

RedirectMatch old_file_path new_file_path

Это не только улучшит вашу производительность, но вам не придется каждый раз выполнять поиск. И самое приятное то, что это будет управляемым, если вам потребуется добавить больше недостающих перенаправлений в будущем.

...