从 Mediawiki URL 中删除 index.php 的问题

Issues Removing index.php from Mediawiki URL

我有一个 php 网站 (laravel),它使用虚拟主机设置为子域的根目录。所以 http://subdomain.website.com will go to the laravel website. I want to be able to go to http://subdomain.website.com/wiki 它将直接到 mediawiki 安装。为此,请在虚拟主机中设置一个别名。

<VirtualHost *:80>
    DocumentRoot "/var/www/laravel/public"
    ServerName sub.domain.com
    Alias /wiki "/var/www/mediawiki" 
    Alias /w "/var/www/mediawiki" 
   <Directory "/var/www/laravel/public"> 
        AllowOverride All
        Options +FollowSymLinks
        RewriteEngine On
    </Directory>
</VirtualHost>

这完全按照我希望的方式工作,但是有一个问题。我想从 url 中删除 index.php。这样“/wiki/index.php/Main_Page”就变成了“/wiki/Main_Page”。

我尝试使用在其他指南中找到的 http://shorturls.redwerks.org/,但它对我不起作用。生成的任何代码都将生成 wiki/wiki/Main_page,甚至页面会抛出错误。

The requested URL /wiki/wiki/Main_Page was not found on this server.

我曾尝试使用 url 进行大量不同的组合,但无法正常工作。由于该网站是一个子域,我无法使用 wiki.domain.com。此 wiki 需要成为子域的一部分。有人知道我需要做什么才能完成这项工作吗?

我需要的最终结果是 URL 将我带到主页

http://sub.domain.com/wiki/Main_Page

您需要启用 mod_rewrite,然后您可以使用这样的规则删除 index.php。您可以在 Wiki 文件夹中的 .htaccess 中使用它。

RewriteEngine On
RewriteBase /wiki
#redirect index.php to non index.php
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\ /(.*)index\.php
RewriteRule ^ %1? [R=301,L]
#internally rewrite request to index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/ [L]

更新:通常这应该适用于典型的 CMS' 但是 mediawiki 本身有一个独特之处,因为使用 wikiw 文件夹。

http://www.mediawiki.org/wiki/Manual%3aShort_URL/Apache

根据所选的 mediawiki 结构,需要这样的规则

RewriteRule ^/?wiki(/.*)?$ %{DOCUMENT_ROOT}/w/index.php [L]