summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorLukas Reschke <lukas@owncloud.com>2015-02-11 01:10:03 +0100
committerLukas Reschke <lukas@owncloud.com>2015-12-01 16:46:07 +0100
commit2515cb17be18da4aee32167259ee75fdc7a5a56b (patch)
tree38635a8d2181478f8200c5bb7dea96b26c184822 /lib
parent74e8c25a5b48eb4b675de262ced1702dec4307f4 (diff)
downloadnextcloud-server-2515cb17be18da4aee32167259ee75fdc7a5a56b.tar.gz
nextcloud-server-2515cb17be18da4aee32167259ee75fdc7a5a56b.zip
Support pretty URLs
This changeset allows ownCloud to run with pretty URLs, they will be used if mod_rewrite and mod_env are available. This means basically that the `index.php` in the URL is not shown to the user anymore. Also the not deprecated functions to generate URLs have been modified to support this behaviour, old functions such as `filePath` will still behave as before for compatibility reasons. Examples: http://localhost/owncloud/index.php/s/AIDyKbxiRZWAAjP => http://localhost/owncloud/s/AIDyKbxiRZWAAjP http://localhost/owncloud/index.php/apps/files/ => http://localhost/owncloud/apps/files/ Due to the way our CSS and JS is structured the .htaccess uses some hacks for the final result but could be worse... And I was just annoyed by all that users crying for the removal of `index.php` ;-)
Diffstat (limited to 'lib')
-rw-r--r--lib/private/route/router.php8
-rw-r--r--lib/private/setup.php6
-rw-r--r--lib/private/urlgenerator.php2
-rw-r--r--lib/private/util.php7
4 files changed, 20 insertions, 3 deletions
diff --git a/lib/private/route/router.php b/lib/private/route/router.php
index 6d3b7c742bb..25860ee46bf 100644
--- a/lib/private/route/router.php
+++ b/lib/private/route/router.php
@@ -85,9 +85,15 @@ class Router implements IRouter {
*/
protected $logger;
+ /**
+ * @param ILogger $logger
+ */
public function __construct(ILogger $logger) {
$this->logger = $logger;
- $baseUrl = \OC_Helper::linkTo('', 'index.php');
+ $baseUrl = \OC::$WEBROOT;
+ if(!(getenv('front_controller_active') === 'true')) {
+ $baseUrl = \OC_Helper::linkTo('', 'index.php');
+ }
if (!\OC::$CLI) {
$method = $_SERVER['REQUEST_METHOD'];
} else {
diff --git a/lib/private/setup.php b/lib/private/setup.php
index 8f1ae389e45..1f91240e9da 100644
--- a/lib/private/setup.php
+++ b/lib/private/setup.php
@@ -432,6 +432,12 @@ class Setup {
//custom 404 error page
$content.= "\nErrorDocument 404 ".\OC::$WEBROOT."/core/templates/404.php";
}
+
+ // Add rewrite base
+ $content.="\n<IfModule mod_rewrite.c>";
+ $content.="\n RewriteBase ".\OC::$WEBROOT;
+ $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);
diff --git a/lib/private/urlgenerator.php b/lib/private/urlgenerator.php
index 428a222f9c7..fb1ea737ef4 100644
--- a/lib/private/urlgenerator.php
+++ b/lib/private/urlgenerator.php
@@ -90,7 +90,7 @@ class URLGenerator implements IURLGenerator {
* Returns a url to the given app and file.
*/
public function linkTo( $app, $file, $args = array() ) {
- $frontControllerActive=($this->config->getSystemValue('front_controller_active', 'false') == 'true');
+ $frontControllerActive = (getenv('front_controller_active') === 'true');
if( $app != '' ) {
$app_path = \OC_App::getAppPath($app);
diff --git a/lib/private/util.php b/lib/private/util.php
index 84a8c49c383..5466082d030 100644
--- a/lib/private/util.php
+++ b/lib/private/util.php
@@ -1073,7 +1073,12 @@ class OC_Util {
break;
}
}
- $location = $urlGenerator->getAbsoluteURL('/index.php/apps/' . $appId . '/');
+
+ if(getenv('front_controller_active') === 'true') {
+ $location = $urlGenerator->getAbsoluteURL('/apps/' . $appId . '/');
+ } else {
+ $location = $urlGenerator->getAbsoluteURL('/index.php/apps/' . $appId . '/');
+ }
}
}
return $location;