Module talk:Redirect

Why am I confused?
At WP:VPT §Is it possible to resolve a redirect in template? you wrote:


 * ...  gets you  ...

So I visited Module:Redirect and found this:



So, why, he asks, are there two parameters? In the example you gave both  and. I tried your module with the redirect page from the WT:VPT conversation:


 * →


 * →

Why are two parameters necessary? And, surely there is a better error message than .

—Trappist the monk (talk) 17:12, 18 March 2013 (UTC)


 * It occurred to me to also wonder if the first parameter could be empty:


 * →


 * Apparently not. So what about meaningless text?


 * →


 * Again, apparently not. So what about the name of a real article?


 * →


 * Nope. Is "main" some sort of secret word?


 * —Trappist the monk (talk) 17:34, 18 March 2013 (UTC)


 * takes two parameters: the first is the module name (redirect in this case), the second the function to use from that module (main in this case, as specified by the line " " in the module). So the third parameter given to #invoke is the first parameter given to the function. In that way modules can make more than one functions available.
 * To get more information on the script error, you have click it. MrBlueSky (talk) 14:40, 19 March 2013 (UTC)


 * Thank you. I've learned a bit here.


 * —Trappist the monk (talk) 15:16, 19 March 2013 (UTC)


 * Thanks for answering that! I've gotten used to using these module talk pages for anything but talking, and this is the first I noticed the conversation... Wnt (talk) 20:44, 19 March 2013 (UTC)

Redirect types and categories
I am working on building a module to hold the matrix of the redr codes and associated categories, and also to have logic that automatically detects the correct codes for a redirect. See Lua_requests and especially the especially User:John Vandenberg/AutoCategoriseRedirect where I am doing some initial prototyping. The easiest to automatically detect are WP:Shortcuts and Category:Cross-namespace redirects, and those are the ones I am most interested in automatically detecting. , if you think any of the functionality I am working on would benefit this module, and the current uses, some code sharing needs to be organised (the code could be put in this module, or in a separate module that this modules uses), as the automatic redirect type detection should use the 'Redirect' module to extract the redirect target. John Vandenberg (chat) 00:41, 22 January 2014 (UTC)


 * Well, actually at the moment I can't edit the module on account of it being protected (Mr. Stradivarius did say I could get template editor status, but I procrastinated about picking out a more secure password). He actually rewrote a lot of the highest-level code in the module anyway, and should be good to ask.  Also, I wonder about -- I don't really know -- how much time it takes to require a routine out of another module.  I don't understand how you're going to get your module called from uncategorized redirects, but if you end up tagging a very large number of them, even a tiny delay for opening another module could add up.  And, if someone ever goes in and edits the required Module:Redirect, it'll affect all those pages.  There's also a little bit of optimization that can be done by combining the two modules: right now, you do an #invoke:Page|namespace and an invoke of this module, each of which make an expensive call to mw.title.new, and both would have to be adapted if they're to share it.  So I'm thinking you might want to just copy the code, as inelegant as that may be. Wnt (talk) 07:53, 22 January 2014 (UTC)
 * I'll implement the new module slowly using this module, on only a few pages of each type, so that changes dont have a large impact. If there is a performance issue, I'll switch to calling the relevant functions directly. John Vandenberg (chat) 10:32, 26 January 2014 (UTC)

Flag to resolve soft redirects and redirects at RfD
When a redirect is listed at RfD, it looks like User:John Vandenberg/testcases/Redirect/1 (as documented poorly at mw:Help:Redirects), which the mediawiki software determines is not a 'redirect', and this module doesnt parse and extract the redirect target. It would be nice if RFDnote and other functions could ask for the redirect target using this module, knowing that it is currently not an active redirect. Likewise, it would be nice if this module could extract the target from soft redirect, wiktionary redirect, etc. I think one 'soft=yes' flag would be sufficient to support any 'semi'-redirect page. I'm happy to put up a code mod in the sandbox if others think this is appropriate. Otherwise I'll write a SoftRedirect Module ;-) John Vandenberg (chat) 09:51, 26 January 2014 (UTC)

Protected edit request on 15 April 2014
Please make these changes, so that works right when the page name contains apostrophes or other characters escaped by.

Jackmcbarn (talk) 21:13, 15 April 2014 (UTC)
 * Yes check.svg Done — Mr. Stradivarius  ♪ talk ♪ 06:25, 16 April 2014 (UTC)
 * This change will re-break this if it goes live. See the last test in Module talk:Redirect/sandbox testcases. (Unrelated: Why does this module have a /testcases and a /sandbox testcases?) Jackmcbarn (talk) 16:10, 17 May 2014 (UTC)
 * I've moved the sandbox test cases to Module:Redirect/testcases. I've also switched to doing the canonicalisation purely with title objects. This makes things easier coding-wise, but it does mean that we have one more expensive function call for each call to the module. Is this likely to cause problems anywhere? — Mr. Stradivarius  ♪ talk ♪ 04:55, 18 May 2014 (UTC)
 * I don't think that will cause problems. Jackmcbarn (talk) 17:30, 18 May 2014 (UTC)

Query
just wondering if there might be any possibility of a module which would detect a disambiguation page? There is some logic associated with Template:Disambig editintro which will make it display automatically on such a page; I don't know if it can be exploited here. Thanks &mdash; Martin (MSGJ · talk) 09:15, 13 January 2016 (UTC)
 * I had this idea back in 2014, but after talking about it on IRC it looks like it wouldn't be feasible. There's a Phabricator ticket about it at T71441. — Mr. Stradivarius  ♪ talk ♪ 09:40, 13 January 2016 (UTC)
 * Oh well - pity! But paradoxes must be avoided at all costs ;) &mdash; Martin (MSGJ · talk) 09:51, 13 January 2016 (UTC)
 * I think there's actually a way to do this. I've elaborated on the ticket. Kaldari (talk) 21:18, 31 October 2016 (UTC)

Protected edit request on 30 March 2017
Sandbox diffs

Edits allow for the fragment to be included when requesting the target of a redirect, but only when the fulltext parameter is set, meaning no changes are required to templates that already use the module as-is.

Example:



--  Alex TW 10:03, 30 March 2017 (UTC)
 * URL 1 is the "old" part of your sandbox diffs link, and URL 2 is the "new". Do I understand rightly that URL 1 is the current version of the module page, and that you're asking that we copy the content of URL 2 to the module?  Nyttend (talk) 00:54, 3 April 2017 (UTC)
 * PS, AlexTheWhovian, I meant to ping you in the first edit but forgot. Nyttend (talk) 00:55, 3 April 2017 (UTC)
 * My bad. What I'm looking to be implemented is what is in the sandbox as it stands now. --  Alex TW 00:57, 3 April 2017 (UTC)
 * Done. They didn't make me an admin because I understand this kind of coding — as always, any admin should revert me without question if I made some sort of mistake.  Nyttend (talk) 01:03, 3 April 2017 (UTC)
 * Thank you! Now I can proceed with my related projects. I've tested the code thoroughly, and the edits only add onto the previous version of the code; any article using the code should remain exactly the same as it was. Cheers for that. --  Alex TW 01:04, 3 April 2017 (UTC)

Protected edit request on 26 June 2017
For Testing SoumyaSahu (talk) 10:43, 26 June 2017 (UTC)
 * ❌ Unclear request. If you want to modify test to the module, you may do so at Module:Redirect/sandbox. --  Alex TW 10:50, 26 June 2017 (UTC)

cross project calls
Is there a way to show if a page in another project is a redirect and find the actual article? --Traveler100 (talk) 11:31, 17 February 2018 (UTC)
 * gives but want Toronto Pearson International Airport.

Why parse the page content?
Hi. Why does this module parse the page text to find the redirect target? Why not use Title.redirectTarget instead? I guess Title.redirectTarget wasn't available when this was implemented, but now that it's there, it should be used instead. Qwertyytrewqqwerty (talk) 14:28, 3 March 2018 (UTC)
 * Or maybe there's some good reason for it to work like that. AlexTheWhovian, any thoughts on this?
 * I have a version that uses Title.redirectTarget here: es:Módulo:Redirect es:Módulo:Redirección (no testcases, though). Qwertyytrewqqwerty (talk) 10:04, 9 March 2018 (UTC).
 * I've sandboxed it Galobtter (pingó mió) 11:41, 31 March 2018 (UTC)
 * Somebody sumbit an edit request!. &#123;&#123;3x&#124;p&#125;&#125;ery (talk) 00:34, 15 May 2018 (UTC)

Expensive call?
Could someone add to the documentation that this module call is expensive (or not expensive)? - 15:58, 21 March 2018 (UTC)

redirected files
gives "" (blank), despite the fact that File:IMAGE.jpg is a redirect to File:IMAGE (Explorer 78).jpg. I created T193162 about this issue, but wanted to alert you that this module is also affected. --Jarekt (talk) 13:15, 26 April 2018 (UTC)
 * Jarekt, do you think this could be related to another strange behaviour (possibly related to isRedirect) causing spurious transclusions being reported in various places? See here: User talk:Paine Ellsworth
 * Thanks and greetings. --Matthiaspaul (talk) 07:27, 30 July 2018 (UTC)

Template-protected edit request on 11 February 2019
Kindly add me to the list. User: Shevonsilva Shevonsilva (talk) 22:48, 11 February 2019 (UTC)
 * ❌ User:Shevonsilva, this is the module, not the Wikiproject page, the module do not contain any user name list. If you would like to add your name to the project, you need to go to WikiProject_Redirect and add your name there. -- VulpesVulpes825 (Talk) 00:02, 12 February 2019 (UTC)

Module redirection
There is not a warning system in ¨Wikipedia or WikiMedia to say: this module exists with other name (ie. taken the information from Wikidata), as Wikimedia Commons does when you try to upload an existing image. So, what to do when creating a module, when one thinks it did not exist (and exist with other translated name)?. Can be used temporally an to the other module?. --BoldLuis (talk) 20:01, 14 May 2020 (UTC)

Protected edit request on 7 September 2021
Please apply these changes, originally written by User:Galobtter. This will make it so the redirect target is just taken from the table returned by mw.title.new using the redirectTarget property instead of having to find it in the wikitext of the redirect, saving an expensive parser function call. These changes cause a test case to fail, but that can be disregarded because they make it (and a few more) obsolete anyway. – Rummskartoffel 11:58, 7 September 2021 (UTC)
 * ✅. is it the testContentPercentInsideAmpersandCanonicalisation test you were referring to above? &mdash; Martin (MSGJ · talk) 05:34, 10 September 2021 (UTC)
 * I restored function  because it is used by Module:RfD and the missing function was causing errors. In general, it is difficult to know if   is used elsewhere and it's safest to assume it is. Johnuniq (talk) 07:50, 10 September 2021 (UTC)
 * @MSGJ: Yes, that's the one. Since  is still used I guess these tests aren't obsolete after all, but should be changed to test that function directly. I might take a shot at that later. – Rummskartoffel  11:28, 10 September 2021 (UTC)

Section is stripped
Not a redirect:  &rarr;

Redirect:  &rarr;

Pinging last editor @Johnuniq. &#8213; Qwerfjkl  talk  18:47, 21 February 2022 (UTC) &rarr; While the module isn't broken per se, it causes a problem at WP:AFCRC (from Request redirect), and it would be nice if the module was fixed improved. Thank you for taking the time to respond to my hastily-added examples. &#8213; Qwerfjkl  talk  20:44, 22 February 2022 (UTC) The problem is that if the "target of redirect" requested has a section, it is stripped e.g. Wikipedia#History &rarr; Wikipedia, which isn't helpful. The template checks if the target is a redirect first, to minimise section stripping errors. &#8213; Qwerfjkl  talk  07:16, 23 February 2022 (UTC)
 * I was here only to fix an error which I tracked to this module. I might have a look later but as I know nothing about this module I would need to be told exactly what should happen with the above examples which I infer are wrong. Are the examples in the documentation correct? Johnuniq (talk) 23:41, 21 February 2022 (UTC)
 * I'm not wholly convinced that there is anything really wrong with the module. !! is not a redirect page and it doesn't have a section that the   fragment can link to.  WikiPedia is a redirect to Wikipedia.  The redirect page does not have a section that the   fragment can link to; because 'WikiPedia' is a redirect, the module correctly returns the target page Wikipedia.  Yeah, the module documentation says: If page-name does not exist or is not a redirect then page-name is returned.  If that is taken literally then perhaps it is broken.  The fragments disappear at line 8.
 * —Trappist the monk (talk) 00:28, 22 February 2022 (UTC)
 * @Trappist the monk: I apologise if I was unclear with my example, I just typed  because I was in a hurry. The example   &rarr;  better demonstrates how the section is stripped when the redirect is followed, and likewise, if the page isn't a redirect, the section is still stripped:
 * @Trappist the monk: I apologise if I was unclear with my example, I just typed  because I was in a hurry. The example   &rarr;  better demonstrates how the section is stripped when the redirect is followed, and likewise, if the page isn't a redirect, the section is still stripped:
 * I looked in which you are apparently blaming for whatever issue it is that has arisen at WP:AFCRC.   does not invoke Module:Redirect.  Do you really mean ?  That template does invoke module:redirect.  Without some sort of indication of what the problem really is and where it lies, and some sort of definitive test case that can illustrate problem and confirm the fix, I am not willing to make any changes to Module:redirect.  Perhaps some other editor is.
 * —Trappist the monk (talk) 00:08, 23 February 2022 (UTC)
 * I do mean, specifically:
 * I have simplified the above mess to what I think are the essentials:
 * replacing  with the 'target' you suggest above ('Wikipedia#History'):
 * That result because Wikipedia is not a redirect.
 * Changing to 'WikiPedia#History':
 * That result because WikiPedia is a redirect where the target is specified as 'Wikipedia'.
 * The purpose of Module:Redirect  is to return   from the redirect's  .  If   does not contain a   then module:redirect does not return a fragment.  There are two ways for module:redirect to get a target from a redirect page:
 * where  is the unparsed content of a redirect page – for WikiPedia, that is the   and the  template.  This function is standalone so is not called by  .  To see this in action, enter this in a Scribuntu debug console (contents of WikiPedia all run-together here for convenience):
 * For the other way, module:redirect creates a title object and then queries the object to fetch the target. This is how   gets the redirect target.  To see this in action enter this in the debug console:
 * Just for completeness, try this:
 * All of those return 'Wikipedia' because that is the target specified in 'WikiPedia'.
 * If wants to apply a fragment, it is that template's responsibility to do so.
 * —Trappist the monk (talk) 15:32, 23 February 2022 (UTC)
 * I agree that retaining the section is not the primary function of the module, I was just curious if it was possible/desirable to do so. As you advise to handle this in, I'll implement that.. &#8213; Qwerfjkl  talk  16:19, 23 February 2022 (UTC)
 * Note that redirects can themselves point to specific sections of pages; in such a case I'd assume (but don't have any examples handy to actually test) that the module will return the target page, with the section intact. If the module preserves any section passed in when the title passed in is a redirect, it would have to correctly handle that case. (I'm not completely sure how MediaWiki handles a link-with-section to a redirect that points to a specific section of a page, but it makes the most sense to me that in that case, MediaWiki would ignore the section on the link and only use the section targeted by the redirect.) 「 ディノ 奴 千？！ 」☎ Dinoguy1000 02:14, 25 February 2022 (UTC)
 * I have created a redirect of my sandbox that redirects to this discussion (User:Trappist the monk/sandbox has ).
 * If you use the same form of invoke that is used in you get:
 * But, if you tell the invoke to return the full text of the redirect, you get:
 * —Trappist the monk (talk) 14:17, 25 February 2022 (UTC)
 * Interesting... if I add a section to the link to your sandbox page, it overrides the section in the target of the redirect: User:Trappist the monk/sandbox. This is opposite to what I expected would happen. 「 ディノ 奴 千？！ 」☎ Dinoguy1000 08:34, 26 February 2022 (UTC)
 * I don't know why that is but I do know that it has nothing to do with Module:redirect because  is a generic, everyday, wikilink.  Just as a test, I added a section §Foobar to my sandbox.  That did not change anything; User:Trappist the monk/sandbox redirects to the top of this page.  Perhaps ask at WP:VPT?
 * —Trappist the monk (talk) 18:50, 26 February 2022 (UTC)
 * My point with it was that, if this module is changed to preserve sections on input, then it would have to handle the case where a section is passed in, but the input title is a redirect that includes a section itself. The obvious way to handle this case is to mirror what MediaWiki does. Beyond this, I have no particular opinion on the functionality in general. 「 ディノ 奴 千？！ 」☎ Dinoguy1000 12:08, 27 February 2022 (UTC)
 * —Trappist the monk (talk) 15:32, 23 February 2022 (UTC)
 * I agree that retaining the section is not the primary function of the module, I was just curious if it was possible/desirable to do so. As you advise to handle this in, I'll implement that.. &#8213; Qwerfjkl  talk  16:19, 23 February 2022 (UTC)
 * Note that redirects can themselves point to specific sections of pages; in such a case I'd assume (but don't have any examples handy to actually test) that the module will return the target page, with the section intact. If the module preserves any section passed in when the title passed in is a redirect, it would have to correctly handle that case. (I'm not completely sure how MediaWiki handles a link-with-section to a redirect that points to a specific section of a page, but it makes the most sense to me that in that case, MediaWiki would ignore the section on the link and only use the section targeted by the redirect.) 「 ディノ 奴 千？！ 」☎ Dinoguy1000 02:14, 25 February 2022 (UTC)
 * I have created a redirect of my sandbox that redirects to this discussion (User:Trappist the monk/sandbox has ).
 * If you use the same form of invoke that is used in you get:
 * But, if you tell the invoke to return the full text of the redirect, you get:
 * —Trappist the monk (talk) 14:17, 25 February 2022 (UTC)
 * Interesting... if I add a section to the link to your sandbox page, it overrides the section in the target of the redirect: User:Trappist the monk/sandbox. This is opposite to what I expected would happen. 「 ディノ 奴 千？！ 」☎ Dinoguy1000 08:34, 26 February 2022 (UTC)
 * I don't know why that is but I do know that it has nothing to do with Module:redirect because  is a generic, everyday, wikilink.  Just as a test, I added a section §Foobar to my sandbox.  That did not change anything; User:Trappist the monk/sandbox redirects to the top of this page.  Perhaps ask at WP:VPT?
 * —Trappist the monk (talk) 18:50, 26 February 2022 (UTC)
 * My point with it was that, if this module is changed to preserve sections on input, then it would have to handle the case where a section is passed in, but the input title is a redirect that includes a section itself. The obvious way to handle this case is to mirror what MediaWiki does. Beyond this, I have no particular opinion on the functionality in general. 「 ディノ 奴 千？！ 」☎ Dinoguy1000 12:08, 27 February 2022 (UTC)
 * I don't know why that is but I do know that it has nothing to do with Module:redirect because  is a generic, everyday, wikilink.  Just as a test, I added a section §Foobar to my sandbox.  That did not change anything; User:Trappist the monk/sandbox redirects to the top of this page.  Perhaps ask at WP:VPT?
 * —Trappist the monk (talk) 18:50, 26 February 2022 (UTC)
 * My point with it was that, if this module is changed to preserve sections on input, then it would have to handle the case where a section is passed in, but the input title is a redirect that includes a section itself. The obvious way to handle this case is to mirror what MediaWiki does. Beyond this, I have no particular opinion on the functionality in general. 「 ディノ 奴 千？！ 」☎ Dinoguy1000 12:08, 27 February 2022 (UTC)

Exception for redirects that intentionally have Wikidata objects?
I have utilzed this nice module in to follow redirects. Then Get QID still works if a page is moved.

However, there are redirects that intentionally have their own Wikidata objects. See Category:Wikidata_redirects. In that case I want that template to give the QID of the source page, and not of the redirect destination page. Should I implement that in the template as an ugly work-around, or could this module take care of that problem?

For example, gives. I want it to result in.

Meaning: now gives, but my question is if it can make an exception because the page belongs to the above mentioned category, and respond with 388282 ʻAkepa ? Tomastvivlaren (talk) 10:40, 1 March 2022 (UTC)
 * I solved the problem temporarily using ugly template code in Get QID.Tomastvivlaren (talk) 17:16, 1 March 2022 (UTC)

Protected edit request on 16 April 2023
This might be a little excessive for an edit to a fully protected module, but:

I would like to simplify the following (lines 103-107, in function ): to: because  will only ever yield "true" or "false". (diff) {&#123;Lemondoge&#124;Talk&#124;Contributions&#125;} 21:43, 16 April 2023 (UTC)


 * Has this been tested? Scibunto manual does not explicitly say that isRedirect will be true or false. &mdash; Martin (MSGJ · talk) 07:38, 17 April 2023 (UTC)
 * @Lemondoge: I have noticed your edits to sandbox modules that I monitor. Thanks for the tweaks and thanks for finding the bug noted here. However, I am not sure there is any benefit from optimizing code unless done as part of a significant effort by someone deeply invested in the particular module. Take this edit request—you are probably correct but who knows and who cares? It can be very challenging to verify rearrangements to boolean expressions. The original here is bulletproof. More importantly, it is easily seen to be bulletproof. I would leave it as is. It's not particularly important, but the edit request would result in uncertainty about what return values can occur while the original code removes any doubt. Johnuniq (talk) 07:59, 17 April 2023 (UTC)
 * Aye, fair enough. {&#123;Lemondoge&#124;Talk&#124;Contributions&#125;} 12:43, 17 April 2023 (UTC)