[Mediawiki-l] Losing the index.php

Patrick Atoon patricka at rapdict.org
Thu Dec 2 00:40:14 UTC 2004


Brion Vibber wrote:

 > I wrote:
 >
 > > # Rewrite http://wiki.domain.tld/article properly, this is the main 
rule
 > > RewriteRule ^(.*)$ /index.php/$1 [L,QSA]
 >
 > This will fail for page titles containing "?"
 >
 > To get full coverage, use the rewrite patch for Apache 1.3.x (in the 
maintenance subdirectory) which converts ampersands, and send those as a 
query string instead of path_info.


Hmmmm, I don't feel comfortable patching my stock Apache 2.0.52 as
it makes future upgrades more complex. I guess that means only
partial loss of the index.php, except for cases where "index.php?"
is used.

My current setup:

------- LocalSettings.php -----------------------------------
$wgScriptPath       = "";
$wgScript           = $wgScriptPath . "/index.php";
$wgRedirectScript   = $wgScriptPath . "/redirect.php";

## If using PHP as a CGI module, use the ugly URLs
$wgArticlePath      = "${wgScript}/$1";
-------------------------------------------------------------


------- httpd.conf ------------------------------------------
RewriteEngine On

# Redirect old /wiki/ URLs
RewriteRule ^/wiki/(.*)$ http://www.rapdict.org/$1 [R,L]

# Redirect "/index.php/" URLs
RewriteRule ^/index.php/(.*)$ http://www.rapdict.org/$1 [R,L]

# Don't rewrite "/index.php?" URLs
RewriteCond %{REQUEST_URI} !^/index.php\?

# Don't rewrite requests for files in MediaWiki subdirectories,
# MediaWiki PHP files, HTTP error documents, favicon.ico, or robots.txt
RewriteCond %{REQUEST_URI} !^/(stylesheets|images|skins)/
RewriteCond %{REQUEST_URI} !^/(redirect|texvc|index).php
RewriteCond %{REQUEST_URI} !^/error/(40(1|3|4)|500).html
RewriteCond %{REQUEST_URI} !^/favicon.ico
RewriteCond %{REQUEST_URI} !^/robots.txt

# Rewrite "/Article" to "/index.php/Article" for internal use
RewriteRule ^(.*)$ /index.php/$1 [L,QSA]
-------------------------------------------------------------

To avoid the double requests (logically) appearing in the Apache
logfile, I have patched the function getLocalURL() in Title.php
by adding one line at line 418, just before "return $url":

------ Title.php --------------------------------------------
              $url = str_replace( "/index.php/", "", $url);
-------------------------------------------------------------

That seems to do the trick for pretty much all links.

 > -- brion vibber (brion @ pobox.com)


Thanks for the help!

Greetings,

Patrick

-- 
_______________________________________________________________
   Patrick Atoon _____________________ mailto:patricka at two4u.com
   _______________________________________ http://www.two4u.com/


-- 
_______________________________________________________________
   Patrick Atoon ___________________ mailto:patricka at rapdict.org
   _____________________________________ http://www.rapdict.org/



More information about the MediaWiki-l mailing list