手册:$wgActionPath

This page is a translated version of the page Manual:$wgActionPaths and the translation is 100% complete.
服务器URL及文件路徑: $wgActionPaths
各种用户操作的路径。用于使URL更美观。
引进版本:1.5.0 (r7538)
移除版本:仍在使用
允许的值:未指定
默认值:[]

详情

设置手册:短链接 并确保它首先工作

若要为普通页面视图以外的操作设置“Pretty”URL路径,请添加到此数组中。

例如:

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

除了设置此变量外,还必须设置适当的脚本或服务器重写规则来处理这些URL。

示例配置

这些示例包括使用mod_rewrite的Apache服务器的示例.htaccess文件。

其他服务器将有其他方法来完成URL重写。

从根开始的操作路径

这将设置http://mywiki.example.com/edit/Cucumber等形式的操作路径。

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'];

额外的HTAccess规则

.htaccess
务必将“/w/index.php”修改为安装MediaWiki的位置
RewriteRule ^/([a-z]*)/(.*)$ %{DOCUMENT_ROOT}/w/index.php [L,QSA]

在最后的动作

这将设置http://mywiki.example.com/Cucumber/edit等形式的操作路径。

$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'];

非根操作路径

对于标准的Example.com/wiki/Main_Page重写为Example.com/wiki/view/Main_Page,请使用上面的配置并更改此行以包括“/wiki”:

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

用于标准的Example.com/wiki/Main_Page视图URL,并重写为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'];

最后的配置

用于标准的Example.com/wiki/Main_Page视图URL,并重写为Example.com/wiki/Main_Page/EDIT

当这样设置时,您不能从数组中拥有名为“删除、编辑、监视、取消监视”等的主页面的子页面。
$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'];

虚拟操作/目录

这将设置http://mywiki.example.com/wiki/action/edit/Cucumber等URL。

要重写Most[1]操作指向特定路径,您可以对$LocalSetting进行以下更改:

$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'];

在Apache中,编写类似于以下内容的重写规则:

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

这将把对/action/actionword/title的所有请求转发到MediaWiki的index.php,后者将根据您的$wgActionPath设置解析操作和标题。

在配置Apachemod_negotation以在使用此方法时执行PHP脚本时,应注意不要导致406不可接受的错误,这些错误在某些情况下可能会暴露目录列表,请参阅[1][2]。 参见bugzilla:21617

垃圾邮件防范

使用$wgActionPath,尤其是“编辑”操作,似乎可以减少尝试编辑文章的垃圾邮件机器人的数量。 有人怀疑bot被编程为查找action=EDIT来识别MediaWiki安装并正确操作。 考虑到这一点,最好将你的“action”命名为不明显的前缀,这样机器人在开始寻找“action/edit”时就找不到你的网站了。


  1. ,当前不能将$wgActionPath用于‘raw’操作。