URL Structure
10-20 minBeginner
Clean, descriptive URLs (permalinks) help search engines understand page topic and improve user click-through rates. WordPress offers powerful controls for both global structure and individual page slugs.
Prerequisites
- WordPress admin access
- Decision on URL structure (before changing existing site)
Easy Recommended
Global Permalink Settings
The most important step: configuring how WordPress generates URLs for all posts.
1
Access Settings
1
Go to Settings > Permalinks
2
Ignore the defaults (Date, Numeric)
3
Select "Post name" (most SEO friendly)
4
Example: yoursite.com/sample-post/
2
Save Changes
1
Scroll down and click Save Changes
2
Note: This flushes the .htaccess rewrite rules automatically
Changing this on a live site will break ALL existing links. You MUST set up redirects immediately if you do this on an established site.
Best Practices
Do
- Keep URLs short and descriptive
- Use keywords in the slug
- Stick to lowercase letters only
- Use hyphens to separate words
- Set the global permalink structure to "Post name"
Don't
- Change URLs on live pages without 301 redirects
- Use dates in URLs for evergreen content (makes content look old)
- Use dynamic parameters (?p=123) for content pages
- Repeat the category in the slug if it's already in the path
- Use special characters or emojis in URLs
Verification Checklist
- Permalinks set to "Post name" or clean custom structure
- URLs contain keywords but are not spammy
- URL slugs use hyphens (not underscores)
- No capitalization in URLs (lowercase only)
- Old URLs redirect to new ones (check via Redirect Path extension)
Pro Tips
- Short URLs tend to rank slightly better and get more clicks
- Avoid changing URLs once a page has backlinks / history
- If you must change a URL, install the "Redirection" plugin and set up a 301 immediately
- Consider a flat structure (yoursite.com/post) vs hierarchical (yoursite.com/category/post) based on your site size
Common Issues & Fixes
Problem: 404 Errors on all inner pages
Solution: Your .htaccess file might be missing or unwritable. Go to Settings > Permalinks and click "Save Changes" to force WordPress to regenerate the file.
Problem: URLs show as index.php/post-name
Solution: Your server might not have mod_rewrite enabled (common on some Nginx/Apache setups). Contact your host.
Problem: Duplicate content via multiple URLs
Solution: Ensure your canonical tags point to the preferred version. This happens if you can access a post via both /category/post and /post.