维基百科(或MediaWiki)如何在URI中编码页面标题?这不是普通的URI编码,因为空格被替换为下划线,双引号不会被编码,诸如此类。
includes/Title.php
中找到的Title
类。您应该从newFromText
方法开始,但大部分逻辑在secureAndSplit
方法中。Apple#Name
../directory/page
)~~~
)(由于某种原因)http://en.wikipedia.org/wiki/Wikipedia:Naming_conventions_%28technical_restrictions%29 - 这里有一些关于文章名称的引擎规则的描述。
他们应该在LocalSettings.php中添加以下内容: $wgArticlePath = '/wiki/$1';
并配置适当的服务器URI重写 - 他们似乎正在使用Apache(HTTP头),因此可能是mod_rewrite。 http://www.mediawiki.org/wiki/Manual:Short_URL
您还可以像这样参考Wikipedia上的一个文章的index.php文件:http://en.wikipedia.org/w/index.php?title=Foo%20bar
,并由引擎重定向到http://en.wikipedia.org/wiki/Foo_bar
。在幕后,mod_rewrite将其转换为/index.php?title=Foo_bar。对于MediaWiki引擎来说,这与您访问http://en.wikipedia.org/w/index.php?title=Foo_bar
相同-此页面不会重定向您。
mod_rewrite
不会将 URL 重写为 index.php?title=Foo_bar
。链接被重写(如果有的话)为 index.php/Foo_bar
,然后由 $_SERVER['REQUEST_URI']
或类似的东西读取。 - lonesomeday