aboutsummaryrefslogtreecommitdiff
path: root/engine/handlers/page_handler.php
blob: 491a1b20072dc5fec7a5a036a5d58c8a0c1fe35e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<?php
/**
 * Pages handler.
 *
 * This file dispatches pages.  It is called via a URL rewrite in .htaccess
 * from http://site/handler/page1/page2.  The first element after site/ is
 * the page handler name as registered by {@link elgg_register_page_handler()}.
 * The rest of the string is sent to {@link page_handler()}.
 * 
 * Note that the following handler names are reserved by elgg and should not be
 * registered by any plugins:
 *  * action
 *  * cache
 *  * services
 *  * export
 *  * mt
 *  * xml-rpc.php
 *  * rewrite.php
 *  * tag (deprecated, reserved for backwards compatibility)
 *  * pg (deprecated, reserved for backwards compatibility)
 *
 * {@link page_handler()} explodes the pages string by / and sends it to
 * the page handler function as registered by {@link elgg_register_page_handler()}.
 * If a valid page handler isn't found, plugins have a chance to provide a 404.
 *
 * @package Elgg.Core
 * @subpackage PageHandler
 * @link http://docs.elgg.org/Tutorials/PageHandlers
 */

require_once(dirname(dirname(__FILE__)) . "/start.php");

$url = current_page_url();
$new_url = preg_replace('#/pg/#', '/', $url);

if ($url !== $new_url) {
	header("HTTP/1.1 301 Moved Permanently"); 
	header("Location: $new_url"); 
}

$handler = get_input('handler');
$page = get_input('page');

if (!page_handler($handler, $page)) {
	forward('', '404');
}