From 7f5250421be4832b9679d8140bc4a71c8005dfa3 Mon Sep 17 00:00:00 2001 From: ArthurHoaro Date: Fri, 16 Oct 2020 12:47:11 +0200 Subject: [PATCH] Support using Shaarli without URL rewriting MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit - Shaarli can be fully used by prefixing any URL with /index.php/ - {$base_path} used in templates already works with this configuration - Assets path (outside of theme's assets) must be prefixed with {$root_url}/ - Documentation section in « Server configuration » Fixes #1590 --- application/render/PageBuilder.php | 4 +++- doc/md/Server-configuration.md | 16 ++++++++++++++++ plugins/archiveorg/archiveorg.php | 3 ++- plugins/qrcode/qrcode.php | 3 ++- tpl/default/daily.html | 2 +- tpl/default/includes.html | 4 ++-- tpl/default/linklist.html | 2 +- tpl/default/page.footer.html | 4 ++-- tpl/default/picwall.html | 2 +- tpl/default/pluginsadmin.html | 2 +- 10 files changed, 31 insertions(+), 11 deletions(-) diff --git a/application/render/PageBuilder.php b/application/render/PageBuilder.php index 41b357dd..2d6d2dbe 100644 --- a/application/render/PageBuilder.php +++ b/application/render/PageBuilder.php @@ -174,10 +174,12 @@ class PageBuilder } } + $rootPath = preg_replace('#/index\.php$#', '', $basePath); $this->assign('base_path', $basePath); + $this->assign('root_path', $rootPath); $this->assign( 'asset_path', - $basePath . '/' . + $rootPath . '/' . rtrim($this->conf->get('resource.raintpl_tpl', 'tpl'), '/') . '/' . $this->conf->get('resource.theme', 'default') ); diff --git a/doc/md/Server-configuration.md b/doc/md/Server-configuration.md index 14070c8a..73302bc6 100644 --- a/doc/md/Server-configuration.md +++ b/doc/md/Server-configuration.md @@ -362,7 +362,23 @@ sudo systemctl reload nginx If Shaarli is hosted on a server behind a [reverse proxy](https://en.wikipedia.org/wiki/Reverse_proxy) (i.e. there is a proxy server between clients and the web server hosting Shaarli), configure it accordingly. See [Reverse proxy](Reverse-proxy.md) configuration. +## Using Shaarli without URL rewriting +By default, Shaarli uses Slim framework's URL, which requires +URL rewriting. + +If you can't use URL rewriting for any reason (not supported by +your web server, shared hosting, etc.), you *can* use Shaarli +without URL rewriting. + +You just need to prefix your URL by `/index.php/`. +Example: instead of accessing `https://shaarli.mydomain.org/`, +use `https://shaarli.mydomain.org/index.php/`. + +**Recommended:** + * after installation, in the configuration page, set your header link to `/index.php/`. + * in you `config.json.php` set `general.root_url` to + `https://shaarli.mydomain.org/index.php/`. ## Allow import of large browser bookmarks export diff --git a/plugins/archiveorg/archiveorg.php b/plugins/archiveorg/archiveorg.php index 922b5966..a7b595e1 100644 --- a/plugins/archiveorg/archiveorg.php +++ b/plugins/archiveorg/archiveorg.php @@ -17,7 +17,8 @@ use Shaarli\Plugin\PluginManager; function hook_archiveorg_render_linklist($data) { $archive_html = file_get_contents(PluginManager::$PLUGINS_PATH . '/archiveorg/archiveorg.html'); - $path = ($data['_BASE_PATH_'] ?? '') . '/' . PluginManager::$PLUGINS_PATH; + $rootPath = preg_replace('#/index\.php$#', '', $data['_BASE_PATH_'] ?? ''); + $path = $rootPath . '/' . PluginManager::$PLUGINS_PATH; foreach ($data['links'] as &$value) { $isNote = startsWith($value['real_url'], '/shaare/'); diff --git a/plugins/qrcode/qrcode.php b/plugins/qrcode/qrcode.php index 95499e39..45712859 100644 --- a/plugins/qrcode/qrcode.php +++ b/plugins/qrcode/qrcode.php @@ -19,7 +19,8 @@ function hook_qrcode_render_linklist($data) { $qrcode_html = file_get_contents(PluginManager::$PLUGINS_PATH . '/qrcode/qrcode.html'); - $path = ($data['_BASE_PATH_'] ?? '') . '/' . PluginManager::$PLUGINS_PATH; + $rootPath = preg_replace('#/index\.php$#', '', $data['_BASE_PATH_'] ?? ''); + $path = $rootPath . '/' . PluginManager::$PLUGINS_PATH; foreach ($data['links'] as &$value) { $qrcode = sprintf( $qrcode_html, diff --git a/tpl/default/daily.html b/tpl/default/daily.html index 3ab8053f..3749bffb 100644 --- a/tpl/default/daily.html +++ b/tpl/default/daily.html @@ -76,7 +76,7 @@ {if="$thumbnails_enabled && !empty($link.thumbnail)"}
- thumbnail
diff --git a/tpl/default/includes.html b/tpl/default/includes.html index 09768ac4..3e3fb664 100644 --- a/tpl/default/includes.html +++ b/tpl/default/includes.html @@ -12,10 +12,10 @@ {/if} {loop="$plugins_includes.css_files"} - + {/loop} {if="is_file('data/user.css')"} - + {/if} diff --git a/tpl/default/linklist.html b/tpl/default/linklist.html index b08773d8..e1fb54dd 100644 --- a/tpl/default/linklist.html +++ b/tpl/default/linklist.html @@ -140,7 +140,7 @@
{ignore}RainTPL hack: put the 2 src on two different line to avoid path replace bug{/ignore} diff --git a/tpl/default/page.footer.html b/tpl/default/page.footer.html index 51bdb2f0..ea84aab9 100644 --- a/tpl/default/page.footer.html +++ b/tpl/default/page.footer.html @@ -10,7 +10,7 @@ {/if} · {'The personal, minimalist, super-fast, database free, bookmarking service'|t} {'by the Shaarli community'|t} · - {'Documentation'|t} + {'Documentation'|t} {loop="$plugins_footer.text"} {$value} {/loop} @@ -25,7 +25,7 @@ {/loop} {loop="$plugins_footer.js_files"} - + {/loop}