Troisième étape : Le script 404.php
Vous trouverez ce script à la racine du site.
C'est ce script qui est responsable de la recherche d'une page par son numéro et de l'affichage de la 404.html le cas échéant.
Trouvez dans ce script le code suivant qui se trouve vers la ligne 70
Code :
//do redirection to page if founded
if ($redirectTo) {
header('HTTP/1.x 301 Moved Permanently', true, 301);
header('Location: '.$redirectTo.($_SERVER['REDIRECT_QUERY_STRING'] ? '?'.$_SERVER['REDIRECT_QUERY_STRING'] : ''));
exit;
}
Placez juste avant le code suivant
Code :
// Search 404 page...
if (!$redirectTo) {
$path = $_SERVER["DOCUMENT_ROOT"].'/web';
$pattern404 = "#^([0-9]+)-404-#U";
$directory = openDir($path);
while ($file = readDir($directory)) {
if (!is_dir($path.'/'.$file)) {
preg_match($pattern404, $file, $requestedPageId);
if (sensitiveIO::IsPositiveInteger($requestedPageId[1])) {
//include needed classes
require_once(PATH_PACKAGES_FS."/workflow/resource.php");
require_once(PATH_PACKAGES_FS."/workflow/resourcestatus.php");
require_once(PATH_PACKAGES_FS."/common.php");
require_once(PATH_PACKAGES_FS."/tree/tree.php");
require_once(PATH_PACKAGES_FS."/tree/page.php");
require_once(PATH_PACKAGES_FS."/tree/website.php");
require_once(PATH_PACKAGES_FS."/tree/websitescatalog.php");
//try to instanciate the requested page
$page = new CMS_page($requestedPageId[1]);
if (!$page->hasError()) {
//get page file
$pageURL = $page->getURL(false , false, PATH_RELATIVETO_FILESYSTEM);
if (file_exists($pageURL)) {
$redirectTo = $page->getURL(false);
} else {
//try to get direct html file
$pageURL = $page->getHTMLURL(false , false, PATH_RELATIVETO_FILESYSTEM);
if (file_exists($pageURL)) {
$redirectTo = $page->getHTMLURL(false);
}
}
}
}
}
}
}
Il s'inspire grandemant de l'existant en parcourant le répertoire /web/ à la recherche de cette page 404-xxx.php
Chrys.