Перенаправить на страницу с тем же именем в структуре каталогов до изменения пути - PullRequest
0 голосов
/ 13 ноября 2011

Ну, скажем, у меня есть несколько HTML-страниц в моей сети. Дело в том, что я иногда делаю изменения в структуре каталогов, поэтому, когда кто-нибудь пытается получить доступ к определенному URL, возможно, что такой URL не завершится. Имена файлов не меняются, но меняются и пути.

Насколько мне известно, сервер выводит пользователя на страницу «404», которую можно настроить. Можно ли настроить страницу таким образом?

  1. Пользователь пытается oneweb.com/oldpath/page.html; которого не существует.
  2. Запущена настроенная страница 404
  3. 404 страница запускает скрипт. ЭТО ВОЗМОЖНО?
  4. Сценарию присваивается имя файла, ГДЕ ХРАНИЛО ТАКОЕ ИМЯ?
  5. Скрипт ищет всю структуру каталогов, чтобы найти page.html КАК ДОСТУП К СТРУКТУРЕ
  6. Файл найден и новый URL сохранен: oneweb.com/newpath/page.html
  7. появляется ссылка, показывающая новый URL

Может быть, этот процесс относительно распространен, и я могу найти некоторый связанный код или учебник?

1 Ответ

1 голос
/ 13 ноября 2011

Используете ли вы Apache?Linux?

Добавить обработчик 404

ErrorDocument 404 /404.php

Затем используйте 404.php для анализа URL.Этот простой пример просто захватывает все после последнего / в URI, поэтому http://example.com/foo/bar/page.html поместит page.html в $ url:

$url = end(explode('/', $_SERVER['REQUEST_URI']));

Затем используйте одну из функций примера комментария в http://php.net/manual/en/function.readdir.php для поиска в вашем каталоге и поиска файла.

Затем выполните перенаправление заголовка 301

header ('HTTP/1.1 301 Moved Permanently');
header ('Location: http://example.com/' . $file_path);
...