“配置MW:短链接”的版本间差异

来自Wikioe
跳到导航 跳到搜索
 
(未显示同一用户的5个中间版本)
第2行: 第2行:


== 关于 ==
== 关于 ==
  短链接,顾名思义,相较于一长串字母的、毫无意义的、复杂的网址,短链接(如:“[http://wiki.eijux.com/首页 http://wiki.eijux.com/首页]”)更易于理解、记忆、管理。
  短链接,顾名思义,相较于一长串字母的、毫无意义的、复杂的网址,短链接(如:“[http://wiki.eijux.com/首页 http://wiki.eijux.com/首页]”)更易于理解、记忆、管理<ref>[https://www.w3.org/Provider/Style/URI Cool URIs don't change]</ref>。
   
   
  短 URL 或 URL 重写会隐藏页面地址中的 php 文件扩展名。
  短 URL 或 URL 重写会隐藏页面地址中的 php 文件扩展名。
第24行: 第24行:




: '''示例:''' '''<syntaxhighlight lang="xml" inline>try_files $uri $uri/ @rewrite;</syntaxhighlight>'''
: '''示例:''' '''<syntaxhighlight lang="PHP" inline>try_files $uri $uri/ @rewrite;</syntaxhighlight>'''
: '''说明:'''
: '''说明:'''
::# 尝试到网站目录读取用户访问的文件,如果“<code>$uri</code>”存在,就直接返回;
::# 尝试到网站目录读取用户访问的文件,如果“<code>$uri</code>”存在,就直接返回;
第60行: 第60行:
$wgUsePathInfo = true;
$wgUsePathInfo = true;
</syntaxhighlight>
</syntaxhighlight>
# '''example.com.conf'''<ref name="Nginx_config_of_site">站点的 Nginx 配置:<br/>1、可以通过“宝塔面板”修改(网站 -> 站点设置 -> 配置文件);<br/>2、也可以通过服务器上文件修改(位置:“<span style="color: green">'''/www/server/panel/vhost/nginx/example.com.conf'''</span>”)。</ref><ref name="Nginx_reload">修改 Nginx 配置之后,可能需要'''重载 Nginx 配置''':<br/>1、在宝塔面板的“Nginx 管理”中“重载配置”;<br/>2、通过命令。</ref>:
# '''example.com.conf'''<ref name="Nginx_config_of_site">站点的 Nginx 配置:<br/>1、可以通过“<span style="color: green">'''宝塔面板'''</span>”修改(<span style="color: green">'''网站 -> 站点设置 -> 配置文件'''</span>);<br/>2、也可以通过服务器上“<span style="color: green">'''配置文件'''</span>”修改(位置:“<span style="color: green">'''/www/server/panel/vhost/nginx/example.com.conf'''</span>”)。</ref><ref name="Nginx_reload">修改 Nginx 配置之后,可能需要'''重载 Nginx 配置''':<br/>1、在宝塔面板的“Nginx 管理”中“重载配置”;<br/>2、通过命令。</ref>:
#: <syntaxhighlight lang="XML" line highlight="4-76">
#: <syntaxhighlight lang="PHP" line highlight="4-76">
server {
server {
# [...]
# [...]
第161行: 第161行:
</syntaxhighlight>
</syntaxhighlight>
# '''example.com.conf'''<ref name="Nginx_config_of_site"/><ref name="Nginx_reload"/>:
# '''example.com.conf'''<ref name="Nginx_config_of_site"/><ref name="Nginx_reload"/>:
#: <syntaxhighlight lang="XML" line highlight="15-21">
#: <syntaxhighlight lang="PHP" line highlight="15-21">
server {
server {
server_name www.example.com example.com;
server_name www.example.com example.com;
第270行: 第270行:


== 备注 ==
== 备注 ==
  当前站点使用的方式为:[[#example.com/Page_title]]。现备注正在使用的“wiki.eijux.com.conf”如下。
  当前站点使用的方式为:<span style="color: blue">'''example.com/Page_title'''</span>,现备注正在使用的“wiki.eijux.com.conf”如下。


【2022/08/23 05:41:49】:
【2022/08/23 05:41:49】
: <syntaxhighlight lang="PHP" highlight="">
# LocalSettings.php:
#: <syntaxhighlight lang="PHP" line highlight="">
# Short URL
$wgArticlePath = "/$1";
$wgUsePathInfo = true;
$wgScriptExtension = ".php";
</syntaxhighlight>
# wiki.eijux.com.conf:'''【关键部分已高亮】'''
#: <syntaxhighlight lang="PHP" line highlight="11-12,21-22,31-37">
server
server
{
{
     listen 80;
     ...
listen 443 ssl http2;
    server_name wiki.eijux.com;
    index index.php index.html index.htm default.php default.htm default.html;
    root /www/wwwroot/wiki.eijux.com;
 
    #SSL-START SSL相关配置,请勿删除或修改下一行带注释的404规则
    #error_page 404/404.html;
    ssl_certificate    /www/server/panel/vhost/cert/wiki.eijux.com/fullchain.pem;
    ssl_certificate_key    /www/server/panel/vhost/cert/wiki.eijux.com/privkey.pem;
    ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
    ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;
    add_header Strict-Transport-Security "max-age=31536000";
    error_page 497  https://$host$request_uri;
#SSL-END
 
    #ERROR-PAGE-START  错误页配置,可以注释、删除或修改
    #error_page 404 /404.html;
    #error_page 502 /502.html;
    #ERROR-PAGE-END
 
    #PHP-INFO-START  PHP引用配置,可以注释或修改
    include enable-php-74.conf;
    #PHP-INFO-END
 
    #REWRITE-START URL重写规则引用,修改后将导致面板设置的伪静态规则失效
    include /www/server/panel/vhost/rewrite/wiki.eijux.com.conf;
    #REWRITE-END
 
    #禁止访问的文件或目录
    location ~ ^/(\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md)
    {
        return 404;
    }
 
    #一键申请SSL证书验证目录相关设置
    location ~ ^/.well-known/{
        allow all;
    }
 
    #禁止在证书验证目录放入敏感文件
    if ( $uri ~ "^/\.well-known/.*\.(php|jsp|py|js|css|lua|ts|go|zip|tar\.gz|rar|7z|sql|bak)$" ) {
        return 403;
    }


     location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
     location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
第378行: 第340行:
}
}
</syntaxhighlight>
</syntaxhighlight>
 
#* 关于fastcgi的配置,参见“/www/server/nginx/conf”中的“enable-php-73.conf”。
=== LocalSettings.php设置 ===
#**“fastcgi_params”和“fastcgi.conf”均位于“/www/server/nginx/conf”中。
如下:
<syntaxhighlight lang="php" line>
# Short URL
$wgArticlePath = "/$1";
$wgUsePathInfo = true;
$wgScriptExtension = ".php";
</syntaxhighlight>
 
=== nginx configuration设置 ===
修改站点的nginx配置文件,使用BTPabel安装的LNMP环境,可在面板操作“网站->wiki.eijux.com设置->配置文件”进行设置。<br/>
(宝塔中站点的nginx配置文件(如"wiki.eijux.com.conf"),位于"/www/server/panel/vhost/nginx")<br/>
添加:
<syntaxhighlight lang="php" line>
    location / {
        try_files $uri $uri/ @rewrite;
    }
 
    location @rewrite {
        rewrite ^/(.*)$ /index.php;
    }
</syntaxhighlight>
就可完成短链接的转换。另:
<syntaxhighlight lang="php" line>
    # 限制访问.ht文件
    location ~ \.ht {
        deny all;
    }
 
    # 限制对maintenance该路径的访问,返回403
    location ^~ /maintenance/ {
        return 403;
    }
 
    # 以下配置允许运行.php的程序
    # 关于fastcgi的配置,参见"/www/server/nginx/conf"中的"enable-php-73.conf"
    # ("fastcgi_params"和"fastcgi.conf"均位于"/www/server/nginx/conf"中)
    location ~ \.php$ {
        include /www/server/nginx/conf/fastcgi_params;
 
        fastcgi_pass  unix:/tmp/php-cgi-73.sock;
        fastcgi_index index.php;
 
        fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
 
        try_files $uri @rewrite;
    }
</syntaxhighlight>


== FAQ ==
== FAQ ==
=== 修改短链接之后,图片页404 ===
=== '''404 Not Found nginx''' ===
以上,修改站点短链接之后,网页、特殊页面均无问题,只有png、jpg等图片页访问404(图片列表、svg页无问题)。<br/>
在修改短链接之后,可能出现 <span style="color: red; font-size: 140%">'''404 Not Found nginx'''</span> 的错误:
即:站点的nginx配置文件中配置的类型,无法访问:
    [[File:Nginx:404.png|800px]]
<syntaxhighlight lang="xml" line>
    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
    {
        ...
    }
   
    location ~ .*\.(js|css)?$
    {
        ...
    }
</syntaxhighlight>
需要在<code>Location</code>中配置<code>try_files</code>。
 


==== 修改配置 ====
出现此错误,其实是<span style="color: blue">'''“站点的 Ngnix 配置文件”(example.com.conf)配置有问题'''</span>:
如下:
# 若在访问'''所有页面'''均出现此错误,则参考 <span style="font-size: 120%">'''[[#内容短链接]]'''</span> 进行修改即可。
<syntaxhighlight lang="xml" line>
# 若仅访问'''“png、jpg”、“js、css”等内容'''时,出现此错误,则修改如下:
#: <syntaxhighlight lang="PHP" line highlight="7,16">
     location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
     location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
     {
     {
第454行: 第357行:
         error_log off;
         error_log off;
         access_log /dev/null;
         access_log /dev/null;
       
         try_files $uri @rewrite;
         try_files $uri @rewrite;
     }
     }
第462行: 第366行:
         error_log off;
         error_log off;
         access_log /dev/null;  
         access_log /dev/null;  
       
         try_files $uri @rewrite;
         try_files $uri @rewrite;
     }
     }
</syntaxhighlight>
</syntaxhighlight>
备注:
 
【2020/09/15 00:40:12】Done.
若有其他内容错误,解决类似。


== 参考 ==
== 参考 ==
<references/>
<references/>

2022年8月23日 (二) 22:49的最新版本


关于

短链接,顾名思义,相较于一长串字母的、毫无意义的、复杂的网址,短链接(如:“http://wiki.eijux.com/首页”)更易于理解、记忆、管理[1]。

短 URL 或 URL 重写会隐藏页面地址中的 php 文件扩展名。

关于:相关 LocalSettings.php 配置项

相关配置项:

  1. $wgScriptPath:MediaWiki 文件的实际路径。
  2. $wgArticlePath:MediaWiki 文章的虚拟路径。
    • 必须与“$wgScriptPath”不同。
  3. $wgUsePathInfo:为操作获取特殊链接。
  4. $wgScriptExtension:脚本扩展名。
  5. $wgActionPaths:MediaWiki 文章的操作路径。

关于:相关 Nginx 指令

相关指令:

  1. try_files:尝试读取文件(读取静态文件),按后面的配置一次尝试。
  2. $uri:Nginx 的一个变量,存放着用户访问的地址。
    如:“http://www.xxx.com/index.html”,那么“$uri”就是“/index.html”;
  3. $uri/:Nginx 的一个变量,代表访问的是一个目录。
    如:“http://www.xxx.com/hello/test/”,那么“$uri/”就是“/hello/test/”;


示例: try_files $uri $uri/ @rewrite;
说明:
  1. 尝试到网站目录读取用户访问的文件,如果“$uri”存在,就直接返回;
  2. 否则继续读取“$uri/”,如果存在直接返回;
  3. 否则直接跳转到“@rewrite”(定义的另一个“Location”)。

关于:http://wiki.eijux.com/%E9%A6%96%E9%A1%B5

地址“http://wiki.eijux.com/%E9%A6%96%E9%A1%B5”与“http://wiki.eijux.com/首页”其实是同一个地址:前者是将地址中的中文通过“URL 编码[2]”得到的。

内容短链接[3]

默认“内容地址”:http://wiki.eijux.com/index.php?title=首页

MediaWiki 的短链接有两种方案[4]

  1. example.com/wiki/Page_title
    如:http://wiki.eijux.com/wiki/首页
  2. example.com/Page_title
    如:http://wiki.eijux.com/首页
关于“example.com/Page_title”方案:1、使用域的根目录作为 wiki 目录[5];2、使用 URL 如“example.com/Page_title”。

但这并不是官方建议的方式:
1、仅适用于“域名(子域名)仅用于 MediaWiki。  ——  否则,可能会导致与其他文件和目录冲突。
2、可能存在的 Bug,如:task T34621task T40048等。

example.com/wiki/Page_title[6]


1、MediaWiki 安装在站点目录下的文件夹中(“/www/wwwroot/example.com/w/”)。
2、文章将以“example.com/wiki/Page_title”形式的 URL 显示。

配置:

  1. LocalSettings.php
    $wgScriptPath = "/w";
    $wgArticlePath = "/wiki/$1";
    $wgUsePathInfo = true;
    
  2. example.com.conf[7][8]
    server {
    	# [...]
    
    	# Location for wiki's entry points
    	location ~ ^/w/(index|load|api|thumb|opensearch_desc|rest|img_auth)\.php$ {
    		include /etc/nginx/fastcgi_params;
    		fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    		fastcgi_pass 127.0.0.1:9000; # or whatever port your PHP-FPM listens on
    	}
    	
    	# Images
    	location /w/images {
    		# Separate location for images/ so .php execution won't apply
    	}
    	location /w/images/deleted {
    		# Deny access to deleted images folder
    		deny all;
    	}
    	# MediaWiki assets (usually images)
    	location ~ ^/w/resources/(assets|lib|src) {
    		try_files $uri 404;
    		add_header Cache-Control "public";
    		expires 7d;
    	}
    	# Assets, scripts and styles from skins and extensions
    	location ~ ^/w/(skins|extensions)/.+\.(css|js|gif|jpg|jpeg|png|svg|wasm)$ {
    		try_files $uri 404;
    		add_header Cache-Control "public";
    		expires 7d;
    	}
    	# Favicon
    	location = /favicon.ico {
    		alias /w/images/6/64/Favicon.ico;
    		add_header Cache-Control "public";
    		expires 7d;
    	}
    
    	# License and credits files
    	location ~ ^/w/(COPYING|CREDITS)$ {
    		default_type text/plain;
    	}
    	
    	## Uncomment the following code if you wish to use the installer/updater
    	## installer/updater
    	#location /w/mw-config/ {
    	#	# Do this inside of a location so it can be negated
    	#	location ~ \.php$ {
    	#		include /etc/nginx/fastcgi_params;
    	#		fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    	#		fastcgi_pass 127.0.0.1:9000; # or whatever port your PHP-FPM listens on
    	#	}
    	#}
    	
    	# Handling for Mediawiki REST API, see [[mw:API:REST_API]]
    	location /w/rest.php/ {
    		try_files $uri $uri/ /w/rest.php?$query_string;
    	}
    
    	## Uncomment the following code for handling image authentication
    	## Also add "deny all;" in the location for /w/images above
    	#location /w/img_auth.php/ {
    	#	try_files $uri $uri/ /w/img_auth.php?$query_string;
    	#}
    
    	# Handling for the article path (pretty URLs)
    	location /wiki/ {
    		rewrite ^/wiki/(?<pagename>.*)$ /w/index.php;
    	}
    
    	# Allow robots.txt in case you have one
    	location = /robots.txt {
    	}
    	# Explicit access to the root website, redirect to main page (adapt as needed)
    	location = / {
    		return 301 /wiki/Main_Page;
    	}
    
    	# Every other entry point will be disallowed.
    	# Add specific rules for other entry points/images as needed above this
    	location / {
    		return 404;
    	}
    }
    

example.com/Page_title[9]


1、MediaWiki 安装在站点目录的根目录中(“/www/wwwroot/example.com/”)。
2、文章将以“example.com/Page_title”形式的 URL 显示。

配置:

  1. LocalSettings.php
    $wgScriptPath = "";
    $wgArticlePath = "/$1";
    $wgUsePathInfo = true;
    $wgScriptExtension = ".php";
    
  2. example.com.conf[7][8]
    server {
    	server_name www.example.com example.com;
    	listen 80;
    
    	root /home/user/public_html;
    	index index.php index.html index.htm;
    
    	access_log /var/log/nginx/access-example.log;
    	error_log /var/log/nginx/error-example.log;
    
    	location ~ \.ht {
    		deny all;
    	}
    
    	location / {
    		try_files $uri $uri/ @rewrite;
    	}
    
    	location @rewrite {
    		rewrite ^/(.*)$ /index.php;
    	}
    
    	location ^~ /maintenance/ {
    		return 403;
    	}
    
    	location ~ \.php$ {
    		include /etc/nginx/fastcgi_params;
    
    		fastcgi_pass  127.0.0.1:9000;
    		fastcgi_index index.php;
    
    		fastcgi_param  SCRIPT_FILENAME	$document_root$fastcgi_script_name;
    
    		try_files $uri @rewrite;
    	}
    }
    

操作[10]短链接[11]

必须先设置#内容短链接,并保证有效。

默认“操作地址”:http://wiki.eijux.com/index.php?title=首页&action=edit

MediaWiki 的“操作短链接”有多种方案:

  1. 根路径
    $actions = array( 'view', 'edit', 'watch', 'unwatch', 'delete','revert', 'rollback',
      'protect', 'unprotect', 'markpatrolled', 'render', 'submit', 'history', 'purge', 'info' );
    
    foreach ( $actions as $action ) {
      #操作前置:
      $wgActionPaths[$action] = "/$action/$1";
      #操作后置:
      $wgActionPaths[$action] = "/$1/$action";
    }
    $wgActionPaths['view'] = "/$1";
    $wgArticlePath = $wgActionPaths['view'];
    
    操作前置:http://wiki.eijux.com/edit/首页”;
    操作后置:http://wiki.eijux.com/首页/edit”;
  2. 非根路径
    $actions = array( 'edit', 'watch', 'unwatch', 'delete','revert', 'rollback',
      'protect', 'unprotect', 'markpatrolled', 'render', 'submit', 'history', 'purge', 'info' );
     
    foreach ( $actions as $action ) {
      #操作前置:
      $wgActionPaths[$action] = "/wiki/$action/$1";
      #操作后置:
      $wgActionPaths[$action] = "/wiki/$1/$action";
    }
    $wgActionPaths['view'] = "/wiki/$1";
    $wgArticlePath = $wgActionPaths['view'];
    
    操作前置:“http://wiki.eijux.com/wiki/edit/首页”;
    操作后置:“http://wiki.eijux.com/wiki/首页/edit”;
  3. 虚拟路径
    $actions = array( '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";
      #操作后置:
      $wgActionPaths[$action] = "$wgScriptPath/action/$1/$action";
    }
    $wgActionPaths['view'] = $wgScriptPath/action/$1";
    $wgArticlePath = $wgActionPaths['view'];
    
    操作前置:“http://wiki.eijux.com/wiki/action/edit/首页”;
    操作后置:“http://wiki.eijux.com/wiki/action/首页/edit”;
  • 以上均可分为“操作前置”和“操作后置”。
  • 以上均设置单独将 view 操作链接中的“view”关键字省略。


配置了以上内容,仍然需要在“站点的 Ngnix 配置文件中”(example.com.conf)中定义规则以完成 URL 重写。


但是,使用“$wgActionPaths”设置后,不能创建某些与“操作关键字”(如上“$actions”中定义)相关的页面。

    如:创建名为“首页/edit”(action后置)、“edit/首页”(action后置)、“首页/history”的页面时,会跳转到“首页”相关的操作页面。


对此,可以修改“$actions”定义的操作词为不常用词(可能需要修改页面代码?)。

备注

当前站点使用的方式为:example.com/Page_title,现备注正在使用的“wiki.eijux.com.conf”如下。

【2022/08/23 05:41:49】

  1. LocalSettings.php:
    # Short URL
    $wgArticlePath = "/$1";
    $wgUsePathInfo = true;
    $wgScriptExtension = ".php";
    
  2. wiki.eijux.com.conf:【关键部分已高亮】
    server
    {
        ...
    
        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
        {
            expires      30d;
            error_log /dev/null;
            access_log /dev/null;
            
            #允许访问内容, by Eijux at 2022/08/21 23:33:42
            try_files $uri @rewrite;
        }
    
        location ~ .*\.(js|css)?$
        {
            expires      12h;
            error_log /dev/null;
            access_log /dev/null;
    
            #允许访问内容, by Eijux at 2022/08/21 23:33:42
            try_files $uri @rewrite;
        }
        
        #修改短链接, by Eijux at 2020/09/09 03:14:50
        #begin
        location ~ \.ht {
            deny all;
        }
        
        location / {
            try_files $uri $uri/ @rewrite;
        }
    
        location @rewrite {
            rewrite ^/(.*)$ /index.php;
        }
      	
        location ^~ /maintenance/ {
            return 403;
        }
    	  
        location ~ \.php$ {
            include /www/server/nginx/conf/fastcgi_params;
        
            fastcgi_pass  unix:/tmp/php-cgi-73.sock;
            fastcgi_index index.php;
        
            fastcgi_param  SCRIPT_FILENAME	$document_root$fastcgi_script_name;
        
            try_files $uri @rewrite;
        }
        #end
        
        access_log  /www/wwwlogs/wiki.eijux.com.log;
        error_log  /www/wwwlogs/wiki.eijux.com.error.log;
    }
    
    • 关于fastcgi的配置,参见“/www/server/nginx/conf”中的“enable-php-73.conf”。
      • “fastcgi_params”和“fastcgi.conf”均位于“/www/server/nginx/conf”中。

FAQ

404 Not Found nginx

在修改短链接之后,可能出现 404 Not Found nginx 的错误:
    Nginx:404.png

出现此错误,其实是“站点的 Ngnix 配置文件”(example.com.conf)配置有问题

  1. 若在访问所有页面均出现此错误,则参考 #内容短链接 进行修改即可。
  2. 若仅访问“png、jpg”、“js、css”等内容时,出现此错误,则修改如下:
        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
        {
            expires      30d;
            error_log off;
            access_log /dev/null;
            
            try_files $uri @rewrite;
        }
        
        location ~ .*\.(js|css)?$
        {
            expires      12h;
            error_log off;
            access_log /dev/null; 
            
            try_files $uri @rewrite;
        }
    
若有其他内容错误,解决类似。

参考

  1. Cool URIs don't change
  2. URL 编码,工具站点:https://www.bejson.com/enc/urlencode/
  3. 参考:Manual:Short_URL
  4. 配置短链接之后,长链接(http://wiki.eijux.com/index.php?title=首页)、短链接(http://wiki.eijux.com/首页)均可正常访问。
  5. Manual:Wiki in site root directory
  6. 参考:Manual:Short_URL/Nginx
  7. 7.0 7.1 站点的 Nginx 配置:
    1、可以通过“宝塔面板”修改(网站 -> 站点设置 -> 配置文件);
    2、也可以通过服务器上“配置文件”修改(位置:“/www/server/panel/vhost/nginx/example.com.conf”)。
  8. 8.0 8.1 修改 Nginx 配置之后,可能需要重载 Nginx 配置
    1、在宝塔面板的“Nginx 管理”中“重载配置”;
    2、通过命令。
  9. 参考:Manual:Short URL/Page title - nginx, Root Access, PHP as a CGI module
  10. “操作”包括:页面的“编辑、移动、删除、保护、历史”等等
  11. 参考:Manual:$wgActionPaths