Problem beim Anzeigen der lokalen Plugin-Doku

Hier können Probleme und alles andere in Deutscher Sprache gelöst werden.
Post Reply
thh
Regular
Posts: 419
Joined: Thu Oct 26, 2006 2:38 pm
Location: Stuttgart, Germany
Contact:

Problem beim Anzeigen der lokalen Plugin-Doku

Post by thh »

Plugins können eine lokale Dokumentation hinterlegen, die dann den Namen documentation.html oder documentation_LL.html (mit LL = language, also de, en, ...) haben muss.

Ich habe jetzt festgestellt, dass diese Dokumentation teilweise angezeigt wird, teilweise aber auch die (bereits in anderem Zusammenhang berühmt-berüchtigte) Startseite des Blogs mit eingeblendeter 404-Fehlermeldung ("Die angeforderte Seite konnte nicht gefunden werden (404). Dies ist die Standardseite.") gezeigt wird. Ein System habe ich da noch nicht gefunden.

Beispiele:
* http://DOMAIN/plugins/serendipity_event ... on_de.html
Die Datei ist aber vorhanden:

Code: Select all

$ ls -l plugins/serendipity_event_spamblock_bayes/documentation_de.html
-rw-r--r-- 1 [...] plugins/serendipity_event_spamblock_bayes/documentation_de.html
* http://DOMAIN/plugins/serendipity_event ... on_de.html

Code: Select all

$ ls -l plugins/serendipity_event_gravatar/documentation_de.html
-rw-r--r-- 1 [...] plugins/serendipity_event_gravatar/documentation_de.html
* http://DOMAIN/plugins/serendipity_event ... on_en.html

Code: Select all

$ ls -l plugins/serendipity_event_imageselectorplus/documentation_en.html
-rw-r--r-- 1 [...] plugins/serendipity_event_imageselectorplus/documentation_en.html
Folgende Aufrufe hingegen sind erfolgreich:
* http://DOMAIN/plugins/serendipity_event ... on_en.html
* http://DOMAIN/plugins/serendipity_plugi ... on_de.html
* http://DOMAIN/plugins/serendipity_event ... on_en.html

Mir ist völlig unklar, warum manche Seiten angezeigt werden können, andere aber wieder nicht.

Hinzu kommt:

Rufe ich bei einem der Fehler-Beispiele (die ersten drei) eine gesichert nicht existierende Seite (wie documentation.html) auf, bleibt das Ergebnis gleich; es kommt die Startseite mit dem eingeblendeten 404er-Satz.

Rufe ich hingegen bei einem der funktionierenden Beispiele eine nicht existierende Seite auf, kommt die von mir in der Konfiguration (static pages) hinterlegte 404-Fehler-Seite.

Im Server-Log sehe ich auch keinen Unterschied:

Code: Select all

...  [09/Jul/2017:15:37:51 +0200] "GET /plugins/serendipity_plugin_twitter/documentation.html HTTP/1.1" 404 10356 "-" "Mozilla/5.0 ..."

... [09/Jul/2017:15:40:42 +0200] "GET /plugins/serendipity_event_spamblock_bayes/documentation.html HTTP/1.1" 404 23936 "-" "Mozilla/5.0 ..."
Beide (!) Dateien existieren nicht. Dennoch bekomme ich einmal meine 404er-Seite, einmal die Index-Seite mit 404er-Einblendung. - Rufe ich jetzt die existente (!) Doku von spamblock_bayes auf, bekomme ich denselben 404er im Log:

Code: Select all

... [09/Jul/2017:15:38:54 +0200] "GET /plugins/serendipity_event_spamblock_bayes/documentation_de.html HTTP/1.1" 404 20026 "-" "Mozilla/5.0 ..."
Kurz gesagt:

Bei den ersten drei Beispielen bekomme ich immer - ob die aufzurufende Seite existiert oder nicht - denselben Fehler (Startseite mit Einblendung). Das ist falsch.

Bei den letzten drei Beispielen bekomme ich entweder die richtige Datei oder die definierte 404er-Seite angezeigt. Das ist richtig.

Was zum Teufel unterscheidet die Beispiele?! Greift bei den ersten irgendein Redirect, der dann zum identischen Fehlschlag führt? Aber warum?

(Serendipity 2.1.1, PHP 5.4.45-0+deb7u8, alle Plugins aktuell)
thh
Regular
Posts: 419
Joined: Thu Oct 26, 2006 2:38 pm
Location: Stuttgart, Germany
Contact:

Re: Problem beim Anzeigen der lokalen Plugin-Doku

Post by thh »

Das Rewrite-Log ergibt tatsächlich folgendes:

... für /plugins/serendipity_event_spamblock_bayes/documentation_de.html:

Code: Select all

... [09/Jul/2017:20:28:11 +0200] [.../sid#7f7bc6576940][rid#7f7bb47040a0/initial] (2) [perdir ...] rewrite 'plugins/serendipity_event_spamblock_bayes/documentation_de.html' -> 'index.php?url=/plugins/serendipity_event_spamblock_bayes/documentation_de.html'
... für /plugins/serendipity_plugin_twitter/documentation_de.html:
Kein Eintrag - offenbar wird kein Rewrite getriggert.

Die .htaccess sieht (m.W. defaultmäßig) so aus:

Code: Select all

# BEGIN s9y
ErrorDocument 404 /index.php
DirectoryIndex /index.php
Options -MultiViews

RewriteEngine On
RewriteBase /
RewriteRule ^serendipity_admin.php serendipity_admin.php [NC,L,QSA]
RewriteRule ^((archives/([0-9]+)\-[0-9a-z\.\_!;,\+\-\%]+\.html)/?) index.php?/$1 [NC,L,QSA]
RewriteRule ^(authors/([0-9]+)\-[0-9a-z\.\_!;,\+\-\%]+) index.php?/$1 [NC,L,QSA]
RewriteRule ^(feeds/categories/([0-9;]+)\-[0-9a-z\.\_!;,\+\-\%]+\.rss) index.php?/$1 [NC,L,QSA]
RewriteRule ^(feeds/authors/([0-9]+)\-[0-9a-z\.\_!;,\+\-\%]+\.rss) index.php?/$1 [NC,L,QSA]
RewriteRule ^(categories/([0-9;]+)\-[0-9a-z\.\_!;,\+\-\%]+) index.php?/$1 [NC,L,QSA]
RewriteRule ^archives([/A-Za-z0-9]+)\.html index.php?url=/archives/$1.html [NC,L,QSA]
RewriteRule ^([0-9]+)[_\-][0-9a-z_\-]*\.html index.php?url=$1-article.html [L,NC,QSA]
RewriteRule ^feeds/(.*) index.php?url=/feeds/$1 [L,QSA]
RewriteRule ^unsubscribe/(.*)/([0-9]+) index.php?url=/unsubscribe/$1/$2 [L,QSA]
RewriteRule ^approve/(.*)/(.*)/([0-9]+) index.php?url=approve/$1/$2/$3 [L,QSA]
RewriteRule ^delete/(.*)/(.*)/([0-9]+) index.php?url=delete/$1/$2/$3 [L,QSA]
RewriteRule ^(admin|entries)(/.+)?$ index.php?url=admin/ [L,QSA]
RewriteRule ^archive/? index.php?url=/archive [L,QSA]
RewriteRule ^(index|atom[0-9]*|rss|b2rss|b2rdf).(rss|rdf|rss2|xml) rss.php?file=$1&ext=$2
RewriteRule ^(plugin|plugin)/(.*) index.php?url=$1/$2 [L,QSA]
RewriteRule ^search/(.*) index.php?url=/search/$1 [L,QSA]
RewriteRule ^comments/(.*) index.php?url=/comments/$1 [L,QSA]
RewriteRule ^(serendipity\.css|serendipity_admin\.css)$ index.php?url=/$1 [L,QSA]
RewriteRule ^(serendipity\.js|serendipity_admin\.js)$ index.php?url=/$1 [L,QSA]
RewriteRule ^index\.(html?|php.+) index.php?url=index.html [L,QSA]
RewriteRule ^htmlarea/(.*) htmlarea/$1 [L,QSA]
#RewriteCond %{REQUEST_URI} !-U
RewriteRule (.*\.html?) index.php?url=/$1 [L,QSA]

<Files *.tpl.php>
    deny from all
</Files>

<Files *.tpl>
    deny from all
</Files>

<Files *.sql>
    deny from all
</Files>

<Files *.inc.php>
    deny from all
</Files>

<Files *.db>
    deny from all
</Files>

# END s9y
Müsste RewriteRule (.*\.html?) index.php?url=/$1 [L,QSA] nicht in beiden Fällen triggern?!
thh
Regular
Posts: 419
Joined: Thu Oct 26, 2006 2:38 pm
Location: Stuttgart, Germany
Contact:

Re: Problem beim Anzeigen der lokalen Plugin-Doku

Post by thh »

Lösung gefunden:

Die Plugins mit "funktionierender" Doku haben eine eigene .htaccess:

Code: Select all

# Switch off reqrite engine, else documentation gets a wrong link
<Files .htaccess>
Allow from all
</Files>

<IfModule mod_rewrite.c>
RewriteEngine Off
</IfModule>
thh
Regular
Posts: 419
Joined: Thu Oct 26, 2006 2:38 pm
Location: Stuttgart, Germany
Contact:

Re: Problem beim Anzeigen der lokalen Plugin-Doku

Post by thh »

Ich glaube nicht, dass das so ein guter Weg ist ...

Entweder sollten wir die zentrale Rewrite-Rules anpassen oder eine .htaccess auf Ebene von plugins/ mit diesem Code einbauen, nicht mehr als ein Dutzend identische Dateien in verschiedenen Plugins (mit der Folge, dass die Doku dort, wo sie fehlen, nicht funktioniert).

Issue: https://github.com/s9y/Serendipity/issues/521
onli
Regular
Posts: 2825
Joined: Tue Sep 09, 2008 10:04 pm
Contact:

Re: Problem beim Anzeigen der lokalen Plugin-Doku

Post by onli »

Apache schaut sowieso immer noach einer .htaccess. Wir könnten da imho ruhig eine nach plugins/ legen.

Aber könnten wir nicht auch einfach mit serendipity den Request nach einer Plugin-Dokumentantion fangen, wenn das nach ?index.php... umgeschrieben wird?
thh
Regular
Posts: 419
Joined: Thu Oct 26, 2006 2:38 pm
Location: Stuttgart, Germany
Contact:

Re: Problem beim Anzeigen der lokalen Plugin-Doku

Post by thh »

onli wrote:Apache schaut sowieso immer noach einer .htaccess. Wir könnten da imho ruhig eine nach plugins/ legen.

Aber könnten wir nicht auch einfach mit serendipity den Request nach einer Plugin-Dokumentantion fangen, wenn das nach ?index.php... umgeschrieben wird?
Ja, garvin hat letzteres bereits umgesetzt, siehe die Doku im verlinkten Issue. :)
Post Reply