Create :slug field for unique URLs #31
Labels
enhancement
New feature or request
good first issue
Good for newcomers
help wanted
Extra attention is needed
As a
user
(content creator)I want to have a slug (easy to read and relevant) URL for the content I am publishing
So that any person seeing the URL can immediately infer/deduce the content.
A
:slug
is user/SEO friendly path to an item of content.Instead of using the
:cid
of the content e.g:gVSTedHFGBetxyYib9
or a UUID e.g:f587be12-bdd4-4723-a8db-e0ee2384aea0
which is useless from a both a user's and SEO perspective.Todo
Create following specification:
:slug
field (String
) - the slug will be stored as plaintext. (no need to encrypt it as it'spublic
)Fields.validate_slug
function that validates the:slug
as containing exclusively URL safe characters:abcdefghijklmnopqrstuvwxyz0123456789-_.
:slug
should return and Error whichautoform
will display in the frontend.e.g: "That slug is invalid, please include only valid characters to ensure that humans can read/type it:
abcdefghijklmnopqrstuvwxyz0123456789-_.
":slug
from afields
perspective, but this should be done in the Application that is using the:slug
field to ensure that there are no duplicate/colliding URLs. This should be added to the documentation.Thankfully there is this StackOverflow answer:
https://stackoverflow.com/questions/695438/safe-characters-for-friendly-url
Which gives most of the detail we need:
ALPHA DIGIT "-" / "." / "_" / "~"
However I would exclude the
~
("tilde") character,because it's not immediately findable on some keyboards and a pain on mobile.
Thus the valid characters for a
:slug
should be:abcdefghijklmnopqrstuvwxyz0123456789-_.
Yes, the W3C Spec allows uppercase characters in URLs https://www.w3.org/TR/WD-html40-970708/htmlweb.html as per https://stackoverflow.com/questions/7996919/should-url-be-case-sensitive but how many of the top 100 websites
Ok, Amazon uses case sensitive URLs ... 🙄
e.g: https://www.amazon.com/Zero-One-Notes-Startups-Future/dp/0804139296/
although ... what really matters in an Amazon URL is the "ASIN" (
:id
) of the item ...this works: https://www.amazon.com/iCan-write-anything-in-this-section/dp/0804139296/
However many ASIN's are all UPPERCASE:
e.g: https://www.amazon.com/Nintendo-Switch/dp/B01MUAGZ49/
but they still work if down-cased: https://www.amazon.com/Nintendo-Switch/dp/b01muagz49 ...
I vote that we make
slug
lowercase for now, and if any user requests that we allow UPPERCASE characters, we can add that later.The text was updated successfully, but these errors were encountered: