diff options
Diffstat (limited to 'includes/RawPage.php')
-rw-r--r-- | includes/RawPage.php | 35 |
1 files changed, 6 insertions, 29 deletions
diff --git a/includes/RawPage.php b/includes/RawPage.php index b422d49e..8e515af3 100644 --- a/includes/RawPage.php +++ b/includes/RawPage.php @@ -2,7 +2,7 @@ /** * Copyright (C) 2004 Gabriel Wicke <wicke@wikidev.net> * http://wikidev.net/ - * Based on PageHistory and SpecialExport + * Based on HistoryPage and SpecialExport * * License: GPL (http://www.gnu.org/copyleft/gpl.html) * @@ -109,34 +109,9 @@ class RawPage { } function view() { - global $wgOut, $wgScript; + global $wgOut, $wgScript, $wgRequest; - if( isset( $_SERVER['SCRIPT_URL'] ) ) { - # Normally we use PHP_SELF to get the URL to the script - # as it was called, minus the query string. - # - # Some sites use Apache rewrite rules to handle subdomains, - # and have PHP set up in a weird way that causes PHP_SELF - # to contain the rewritten URL instead of the one that the - # outside world sees. - # - # If in this mode, use SCRIPT_URL instead, which mod_rewrite - # provides containing the "before" URL. - $url = $_SERVER['SCRIPT_URL']; - } else { - $url = $_SERVER['PHP_SELF']; - } - - if( $url == '' ) { - # This will make the next check fail with a confusing error - # message, so we should mention it separately. - wfHttpError( 500, 'Internal Server Error', - "\$_SERVER['PHP_SELF'] is not set. Perhaps you're using CGI" . - " and haven't set cgi.fix_pathinfo = 1 in php.ini?" ); - return; - } - - if( strcmp( $wgScript, $url ) ) { + if( $wgRequest->isPathInfoBad() ) { # Internet Explorer will ignore the Content-Type header if it # thinks it sees a file extension it recognizes. Make sure that # all raw requests are done through the script node, which will @@ -150,6 +125,7 @@ class RawPage { # # Just return a 403 Forbidden and get it over with. wfHttpError( 403, 'Forbidden', + 'Invalid file extension found in PATH_INFO. ' . 'Raw pages must be accessed through the primary script entry point.' ); return; } @@ -159,7 +135,8 @@ class RawPage { $mode = $this->mPrivateCache ? 'private' : 'public'; header( 'Cache-Control: '.$mode.', s-maxage='.$this->mSmaxage.', max-age='.$this->mMaxage ); - if( HTMLFileCache::useFileCache() ) { + global $wgUseFileCache; + if( $wgUseFileCache and HTMLFileCache::useFileCache() ) { $cache = new HTMLFileCache( $this->mTitle, 'raw' ); if( $cache->isFileCacheGood( /* Assume up to date */ ) ) { $cache->loadFromFileCache(); |