перехват всех недействительных URL - PullRequest
4 голосов
/ 19 января 2011

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

Ответы [ 3 ]

7 голосов
/ 19 января 2011

Вы можете использовать пользовательский обработчик 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');
}
2 голосов
/ 19 января 2011

в .htaccess в корне сети

ErrorDocument 404 /yourFile.php
0 голосов
/ 19 января 2011

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

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

ErrorDocument 404 /errors/404.php

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

...