Don't you just hate the "/node/007" type of “Drupalish” URLs? They say nothing to Google's bots and they sure look as some discouraging hard-nut-to-crack enigmas to your site visitors, too. That Drupal core supports URL aliases in core is no news for anyone, but you still might be having some unanswered questions on how to generate automatic URL aliases in Drupal 8, right? Automatically creating URL slugs is the norm nowadays! This is precisely why I've done my best to put together a step-by-step guide for you on how to leverage the Pathauto module's full functionality on your Drupal 8 site and therefore automatize the whole path aliases creation process:
That Pathauto should be an essential module in your “emergency toolkit” as a Drupal developer is no news for you, right? Just imagine how the sites that you work on would look like and what ranking performance they would “score”, on a long term (not to mention the impact on the overall user experience, as well), as some “clusters” of “/node/xxx” URLs.
And since the Pathauto module comes to turn generating URL aliases into an AUTOMATIC process (since “manually” creating each and every path alias, for each and every type of content on a given Drupal site, is such a... “dusty” old practice), I'll show you how you can harness precisely its “automation” superpower!
1. First Things First: Install and Enable the Due Modules
And these are:
The “trio” you'll need downloaded and enabled on your Drupal 8 site before you can even consider switching your attention to creating aliases and defining Pathauto's custom patterns.
Are you a Drush “addict” or a Composer fan? For you get to choose from these 2 methods for installing these key 3 modules:
a. enter the following command if it's Composer that you prefer:
$ composer require drupal/pathauto
b. or enter the following commands in Drush:
$ drush dl pathauto token ctools $ drush en pathauto
Next, just run a quick check-up (simulating that you add a new piece of content) just to make sure that everything's working smoothly: go to Content > Add content and just select a content type from those listed there!
2. Now It's Time to Create Your URL Aliases (“Manually” This Time)
You don't need to harness Pathauto's power. At least not at this stage, when you're just creating your URL aliases.
The Drupal core module Path can “handle the job all alone” (Pathauto will just come, subsequently, to automate the whole creation process, get it?).
So, back to our sheep: we're manually creating our URL aliases.
And how do we do that? Luckily we have (again) 2 options to choose from (don't you just love it how there are always at least 2 ways of getting things done in Drupal?):
a. you can create them from your “URL aliases” page: Configuration > “URL aliases” > “Add alias”
b. or directly from your content edit form: click on “URL path settings” (you'll find this field, as shown in the image below, at the edit form's right side) and simply enter your path into the “URL alias” field there
3. Define Your Custom Pathauto Patterns
Since, as you well know it, aliases rely on pattern systems, it's you, the site's administrator/developer, that get to define these specific patterns and, thus, the aliases' structures.
Here's an example of an URL pattern: article/[node:title]!
What the Pathauto module will do is make it look less “generic” by naming it: it will replace the [node:title] part with the article's title itself.
And now, here's the step-by-step guide to follow for defining your own patterns as you generate automatic URL aliases in Drupal 8:
Step 1: Configuration “URL aliases” > click the “Patterns” tab
Step 2: Just give the “Add Pathauto pattern” blue tab a click
Step 3: Choose “Content” from the “Pattern type” drop-down menu that you have there and then just enter your “article/[node:title]” pattern into the “Path pattern” field on the same screen
Step 4: Select “Article” as your “Content type” (this way you're setting up that this specific custom pattern should get applied exclusively to the article content types on your Drupal 8 site)
Step 5: Type “Article” into the “Label” field
Step 6: Hit the “Save” button
Now that you've defined your custom pattern you'll notice a new checkbox “popping up” in your “URL path settings” field, on the right side of your content form: the “Generate automatic URL alias” one.
- once checked, it will automate aliases based on that specific pattern that you will have defined
- once unchecked, you get to override the automatically generated one and to replace it manually with your own custom alias
Note: while you should check this particular box for new content, you might need to manually enable it for the already existing content
4. Configure the Pathauto Module's Settings
Now in order to adapt Pathauto's functionality to your own Drupal 8 site's “needs” in terms of url aliases creation, you'll need to configure a setting or two (or three).
In this respect, here are 3 of the most common settings you might want to “tweak“:
- Punctuation: you'll get to determine how special characters will be tackled
- Enable entity types: you'll get to make use of Pathauto's support for custom entities
- Strings to Remove: you're enabled to point out the words you want removed from the URL alias
Note: avoid, at all costs, tweaking these settings on your live Drupal 8 site! I know I shouldn't even be mentioning it, yet I am: backup your database before you go ahead and configure your Pathauto module's settings! This way you prevent the worse possible scenario to turn into reality: to end up with broken URLs on your live site!
5. Bulk Generate Automatic URL Aliases in Drupal 8
If it's a content-packed Drupal 8 website that you're dealing with, then you must be facing the challenge of bulk generating URL aliases.
- Just click the “Bulk generate Tab”
- Choose the entity type that you need to bulk generate
- Select your aliases
Note: Needless to add that you shouldn't perform any bulk generation action on your Drupal 8 site before you haven't backed up your database!
6. Go Ahead and Delete Your URL Aliases If You Have To
Especially since removing them is nothing but a quick, two-step process:
- you click the “Delete aliases” tab
- you select whether it's all the aliases that you need to delete or just a specific entity type (user, taxonomy terms, content etc.) instead
Note: Do keep in mind to check the “Only delete automatically generated aliases” box (in the “Delete Options” section), thus ensuring that your manually created aliases won't get deleted as well.
Now all you need to define is the token to be used in generating your aliases: hit the “Browse available tokens” tab.
And this surely isn't an easy decision to make with such a “challenging” collection of tokens to choose from (after figuring out, of course, what each one of them actually does).
And this is how you do it! This is how you generate automatic URL aliases in Drupal 8 using the Pathauto module!