Issues Removing index.php from Mediawiki URL


Issues Removing index.php from Mediawiki URL

我有一个php网站(laravel)设置为使用虚拟主机的子域的根。所以http://subdomain.website.com会去laravel网站。我希望能够去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,即使在此页面也会抛出错误。

请求的URL/wiki/wiki/Main_Page在此服务器上找不到。

我试过用大量不同的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?/$1 [L]

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

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

根据所选择的mediawiki结构,它将需要如下规则

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