我刚设置了一个本地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的了解不多,这意味着我不知道该怎么做,所以如果需要更多信息,请随时询问。
答案 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]