перехват всех недопустимых URL-адресов


Недавно я обновил сайт, и почти все URL-адреса изменились. Я перенаправил их все (или надеюсь на это), но возможно, что некоторые из них ускользнули от меня. Есть ли способ каким-то образом поймать все недействительные URL-адреса и отправить пользователя на определенную страницу и каким-то образом узнать, с какого URL пришел человек, чтобы я мог это зарегистрировать и исправить? Я думаю, что мне это пригодится .htaccess как-то, но не уверен, как. Я использую PHP Спасибо большое!

3 4

3 ответа:

Можно использовать обычай ErrorDocument обработчик, написанный на PHP, чтобы поймать URL, которые "проскочили":

# .htaccess file
ErrorDocument 404 /not-found.php

И в not-found.php:

switch($_SERVER['REDIRECT_URL']) {
    case '/really_old_page.php':
        header('HTTP/1.1 301 Moved Permanently');
        header('Location: /new-url/...');
    /*  As suggested in the comment, exit here.
        Additional output might not be handled well and
        provokes undefined behavior. */
        exit;
    default:
        header('HTTP/1.1 404 Not Found');
        die('404 - Not Found');
}

В.htaccess в корне web

ErrorDocument 404 /yourFile.php

Проще всего было бы добавить пользовательский редирект 404 в htaccess.

Просто добавьте что-то вроде этого:

ErrorDocument 404 /errors/404.php

К а .htaccess (при необходимости создайте его) в корне приложения. И все страницы запроса к none extistent будут перенаправлены на вашу собственную страницу 404.