/** * Append the correct ErrorDocument path for Apache hosts */ public static function updateHtaccess() { // From CLI we don't know the defined web root. Thus we can't write any // directives into the .htaccess file. if (\OC::$CLI) { return; } $setupHelper = new \OC\Setup(\OC::$server->getConfig(), \OC::$server->getIniWrapper(), \OC::$server->getL10N('lib'), new \OC_Defaults(), \OC::$server->getLogger(), \OC::$server->getSecureRandom()); $htaccessContent = file_get_contents($setupHelper->pathToHtaccess()); $content = ''; if (strpos($htaccessContent, 'ErrorDocument 403') === false) { //custom 403 error page $content .= "\nErrorDocument 403 " . \OC::$WEBROOT . "/core/templates/403.php"; } if (strpos($htaccessContent, 'ErrorDocument 404') === false) { //custom 404 error page $content .= "\nErrorDocument 404 " . \OC::$WEBROOT . "/core/templates/404.php"; } // Add rewrite base $webRoot = !empty(\OC::$WEBROOT) ? \OC::$WEBROOT : '/'; $content .= "\n<IfModule mod_rewrite.c>"; $content .= "\n RewriteBase " . $webRoot; $content .= "\n <IfModule mod_env.c>"; $content .= "\n SetEnv front_controller_active true"; $content .= "\n <IfModule mod_dir.c>"; $content .= "\n DirectorySlash off"; $content .= "\n </IfModule>"; $content .= "\n </IfModule>"; $content .= "\n</IfModule>"; if ($content !== '') { //suppress errors in case we don't have permissions for it @file_put_contents($setupHelper->pathToHtaccess(), $content . "\n", FILE_APPEND); } }
/** * Append the correct ErrorDocument path for Apache hosts */ public static function updateHtaccess() { $config = \OC::$server->getConfig(); // For CLI read the value from overwrite.cli.url if (\OC::$CLI) { $webRoot = $config->getSystemValue('overwrite.cli.url', ''); if ($webRoot === '') { return; } $webRoot = parse_url($webRoot, PHP_URL_PATH); $webRoot = rtrim($webRoot, '/'); } else { $webRoot = !empty(\OC::$WEBROOT) ? \OC::$WEBROOT : '/'; } $setupHelper = new \OC\Setup($config, \OC::$server->getIniWrapper(), \OC::$server->getL10N('lib'), new \OC_Defaults(), \OC::$server->getLogger(), \OC::$server->getSecureRandom()); $htaccessContent = file_get_contents($setupHelper->pathToHtaccess()); $content = "#### DO NOT CHANGE ANYTHING ABOVE THIS LINE ####\n"; $htaccessContent = explode($content, $htaccessContent, 2)[0]; //custom 403 error page $content .= "\nErrorDocument 403 " . $webRoot . "/core/templates/403.php"; //custom 404 error page $content .= "\nErrorDocument 404 " . $webRoot . "/core/templates/404.php"; // Add rewrite rules if the RewriteBase is configured $rewriteBase = $config->getSystemValue('htaccess.RewriteBase', ''); if ($rewriteBase !== '') { $content .= "\n<IfModule mod_rewrite.c>"; $content .= "\n Options -MultiViews"; $content .= "\n RewriteRule ^core/js/oc.js\$ index.php [PT,E=PATH_INFO:\$1]"; $content .= "\n RewriteRule ^core/preview.png\$ index.php [PT,E=PATH_INFO:\$1]"; $content .= "\n RewriteCond %{REQUEST_FILENAME} !\\.(css|js|svg|gif|png|html|ttf|woff|ico|jpg|jpeg)\$"; $content .= "\n RewriteCond %{REQUEST_FILENAME} !core/img/favicon.ico\$"; $content .= "\n RewriteCond %{REQUEST_FILENAME} !/remote.php"; $content .= "\n RewriteCond %{REQUEST_FILENAME} !/public.php"; $content .= "\n RewriteCond %{REQUEST_FILENAME} !/cron.php"; $content .= "\n RewriteCond %{REQUEST_FILENAME} !/core/ajax/update.php"; $content .= "\n RewriteCond %{REQUEST_FILENAME} !/status.php"; $content .= "\n RewriteCond %{REQUEST_FILENAME} !/ocs/v1.php"; $content .= "\n RewriteCond %{REQUEST_FILENAME} !/ocs/v2.php"; $content .= "\n RewriteCond %{REQUEST_FILENAME} !/updater/"; $content .= "\n RewriteCond %{REQUEST_FILENAME} !/ocs-provider/"; $content .= "\n RewriteCond %{REQUEST_URI} !^/.well-known/acme-challenge/.*"; $content .= "\n RewriteRule . index.php [PT,E=PATH_INFO:\$1]"; $content .= "\n RewriteBase " . $rewriteBase; $content .= "\n <IfModule mod_env.c>"; $content .= "\n SetEnv front_controller_active true"; $content .= "\n <IfModule mod_dir.c>"; $content .= "\n DirectorySlash off"; $content .= "\n </IfModule>"; $content .= "\n </IfModule>"; $content .= "\n</IfModule>"; } if ($content !== '') { //suppress errors in case we don't have permissions for it @file_put_contents($setupHelper->pathToHtaccess(), $htaccessContent . $content . "\n"); } }
/** * Append the correct ErrorDocument path for Apache hosts */ public static function updateHtaccess() { $config = \OC::$server->getConfig(); // For CLI read the value from overwrite.cli.url if (\OC::$CLI) { $webRoot = $config->getSystemValue('overwrite.cli.url', ''); if ($webRoot === '') { return; } $webRoot = parse_url($webRoot, PHP_URL_PATH); $webRoot = rtrim($webRoot, '/'); } else { $webRoot = !empty(\OC::$WEBROOT) ? \OC::$WEBROOT : '/'; } $setupHelper = new \OC\Setup($config, \OC::$server->getIniWrapper(), \OC::$server->getL10N('lib'), new \OC_Defaults(), \OC::$server->getLogger(), \OC::$server->getSecureRandom()); $htaccessContent = file_get_contents($setupHelper->pathToHtaccess()); $content = "#### DO NOT CHANGE ANYTHING ABOVE THIS LINE ####\n"; if (strpos($htaccessContent, $content) === false) { //custom 403 error page $content .= "\nErrorDocument 403 " . $webRoot . "/core/templates/403.php"; //custom 404 error page $content .= "\nErrorDocument 404 " . $webRoot . "/core/templates/404.php"; // ownCloud may be configured to live at the root folder without a // trailing slash being specified. In this case manually set the // rewrite base to `/` $rewriteBase = $webRoot; if ($webRoot === '') { $rewriteBase = '/'; } // Add rewrite base $content .= "\n<IfModule mod_rewrite.c>"; $content .= "\n RewriteRule . index.php [PT,E=PATH_INFO:\$1]"; $content .= "\n RewriteBase " . $rewriteBase; $content .= "\n <IfModule mod_env.c>"; $content .= "\n SetEnv front_controller_active true"; $content .= "\n <IfModule mod_dir.c>"; $content .= "\n DirectorySlash off"; $content .= "\n </IfModule>"; $content .= "\n </IfModule>"; $content .= "\n</IfModule>"; if ($content !== '') { //suppress errors in case we don't have permissions for it @file_put_contents($setupHelper->pathToHtaccess(), $content . "\n", FILE_APPEND); } } }
/** * Append the correct ErrorDocument path for Apache hosts * * @throws \OC\HintException If .htaccess does not include the current version */ public static function updateHtaccess() { $setupHelper = new \OC\Setup(\OC::$server->getConfig(), \OC::$server->getIniWrapper(), \OC::$server->getL10N('lib'), new \OC_Defaults()); if (!$setupHelper->isCurrentHtaccess()) { throw new \OC\HintException('.htaccess file has the wrong version. Please upload the correct version. Maybe you forgot to replace it after updating?'); } $htaccessContent = file_get_contents($setupHelper->pathToHtaccess()); $content = ''; if (strpos($htaccessContent, 'ErrorDocument 403') === false) { //custom 403 error page $content .= "\nErrorDocument 403 " . \OC::$WEBROOT . "/core/templates/403.php"; } if (strpos($htaccessContent, 'ErrorDocument 404') === false) { //custom 404 error page $content .= "\nErrorDocument 404 " . \OC::$WEBROOT . "/core/templates/404.php"; } if ($content !== '') { //suppress errors in case we don't have permissions for it @file_put_contents($setupHelper->pathToHtaccess(), $content . "\n", FILE_APPEND); } }
/** * Append the correct ErrorDocument path for Apache hosts * * @throws \OC\HintException If .htaccess does not include the current version */ public static function updateHtaccess() { $setupHelper = new \OC\Setup(\OC::$server->getConfig(), \OC::$server->getIniWrapper(), \OC::$server->getL10N('lib'), new \OC_Defaults(), \OC::$server->getLogger(), \OC::$server->getSecureRandom()); if (!$setupHelper->isCurrentHtaccess()) { throw new \OC\HintException('.htaccess file has the wrong version. Please upload the correct version. Maybe you forgot to replace it after updating?'); } $htaccessContent = file_get_contents($setupHelper->pathToHtaccess()); $content = ''; if (strpos($htaccessContent, 'ErrorDocument 403') === false) { //custom 403 error page $content .= "\nErrorDocument 403 " . \OC::$WEBROOT . "/core/templates/403.php"; } if (strpos($htaccessContent, 'ErrorDocument 404') === false) { //custom 404 error page $content .= "\nErrorDocument 404 " . \OC::$WEBROOT . "/core/templates/404.php"; } // Add rewrite base $webRoot = !empty(\OC::$WEBROOT) ? \OC::$WEBROOT : '/'; $content .= "\n<IfModule mod_rewrite.c>"; $content .= "\n RewriteBase " . $webRoot; $content .= "\n <IfModule mod_env.c>"; $content .= "\n SetEnv front_controller_active true"; $content .= "\n </IfModule>"; $content .= "\n</IfModule>"; if ($content !== '') { //suppress errors in case we don't have permissions for it @file_put_contents($setupHelper->pathToHtaccess(), $content . "\n", FILE_APPEND); } }