Příručka:$wgActionPaths

From mediawiki.org
This page is a translated version of the page Manual:$wgActionPaths and the translation is 100% complete.
Adresy URL serveru a cesty k souborům: $wgActionPaths
Cesty pro různé akce uživatele. Používá se k vylepšení adres URL.
Zavedeno od verze:1.5.0 (r7538)
Odstraněno od verze:stále se používá
Povolené hodnoty:Blíže neurčeno
Výchozí hodnota:[]

Podrobnosti

Nejprve nastavte podle stránky Manual:Short URL a ujistěte se, že funguje

Chcete-li nastavit 'lepší' cesty URL pro jiné akce než obyčejná zobrazení stránky, přidejte do tohoto pole.

Například:

$wgActionPaths['edit'] = "$wgScriptPath/edit/$1";

Kromě nastavení této proměnné musíte zavést vhodný skript nebo pravidlo přepisu serveru, které bude tyto adresy URL zpracovávat.

Příklad konfigurace

Tyto příklady zahrnují ukázkové soubory .htaccess pro servery Apache používající mod_rewrite.

Jiné servery budou mít jiné způsoby provádění přepisů URL.

Akční cesty z kořene

Tím se nastaví akční cesty ve tvaru http://mywiki.example.com/edit/Cucumber atd.

LocalSettings.php
$actions = [
	'view',
	'edit',
	'watch',
	'unwatch',
	'delete',
	'revert',
	'rollback',
	'protect',
	'unprotect',
	'markpatrolled',
	'render',
	'submit',
	'history',
	'purge',
	'info',
];

foreach ( $actions as $action ) {
  $wgActionPaths[$action] = "/$action/$1";
}
$wgArticlePath = $wgActionPaths['view'];

další pravidla htaccess

.htaccess
Nezapomeňte upravit "/w/index.php" na místo, kde máte nainstalovanou MediaWiki
RewriteRule ^/([a-z]*)/(.*)$ %{DOCUMENT_ROOT}/w/index.php [L,QSA]

akce na konci

Tím se nastaví akční cesty ve tvaru http://mywiki.example.com/Cucumber/edit atd.

$actions = [
	'edit',
	'watch',
	'unwatch',
	'delete',
	'revert',
	'rollback',
	'protect',
	'unprotect',
	'markpatrolled',
	'render',
	'submit',
	'history',
	'purge',
	'info',
];

foreach ( $actions as $action ) {
  $wgActionPaths[$action] = "/$1/$action";
}
$wgActionPaths['view'] = "/$1";
$wgArticlePath = $wgActionPaths['view'];

Akční cesty bez root

Pro standardní example.com/wiki/Main_Page se přepisuje na example.com/wiki/view/Main_Page použijte výše uvedenou konfiguraci a změňte tento řádek tak, aby obsahoval "/wiki":

foreach ( $actions as $action ) {
  $wgActionPaths[$action] = "/wiki/$action/$1";
}

Pro standardní example.com/wiki/Main_Page zobrazí adresy URL a přepíše na example.com/wiki/edit/Main_Page

$actions = [
	'edit',
	'watch',
	'unwatch',
	'delete',
	'revert',
	'rollback',
	'protect',
	'unprotect',
	'markpatrolled',
	'render',
	'submit',
	'history',
	'purge',
	'info',
];

foreach ( $actions as $action ) {
  $wgActionPaths[$action] = "/wiki/$action/$1";
}
$wgActionPaths['view'] = "/wiki/$1";
$wgArticlePath = $wgActionPaths['view'];

akce na konci

Pro standardní example.com/wiki/Main_Page zobrazí adresy URL a přepíše na example.com/wiki/Main_Page/edit

nemůžete mít podstránky hlavních stránek pojmenované "delete, edit, watch, unwatch" atd. v poli, když nastavíte takto.
$actions = [
	'view',
	'edit',
	'watch',
	'unwatch',
	'delete',
	'revert',
	'rollback',
	'protect',
	'unprotect',
	'markpatrolled',
	'render',
	'submit',
	'history',
	'purge',
	'info',
];

foreach ( $actions as $action ) {
  $wgActionPaths[$action] = "/wiki/$1/$action";
}
$wgActionPaths['view'] = "/wiki/$1";
$wgArticlePath = $wgActionPaths['view'];

Virtuální akce/adresáře

Tím se nastaví adresy URL, jako je http://mywiki.example.com/wiki/action/edit/Cucumber atd.

Chcete-li přepsat obyčejně[1] akce pro konkrétní cestu, je možné provést následující změny LocalSettings.php :

$actions = [
	'view',
	'edit',
	'watch',
	'unwatch',
	'delete',
	'revert',
	'rollback',
	'protect',
	'unprotect',
	'markpatrolled',
	'render',
	'submit',
	'history',
	'purge',
	'info',
];

foreach ( $actions as $action ) {
  $wgActionPaths[$action] = "$wgScriptPath/action/$action/$1";
}
$wgArticlePath = $wgActionPaths['view'];

V Apache nakódujte pravidlo přepisu podobné následujícímu:

RewriteRule ^/action/([a-z]*)/(.*)$ /index.php [L,QSA]

Toto předá všechny požadavky do /action/actionword/title do index.php MediaWiki, který analyzuje akci a název podle vašich nastavení $wgActionPaths.

Při konfiguraci Apache mod_negotation pro spouštění PHP skriptů při použití této metody je třeba dbát na to, aby nedošlo k chybám 406 Not Acceptable, které by v některých případech mohly odhalit výpis adresáře, viz [1], [2]. Více na stránce bugzilla:21617.

Prevence spamu

Zdá se, že použití $wgActionPaths, zejména pro akci edit, snižuje počet spamovacích robotů pokoušejících se o úpravy článků. Existuje podezření, že roboti jsou naprogramováni tak, aby hledali action=edit, aby identifikovali instalaci MediaWiki a jednali správně. S ohledem na tuto skutečnost by bylo prospěšné pojmenovat předponu action (akce) něčím, co není zjevné, aby roboti nemohli najít váš web, když začnou hledat action/edit (akce/úpravy).


  1. V současné době není možné mít $wgActionPath pro 'raw' akci.