维基百科(或一般的MediaWiki)如何编码URI中的页面标题?这不是普通的URI编码,因为空格被替换为下划线,双引号不会被编码等等。
答案 0 :(得分:7)
这个过程非常复杂,并不完全漂亮。您需要查看Title
中的includes/Title.php
课程。您应该从newFromText
方法开始,但大部分逻辑都在secureAndSplit
方法中。
请注意(与MediaWiki一样)代码没有丝毫解耦。如果你想复制它,你需要提取逻辑而不是简单地重用类。
逻辑看起来像这样:
Apple#Name
../directory/page
)~~~
)(由于某种原因)此外,我相信我说的是引号不需要由原始用户编码 - 浏览器可以透明地处理它们。
我希望有所帮助!
答案 1 :(得分:5)
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
您还可以参考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
时的情况相同 - 此页面不会重定向您。