Despite my username suggesting otherwise, I am an American with little knowledge of the origin of or naming convention of English town or cities. This is a brain worm that wiggled in and won't leave me alone after binging too much British TV on Netflix...
Anyway, I know from cursory Google searches that Stradford has its origins in old words for "street or road" and, well, a river ford. I cannot find the reasoning for the "upon-Avon" part (or at least, ask the right question). Logically, I know it is because the Avon river goes through the town, but why include such a detail in the name? What is the origin? What dictates a geographic feature being included in a place-name?
Wikipedia told me the county is "Stradford-on-Avon" and the difference between "-on-" and "-upon-" adds to my confusion.
For an American city, could it be called "Memphis-upon-Mississippi"? Back in England, could it be called "London-upon-Thames" (or is that a thing, and I'm too American to realize)?
Basically, why do some British place-names have geographic features in their names, such as "upon-'river name'", "by/in-the-woods", or "by/on-the-sea"? What's the convention to decide such a naming? What is the historical reason for creating and using such place-names?
Sorry if this isn't the right place for this question, tell me where I should go if it's not.
This isn't a burning question, but it is nagging at me the more I think on it.
Thanks for any help!
I think you're probably in the wrong place with this question. I'm not sure you'll be able to get the level of depth of answer required here for such a broad and vague question.
To answer your specifics.
To my knowledge, London has never been known as London upon Thames and it certainly is not known as that now. It had been known as Londinium during Roman times (roughly the first 400 years of the first millenium CE).
There is no county called Stradford on Avon, or even Stratford on Avon, so I'm not sure which Wikipedia page is telling you otherwise.
There is no town called Stradford upon Avon, but rather Stratford upon Avon.
As you have correctly surmised, the "upon Avon" part is because its on the river Avon. In various cases in Britain we see such suffixes added to the place name to distinguish it from other similarly named places. For example, there are two places called Newcastle. The prominent city with the football (soccer) club is more properly known as Newcastle upon Tyne, which distinguishes it from the much smaller Newcastle under Lyme which is nowhere near it. You'd be right to guess that the Tyne, and Lyme elements of these names refer to nearby bodies of water.
A similar example of this is the part of London called Southend, which is distinct from the town Southend on the Essex coast - more formally known as Southend on Sea. This is similar to the example you provide. There is a part of London called Stratford and it is differentiated from the town which is more fully known as Stratford upon Avon.
General note that hamlets, villages, towns and cities up and down Britain often have archaic names that stretch back centuries and have morphed with the language over time (Examples; York was originally a Roman city called Eburacum, later a viking city called Jorvik and the name has simply adjusted through time from there. Similarly, Leeds was originally a Roman city called Leodis and it has just gradually become Leeds).
There is certainly no hard and fast rule that applies everywhere in terms of naming conventions. Many names come directly from languages that pre-date modern English. Even after the Romans there was a huge variety of cultures and languages across multiple Kingdoms for hundreds of years before anything started resembling a single country with a single language. For example, a huge area in the east of England was once known as Danelaw because it was ruled by Danish vikings for a time.
With regard to the name of" Stratford" specifically, its a common way of places to have become known, that is a description of the area. Another example is my own home town of Bishop's Stortford. Originally a stopping point along the way to London from the north, it was simply a place to ford the river. You'd be forgiven for thinking therefore the river is called the Stort. Which it is but it was named after the town rather than the other way around in this case. Stortford actually derives from the earlier Steort Ford which was a saxon town (post Roman, pre-Norman). Apparently Steort in this case means tongue of land. Eventually, it was simply Stortford, so the river became the Stort (which you could ford at Stortford). Later it came under the ownership of a Bishop and voila, you have Bishop's Stortford. Those few sentences have encapsulated a few hundred years of history twisting and changing a place name.
TLDR: There is no single rule because the history of the peoples of the British Isles is extremely broad and goes back thousands of years.
That's a toponymic phenomenon that's peculiar to what we might call "Old English" settlements: Those founded - or at least named - during the Anglo-Saxon period. While Old English can be a wonderfully poetic and descriptive language, its toponyms tend to be very utilitarian and functional: Tutbury (Tot-burh) was an enclosed watch-station, Saltwic (Droitwich) was a productive site for rock salt, Barton-apuđ-Brycgestoc (Bristol) was an enclosed town at the place with the bridge, etc.
As you might imagine, these conventions meant that there was quite a lot of repetition in place names across England. Stoc (place), Burh-tun (enclosed settlement) and -ford are all very common toponymic elements. As such, locating elements are incorporated in order to aid differentiation. The enclosed town on the Trent (Burton-on-Trent) is thus distinguished from the enclosed town at the bridge over the Avon (Barton-apuđ-Bryggestoc), or indeed any of the other Burtons and Bartons across England. The other Stratford that immediately springs to mind is the one now in Greater London. Stratford 'upon Avon' is therefore a simple location distinction.