'install', // was splitted among platforms (don't know where to redirect) 'install.apache' => 'install', 'install.apache2' => 'install', 'install.netscape-enterprise'=> 'install', 'install.otherhttpd' => 'install', // moved to platform sections 'install.caudium' => 'install.unix.caudium', 'install.commandline' => 'install.unix.commandline', 'install.fhttpd' => 'install.unix.fhttpd', 'install.hpux' => 'install.unix.hpux', 'install.iis' => 'install.windows.iis', 'install.linux' => 'install.unix', 'install.omnihttpd' => 'install.windows.omnihttpd', 'install.openbsd' => 'install.unix.openbsd', 'install.sambar' => 'install.windows.sambar', 'install.solaris' => 'install.unix.solaris', 'install.xitami' => 'install.windows.xitami', ); if (isset($manual_page_moves[$URI])) { status_header(301); mirror_redirect("/" . $manual_page_moves[$URI]); } elseif (preg_match("!^manual/([^/]+)/([^/]+).php$!", $URI, $match) && isset($manual_page_moves[$match[2]])) { status_header(301); mirror_redirect("/manual/$match[1]/" . $manual_page_moves[$match[2]] . ".php"); } // ============================================================================ // Define shortcuts for PHP files, manual pages and external redirects $uri_aliases = array ( # PHP page shortcuts "download" => "downloads", "getphp" => "downloads", "getdocs" => "download-docs", "documentation" => "docs", "mailinglists" => "mailing-lists", "mailinglist" => "mailing-lists", "changelog" => "ChangeLog-4", "gethelp" => "support", "help" => "support", "unsubscribe" => "unsub", "subscribe" => "mailing-lists", "logos" => "download-logos", # manual shortcuts "ini" => "configuration", "intro" => "introduction", "whatis" => "introduction", "whatisphp" => "introduction", "what_is_php" => "introduction", "windows" => "install.windows", "win32" => "install.windows", "globals" => "language.variables.predefined", "register_globals" => "security.globals", "registerglobals" => "security.globals", "manual/en/security.registerglobals.php" => "security.globals", // fix for 4.3.8 configure "magic_quotes" => "security.magicquotes", "magicquotes" => "security.magicquotes", "gd" => "image", "callback" => "language.pseudo-types", "number" => "language.pseudo-types", "mixed" => "language.pseudo-types", "bool" => "language.types.boolean", "boolean" => "language.types.boolean", "int" => "language.types.integer", "integer" => "language.types.integer", "float" => "language.types.float", "string" => "language.types.string", "heredoc" => "language.types.string", "<<<" => "language.types.string", "object" => "language.types.object", "null" => "language.types.null", "htaccess" => "configuration.changes", "php_value" => "configuration.changes", "ternary" => "language.operators.comparison", "instanceof" => "language.operators.type", "if" => "language.control-structures", "static" => "language.variables.scope", "global" => "language.variables.scope", "tut" => "tutorial", "tut.php" => "tutorial", // BC "faq.php" => "faq", // BC "bugs.php" => "bugs", // BC "bugstats.php" => "bugstats", // BC "icap" => "mcal", // mcal is the successor of icap "odbc" => "uodbc", // BC "_" => "function.gettext", "class" => "language.oop5.basic", "new" => "language.oop5.basic", "extends" => "language.oop5.basic", "construct" => "language.oop5.decon", "destruct" => "language.oop5.decon", "public" => "language.oop5.visibility", "private" => "language.oop5.visibility", "protected" => "language.oop5.visibility", "abstract" => "language.oop5.abstract", "interface" => "language.oop5.interfaces", "interfaces" => "language.oop5.interfaces", "autoload" => "language.oop5.autoload", "__autoload" => "language.oop5.autoload", "throw" => "language.exceptions", "try" => "language.exceptions", "catch" => "language.exceptions", "news.php" => "news-2004", // BC "readme.mirror" => "mirroring", // BC "php5" => "language.oop5", "zend_changes.txt" => "language.oop5", // BC "zend2_example.phps" => "language.oop5", // BC "zend_changes_php_5_0_0b2.txt" => "language.oop5", // BC "zend-engine-2" => "language.oop5", // BC "zend-engine-2.php" => "language.oop5", // BC "news_php_5_0_0b2.txt" => "ChangeLog-5", // BC "news_php_5_0_0b3.txt" => "ChangeLog-5", // BC "manual/about-notes.php" => "manual/add-note", // BC # external shortcut aliases ;) "dochowto" => "phpdochowto", "projects.php" => "projects", // BC ); $external_redirects = array( "php4news" => "http://cvs.php.net/cvs.php/php-src/NEWS?onb=1.1247.2", "php5news" => "http://cvs.php.net/co.php/php-src/NEWS?p=1", "projects" => "http://freshmeat.net/browse/183/", "pear" => "http://pear.php.net/", "bugs" => "http://bugs.php.net/", "bugstats" => "http://bugs.php.net/bugstats.php", "phpdochowto" => "http://doc.php.net/php/dochowto/", "getdochowto" => "http://doc.php.net/php/dochowto/howto.html.tar.gz", "rev" => "http://doc.php.net/php/$LANG/revcheck.php", //"blog" => "/manual/$LANG/build.log.gz", "functions.js.txt" => "http://cvs.php.net/cvs.php/phpdoc/scripts/quickref", ); // ============================================================================ // "Rewrite" the URL, if it was a shortcut if (isset($uri_aliases[$URI])) { $URI = $uri_aliases[$URI]; } // ============================================================================ // Redirect if the entered URI was a PHP page name (except the books page, // which we display in the mirror's language or the explicitly specified // language [see below]) if (!in_array($URI, array('books', 'mirror-info', 'error')) && file_exists($_SERVER['DOCUMENT_ROOT'] . "/$URI.php")) { mirror_redirect("/$URI.php"); } // ============================================================================ // Execute external redirect if a rule exists for the URI if (isset($external_redirects[$URI])) { mirror_redirect($external_redirects[$URI]); } // Temporary hack for books and mirror-info, until all the pages // will be capable of being included from anywhere if (in_array($URI, array('books', 'mirror-info'))) { status_header(200); include_once $_SERVER['DOCUMENT_ROOT'] . "/$URI.php"; } // ============================================================================ // Try to find the page using the preferred language as a manual page include_once $_SERVER['DOCUMENT_ROOT'] . "/include/manual-lookup.inc"; $try = find_manual_page($LANG, $URI); if ($try) { status_header(200); include_once $_SERVER['DOCUMENT_ROOT'] . $try; exit; } // ============================================================================ // 404 page for manual pages (eg. not built language) if (strpos($URI, "manual/") === 0) { error_404_manual(); } // ============================================================================ // If no match was found till this point, the last action is to start a // search with the URI the user typed in $fallback = (myphpnet_urlsearch() === MYPHPNET_URL_MANUAL ? "manual" : "quickref"); mirror_redirect( '/search.php?show=' . $fallback . '&lang=' . urlencode($LANG) . '&pattern=' . urlencode(substr($_SERVER['REQUEST_URI'], 1)) ); /* * vim:et */ ?>