mod-rewrite包含MediaWiki URL

时间:2018-03-28 01:27:54

标签: apache mod-rewrite mediawiki

我刚设置了一个本地MediaWiki服务器,并且能够使用mod-rewrite执行以下操作:

http://10.0.0.160/wiki/index.php?Main_Page

分为:

http://10.0.0.160/wiki/Main_Page

现在效果很好,我很满意,但是任何文件或文件夹都会自动重定向到实际文件,而不是wiki文章。例如,MediaWiki安装在根目录中包含LocalSettings.php文件,因此当我执行以下操作时:

http://10.0.0.160/wiki/LocalSettings.php

我被定向到实际文件而不是:

http://10.0.0.160/wiki/index.php?LocalSettings.php

我希望必须有一种方法可以做到这一点,因为当我访问维基百科并输入en.wikipedia.org/LocalSettings.php时,我会收到相关页面的重定向响应,因此它不会转到他们的设置文件。

文件夹也会出现同样的问题。

我设置重定向的方式是在MediaWiki安装的主目录中使用.htaccess,因此它在MediaWiki教程中包含以下指令here

RewriteEngine On
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-f
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-d
RewriteRule ^(.*)$ %{DOCUMENT_ROOT}/wiki/index.php [L]

最后我的MediaWiki有路径设置:

$wgScriptPath = "/wiki";
$wgArticlePath = "/wiki/$1";

我对Apache的了解不多,这意味着我不知道该怎么做,所以如果需要更多信息,请随时询问。

1 个答案:

答案 0 :(得分:1)

导致它的这些行:

RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-f
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-d

它们意味着只有在请求URL 现有文件或目录时才会执行以下RewriteRule。或者,正如the docs所拥有的那样:"将TestString视为路径名并测试它是否存在,并且是目录[或文件]。"

您想要实际提供的文件需要哪些内容,例如图片,CSS和Javascript。

您的目标是在您的维基上设置名为LocalSettings.php的网页吗?

要仅允许三个PHP入口点和任何图像,并让其他任何内容成为维基页面,您可以在其他页面之前添加这些规则:

RewriteRule (index\.php|load\.php|api\.php)$ - [L]
RewriteRule (.*\.(jpg|jpeg|pdf))$ - [L]