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
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";
Now $wgArticlePath = "${wgScript}/$1";
Should be $wgArticlePath = "/$1";
Regards, Plamen
Plamen Gradinarov wrote:
Now $wgArticlePath = "${wgScript}/$1";
Should be $wgArticlePath = "/$1";
Hahaha! I can't believe I missed that one! Thanks for the correction; no need to patch Title.php now.
Regards, Plamen
Greetings,
Patrick
mediawiki-l@lists.wikimedia.org