A Brief History of URLs
In the early days of the web, most URLs were handmade & totally readable. Files were created one by one & named by hand, for example:
http://www.mywebsite.com/welcome.htm
(it was usually .htm in those days, because windows didn’t like the extra character in .html).
After a couple of years, CGI came along (the common gateway interface), which let us put dynamic content onto the web, & people started pulling that content using ‘query string parameters’. A query string parameter looks a little like this:
http://www.mywebsite.com/index.pl?page_desc=welcome
Again, a couple of years after that, content management systems started springing up, and larger sites were all run by databases. Databases are fantastic for managing content, but the way they do it is by using unique (ie. not-human-friendly) identifiers for everything, so we started to see URLs looking a little like this:
https://www.mywebsite.com/index.php?cat=17&pg=17306&sort=asc
To the computer, that’s straightforward: go grab the content for category 17, page 17306 & put it into ascending order. To any human other than the web manager or database admin, it means nothing - and your average google user certainly isn’t likely to search for any of those terms when they’re looking for your content.
To overcome those problems, web managers started using an apache plugin called ‘mod_rewrite’ to convert those meaningless query strings into meaningful URLs. So, for example, ‘cat 17′ might translate to ‘fruit’, ‘pg 17306′ might convert to ‘pink lady apples’ and ’sort=asc’ might convert to ‘price-low-to-high’, resulting in a URL that looks something like this:
https://www.mywebsite.com/fruit/pink-lady-apples/price-low-to-high/
That makes everyone happy: the database manager can still put content wherever he likes on the server, the computer knows exactly where to find each piece of content, the web manager gets more search traffic & the end user knows exactly what they’re getting when they click your URL.
