mod-重写在 MediaWiki 中包含实际文件 URL
mod-rewrite include actual files in a MediaWiki URL
我刚刚设置了一个本地 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/";
我对 Apache 知之甚少意味着我不知道该从哪里开始,所以如果需要更多信息,请随时询问。
是这些行造成的:
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-f
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-d
它们意味着以下 RewriteRule 仅在请求 URL 是 而非 现有文件或目录时才会执行。或者,如 the docs 所示:"Treats the TestString as a pathname and tests whether or not it exists, and is a directory [or file]."
您想要实际提供的那些文件需要什么,例如图像、CSS 和 Javascript。
您的目标是能够在您的 wiki 上拥有一个名为 LocalSettings.php
的页面吗?
要仅允许三个 PHP 入口点和任何图像,并让任何其他内容成为 wiki 页面,您可以在其他规则之前添加这些规则:
RewriteRule (index\.php|load\.php|api\.php)$ - [L]
RewriteRule (.*\.(jpg|jpeg|pdf))$ - [L]
我刚刚设置了一个本地 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/";
我对 Apache 知之甚少意味着我不知道该从哪里开始,所以如果需要更多信息,请随时询问。
是这些行造成的:
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-f
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-d
它们意味着以下 RewriteRule 仅在请求 URL 是 而非 现有文件或目录时才会执行。或者,如 the docs 所示:"Treats the TestString as a pathname and tests whether or not it exists, and is a directory [or file]."
您想要实际提供的那些文件需要什么,例如图像、CSS 和 Javascript。
您的目标是能够在您的 wiki 上拥有一个名为 LocalSettings.php
的页面吗?
要仅允许三个 PHP 入口点和任何图像,并让任何其他内容成为 wiki 页面,您可以在其他规则之前添加这些规则:
RewriteRule (index\.php|load\.php|api\.php)$ - [L]
RewriteRule (.*\.(jpg|jpeg|pdf))$ - [L]