rewrite rule: MediaWiki to static site
Francis Daly
francis at daoine.org
Mon Aug 20 11:29:02 UTC 2018
On Mon, Aug 20, 2018 at 06:09:10AM -0400, petecooper wrote:
Hi there,
> I'm diverting traffic from an retired MediaWiki site to an active static
> site. I'm somewhat confused with the process of `rewrite`-ing old URLs with
> a query string to standard URLs *without* a query string on the static site.
> For clarity, I do not need or want query strings on the new site.
In this case, it looks to me that you can probably "return" rather than
"rewrite", since everything should probably be a http redirect.
> Retired URLs examples:
>
> https://example.com/wiki/index.php?title=en/Main_Page
> https://example.com/wiki/index.php?title=Glossary
> https://example.com/wiki/index.php?title=Category:Troubleshooting
>
> New URLs examples:
>
> https://example.net/MainPage
> https://example.net/Glossary
> https://example.net/Troubleshooting
>
> All the retired URLs are attached to `/wiki/index.php` with a single query
> string.
>
> There is no direct correlation between the old URLs and the new ones, and I
> have a before-and-after list of URLs to put into a 200+ entry `rewrite`
> list.
>
> My question is two-fold:
>
> 1) Is it better (objectively) to have all the rewrite rules inside a
> `location` referring to `/wiki/index.php` since the only non-Mediawiki URL
> on the retired site is `/`?
Yes. Except I would have the config be not a lot more than
location = /wiki/index.php { return 301 https://example.net/$my_static_wiki; }
> 2) How can I best build the `rewrite` list without using `if` or nested
> `map`?
map $arg_title $my_static_wiki {
default ""; # or whatever
en/Main_Page MainPage;
Glossary Glossary;
Category:Troubleshooting Troubleshooting;
}
Make that map (http://nginx.org/r/map) be as big as you like. And you can
"include" an external file if you find that easier.
Note: I use "$arg_title" are the string. You could use "$query_string",
but then the matching values would be of the form title=en/Main_Page.
And because I put "http://example.net/" in the "return" directive,
I don't put that part of the destination url in the map. Adjust to taste.
> I am grateful for your time and attention, and I would very much appreciate
> an example rewrite rule and/or some reading recommendations for `rewrite`
> with query strings.
If you still want to know about rewrite with query strings, you can look
at http://nginx.org/r/rewrite
Basically -- the incoming query string is preserved unless you ask for
it not to be.
Good luck with it,
f
--
Francis Daly francis at daoine.org
More information about the nginx
mailing list