Dan Hastings
Dan Hastings

Reputation: 3290

Issues Removing index.php from Mediawiki URL

I have a php website (laravel) that is set to the root of a subdomain using a virtualhost. So http://subdomain.website.com will go to the laravel website. I want to be able to go to http://subdomain.website.com/wiki and it will direct to the mediawiki install. To do this is setup an alias within the virtualhost.

<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>

This is working exactly the way i want it to work, but there is an issue. I want to remove index.php from the url. So that "/wiki/index.php/Main_Page" becomes "/wiki/Main_Page".

I tried using http://shorturls.redwerks.org/ which i found in other guides, but it isnt working for me. Any code generated will produce wiki/wiki/Main_page and even at that the page throws an error.

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

I have tried messing around with a large amount of different combinations with the url and cant get this to work. Since this website is a subdomain im not able to use wiki.domain.com. This wiki needs to be part of the subdomain. Anyone know what i need to do to make this work?

The end result i need is for this URL to bring me to the main page

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

Upvotes: 0

Views: 1971

Answers (1)

Panama Jack
Panama Jack

Reputation: 24478

You need to have mod_rewrite enabled and then you can use rules like this to remove index.php. You can use this in your .htaccess in Wiki folder.

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]

Update: Ordinarily this should work for typical CMS' however mediawiki itself has a unique because of the using wiki and w folders.

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

Depending on the mediawiki structure chosen, it would require a rule such as this

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

Upvotes: 2

Related Questions