mirror of
https://tildegit.org/sbgodin/HtmGem.git
synced 2023-08-25 13:53:12 +02:00
Enables browsing without URL Rewriting
This commit is contained in:
parent
733450cb35
commit
9471c43674
@ -1,4 +1,5 @@
|
|||||||
# Advanced configuration
|
# Advanced configuration
|
||||||
|
❗️ This page works with URL rewriting enabled ❗️
|
||||||
|
|
||||||
By default, the same style is used for all the pages, //htmgem/css/htmgem.css//, except when a file having the same name as the page but with the extension **.css** exists in the same directory. In such as case, it's used.
|
By default, the same style is used for all the pages, //htmgem/css/htmgem.css//, except when a file having the same name as the page but with the extension **.css** exists in the same directory. In such as case, it's used.
|
||||||
|
|
||||||
@ -16,15 +17,13 @@ Modifying the web server configuration works but it's rather heavy. It's possibl
|
|||||||
> https://site.tld/htmgem/index.php?url=/url/page.gmi&style=<…>
|
> https://site.tld/htmgem/index.php?url=/url/page.gmi&style=<…>
|
||||||
|
|
||||||
It's also possible to make a URL rewriting which incorporate the style:
|
It's also possible to make a URL rewriting which incorporate the style:
|
||||||
> rewrite ^(.+\.gmi)$ /htmgem/?url=$1;
|
> rewrite ^(.+\.gmi)$ /htmgem/index.php?rw=1&url=$1;
|
||||||
> rewrite ^(.+\.gmi)\ *\|\ *([\w_]+)$ /htmgem/?url=$1&style=$2;
|
> rewrite ^(.+\.gmi)\ *\|\ *([\w_]+)$ /htmgem/index.php?rw=1&url=$1&style=$2;
|
||||||
|
|
||||||
For instance, when it's activated:
|
For instance, when it's activated:
|
||||||
=> configuration-en.gmi%20|%20pre Shows the readable source code on the screen, using the markup **<pre>**.
|
=> configuration-en.gmi%20|%20pre Shows the readable source code on the screen, using the markup **<pre>**.
|
||||||
=> configuration-en.gmi%20|%20source configuration-en.gmi | source : Downloads the source code.
|
=> configuration-en.gmi%20|%20source configuration-en.gmi | source : Downloads the source code.
|
||||||
|
|
||||||
=> ../css Sélecteur de style : the page containing the style allows to test them 😎
|
|
||||||
|
|
||||||
### With style already included…
|
### With style already included…
|
||||||
|
|
||||||
=> configuration-en.gmi%20|%20htmgem Style //HtmGem//, the default style
|
=> configuration-en.gmi%20|%20htmgem Style //HtmGem//, the default style
|
||||||
@ -35,6 +34,8 @@ For instance, when it's activated:
|
|||||||
=> configuration-en.gmi%20|%20raw Style //raw//
|
=> configuration-en.gmi%20|%20raw Style //raw//
|
||||||
=> configuration-en.gmi%20|%20debug Style //debug//
|
=> configuration-en.gmi%20|%20debug Style //debug//
|
||||||
|
|
||||||
|
=> ../css Style selector: the page containing the style allows to test them 😎
|
||||||
|
|
||||||
## Text decoration
|
## Text decoration
|
||||||
|
|
||||||
The text decoration, which interprets the **bold** for instance, is not part of GemText definition. The text decoration applies everywhere except on the titles and preformated texts.
|
The text decoration, which interprets the **bold** for instance, is not part of GemText definition. The text decoration applies everywhere except on the titles and preformated texts.
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
# Configuration avancée
|
# Configuration avancée
|
||||||
|
❗️ Cette page fonctionne avec la réécriture d’URL activée ❗️
|
||||||
|
|
||||||
Par défaut, le même style est utilisé pour toutes les pages, //htmgem/css/htmgem.css//, sauf lorsqu’un fichier ayant le même nom que la page mais avec l’extension **.css** existe dans le même répertoire. Dans ce cas, il est utilisé.
|
Par défaut, le même style est utilisé pour toutes les pages, //htmgem/css/htmgem.css//, sauf lorsqu’un fichier ayant le même nom que la page mais avec l’extension **.css** existe dans le même répertoire. Dans ce cas, il est utilisé.
|
||||||
|
|
||||||
@ -16,15 +17,13 @@ Modifier la configuration du serveur web fonctionne mais est assez lourd. On peu
|
|||||||
> https://site.tld/htmgem/index.php?url=/url/page.gmi&style=<…>
|
> https://site.tld/htmgem/index.php?url=/url/page.gmi&style=<…>
|
||||||
|
|
||||||
Il est aussi possible de faire une réécriture d’URL qui intègre le style :
|
Il est aussi possible de faire une réécriture d’URL qui intègre le style :
|
||||||
> rewrite ^(.+\.gmi)$ /htmgem/?url=$1;
|
> rewrite ^(.+\.gmi)$ /htmgem/index.php?rw=1&url=$1;
|
||||||
> rewrite ^(.+\.gmi)\ *\|\ *([\w_]+)$ /htmgem/?url=$1&style=$2;
|
> rewrite ^(.+\.gmi)\ *\|\ *([\w_]+)$ /htmgem/index.php?rw=1&url=$1&style=$2;
|
||||||
|
|
||||||
Par exemple, lorsque ce sera activé :
|
Par exemple, lorsque ce sera activé :
|
||||||
=> configuration-fr.gmi%20|%20pre Produit le code source de façon lisble à l’écran en utilisant la balise **<pre>**.
|
=> configuration-fr.gmi%20|%20pre Produit le code source de façon lisble à l’écran en utilisant la balise **<pre>**.
|
||||||
=> configuration-fr.gmi%20|%20source configuration-fr.gmi | source : Téléverse le code source.
|
=> configuration-fr.gmi%20|%20source configuration-fr.gmi | source : Téléverse le code source.
|
||||||
|
|
||||||
=> ../css Sélecteur de style : la page contenant les styles permet de les essayer 😎
|
|
||||||
|
|
||||||
### Avec les styles déjà fournis…
|
### Avec les styles déjà fournis…
|
||||||
|
|
||||||
=> configuration-fr.gmi%20|%20htmgem Style //HtmHem//, le style par défaut
|
=> configuration-fr.gmi%20|%20htmgem Style //HtmHem//, le style par défaut
|
||||||
@ -35,6 +34,8 @@ Par exemple, lorsque ce sera activé :
|
|||||||
=> configuration-fr.gmi%20|%20raw Style //brut//
|
=> configuration-fr.gmi%20|%20raw Style //brut//
|
||||||
=> configuration-fr.gmi%20|%20debug Style //debug//
|
=> configuration-fr.gmi%20|%20debug Style //debug//
|
||||||
|
|
||||||
|
=> ../css Sélecteur de style : la page contenant les styles permet de les essayer 😎
|
||||||
|
|
||||||
## Décoration du texte
|
## Décoration du texte
|
||||||
|
|
||||||
La décoration du texte, qui interprête le **gras** par exemple, ne fait pas partie de la définition de GemText. La décoration du texte s’applique partout sauf sur les titres et blocs préformatés.
|
La décoration du texte, qui interprête le **gras** par exemple, ne fait pas partie de la définition de GemText. La décoration du texte s’applique partout sauf sur les titres et blocs préformatés.
|
||||||
|
@ -18,16 +18,16 @@ To run HtmGem — after having copied the files — there is nothing to do but t
|
|||||||
### Nginx
|
### Nginx
|
||||||
```
|
```
|
||||||
# This text must be placed in the server's configuration
|
# This text must be placed in the server's configuration
|
||||||
index index.php index.gmi index.html
|
index index.gmi index.php index.html
|
||||||
rewrite ^(.+\.gmi)$ htmgem/?url=$1;
|
rewrite ^(.+\.gmi)$ htmgem/index.php?rw=1&url=$1;
|
||||||
```
|
```
|
||||||
|
|
||||||
### Apache
|
### Apache
|
||||||
```
|
```
|
||||||
# This text can be placed at the root of the web site in a file ".htaccess".
|
# This text can be placed at the root of the web site in a file ".htaccess".
|
||||||
DirectoryIndex index.php index.gmi index.html
|
DirectoryIndex index.gmi index.php index.html
|
||||||
RewriteEngine on
|
RewriteEngine on
|
||||||
RewriteRule ^(.+\.gmi)$ htmgem/?url=$1
|
RewriteRule ^(.+\.gmi)$ htmgem/index.php?rw=1&url=$1
|
||||||
```
|
```
|
||||||
|
|
||||||
Afterwards,
|
Afterwards,
|
||||||
|
@ -18,16 +18,16 @@ Pour faire fonctionner HtmGem — après avoir copié les fichiers — il ne res
|
|||||||
### Nginx
|
### Nginx
|
||||||
```
|
```
|
||||||
# Ce texte doit être placé dans la configuration du serveur.
|
# Ce texte doit être placé dans la configuration du serveur.
|
||||||
index index.php index.gmi index.html
|
index index.gmi index.php index.html
|
||||||
rewrite ^(.+\.gmi)$ htmgem/?url=$1;
|
rewrite ^(.+\.gmi)$ htmgem/index.php?rw=1&url=$1;
|
||||||
```
|
```
|
||||||
|
|
||||||
### Apache
|
### Apache
|
||||||
```
|
```
|
||||||
# Ce texte peut se placer à la racine du site dans un fichier ".htaccess".
|
# Ce texte peut se placer à la racine du site dans un fichier ".htaccess".
|
||||||
DirectoryIndex index.php index.gmi index.html
|
DirectoryIndex index.gmi index.php index.html
|
||||||
RewriteEngine on
|
RewriteEngine on
|
||||||
RewriteRule ^(.+\.gmi)$ htmgem/?url=$1
|
RewriteRule ^(.+\.gmi)$ htmgem/index.php?rw=1&url=$1
|
||||||
```
|
```
|
||||||
|
|
||||||
Par la suite,
|
Par la suite,
|
||||||
|
17
index.php
17
index.php
@ -4,6 +4,7 @@ require_once "lib-htmgem.php";
|
|||||||
|
|
||||||
# The url argument is always absolute compared to the document root.
|
# The url argument is always absolute compared to the document root.
|
||||||
$url = @$_REQUEST["url"];
|
$url = @$_REQUEST["url"];
|
||||||
|
$urlRewriting = @$_REQUEST["rw"]=="1";
|
||||||
|
|
||||||
/* Installation page
|
/* Installation page
|
||||||
*
|
*
|
||||||
@ -16,19 +17,25 @@ if (empty($url)) {
|
|||||||
http_response_code(403);
|
http_response_code(403);
|
||||||
die("<!-- index.gmi missing -->");
|
die("<!-- index.gmi missing -->");
|
||||||
}
|
}
|
||||||
$t = new \htmgem\GemTextTranslate_html(@file_get_contents("index.gmi"));
|
$t = new \htmgem\GemTextTranslate_html(@file_get_contents("index.gmi"), true, "/htmgem");
|
||||||
echo $t->getFullHtml();
|
echo $t->getFullHtml();
|
||||||
exit();
|
exit();
|
||||||
}
|
}
|
||||||
|
|
||||||
$documentRoot = $_SERVER['DOCUMENT_ROOT'];
|
$documentRoot = $_SERVER['DOCUMENT_ROOT'];
|
||||||
|
|
||||||
|
if (!preg_match("/\.gmi$/", $url)) {
|
||||||
|
if ($url[-1] == "/")
|
||||||
|
$url = $url."index.gmi";
|
||||||
|
else
|
||||||
|
$url = $url."/index.gmi";
|
||||||
|
}
|
||||||
|
|
||||||
# Removes the headling and trailling slashes, to be sure there's not any.
|
# Removes the headling and trailling slashes, to be sure there's not any.
|
||||||
$filePath = rtrim($_SERVER['DOCUMENT_ROOT'], "/")."/".ltrim($url, "/");
|
$filePath = rtrim($_SERVER['DOCUMENT_ROOT'], "/")."/".ltrim($url, "/");
|
||||||
|
|
||||||
switch(true) {
|
switch(true) {
|
||||||
case !realPath($filePath):
|
case !realPath($filePath):
|
||||||
case !preg_match("/\.gmi$/", $url): # not finishing by .gmi
|
|
||||||
case strpos($filePath, $documentRoot)!==0: # not in web directory
|
case strpos($filePath, $documentRoot)!==0: # not in web directory
|
||||||
$go404 = true;
|
$go404 = true;
|
||||||
// Says 404 even if the file exists to not give any information.
|
// Says 404 even if the file exists to not give any information.
|
||||||
@ -95,7 +102,11 @@ EOL;
|
|||||||
exit();
|
exit();
|
||||||
}
|
}
|
||||||
|
|
||||||
$t = new \htmgem\GemTextTranslate_html($fileContents, $textDecoration);
|
if ($urlRewriting)
|
||||||
|
$baseUrl = null;
|
||||||
|
else
|
||||||
|
$baseUrl = dirname($url);
|
||||||
|
$t = new \htmgem\GemTextTranslate_html($fileContents, $textDecoration, $baseUrl);
|
||||||
if ("none" == $style) {
|
if ("none" == $style) {
|
||||||
$t->addCss("");
|
$t->addCss("");
|
||||||
} elseif ("/" == @$style[0]) {
|
} elseif ("/" == @$style[0]) {
|
||||||
|
@ -182,7 +182,8 @@ class GemtextTranslate_html {
|
|||||||
protected $pageTitle = "";
|
protected $pageTitle = "";
|
||||||
public $translatedGemtext;
|
public $translatedGemtext;
|
||||||
|
|
||||||
function __construct($parsedGemtext, $textDecoration=true) {
|
function __construct($parsedGemtext, $textDecoration=true, $baseUrl=Null) {
|
||||||
|
$this->baseUrl = $baseUrl;
|
||||||
if (empty($parsedGemtext)) $parsedGemtext = "";
|
if (empty($parsedGemtext)) $parsedGemtext = "";
|
||||||
// to delete the last empty lines
|
// to delete the last empty lines
|
||||||
$parsedGemtext = rtrim($parsedGemtext);
|
$parsedGemtext = rtrim($parsedGemtext);
|
||||||
@ -262,6 +263,23 @@ class GemtextTranslate_html {
|
|||||||
$text = preg_replace("/ +/", " ", $text);
|
$text = preg_replace("/ +/", " ", $text);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected static function resolve_path($path) {
|
||||||
|
$absolute = "/"==$path[0];
|
||||||
|
$parts = array_filter(explode("/", $path), 'strlen');
|
||||||
|
$chuncks = array();
|
||||||
|
foreach ($parts as $part) {
|
||||||
|
if ('.' == $part) continue;
|
||||||
|
if ('..' == $part) {
|
||||||
|
array_pop($chuncks);
|
||||||
|
} else {
|
||||||
|
$chuncks[] = $part;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$output = implode("/", $chuncks);
|
||||||
|
if ($absolute) $output = "/".$output;
|
||||||
|
return $output;
|
||||||
|
}
|
||||||
|
|
||||||
public function translate($textDecoration=true) {
|
public function translate($textDecoration=true) {
|
||||||
$output = "";
|
$output = "";
|
||||||
foreach ($this->parsedGemtext as $node) {
|
foreach ($this->parsedGemtext as $node) {
|
||||||
@ -316,7 +334,14 @@ class GemtextTranslate_html {
|
|||||||
}
|
}
|
||||||
preg_match("/^([^:]+):/", $link, $matches);
|
preg_match("/^([^:]+):/", $link, $matches);
|
||||||
$protocol = @$matches[1];
|
$protocol = @$matches[1];
|
||||||
if (empty($protocol)) $protocol = "local";
|
if (empty($protocol)) {
|
||||||
|
$protocol = "local";
|
||||||
|
if (!is_null($this->baseUrl)) { // No URL rewriting
|
||||||
|
if ($link[0]!="/") $link = "{$this->baseUrl}/$link";
|
||||||
|
$link = self::resolve_path($link);
|
||||||
|
$link = "/htmgem/index.php?url=$link";
|
||||||
|
}
|
||||||
|
}
|
||||||
$output .= "<p><a class='$protocol' href='$link'>$linkText</a></p>\n";
|
$output .= "<p><a class='$protocol' href='$link'>$linkText</a></p>\n";
|
||||||
break;
|
break;
|
||||||
case "#":
|
case "#":
|
||||||
|
Loading…
Reference in New Issue
Block a user