[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