tech
How to fix: URL lowercase, hyphens, short, no special chars
Why this matters
Clean URLs are easier for crawlers to process, easier for users to share, and a minor ranking signal. Lowercase, hyphens (not underscores), under 100 chars, no special characters or session-ID-style parameters. Legacy variants should 301 to the canonical version.
Background
Clean URLs are easier for crawlers, easier to share, and a minor ranking signal. Lowercase, hyphens (not underscores), under 100 chars, no special characters or session IDs.
References
Google Search Central · URL structure best practices
How to fix
Code snippet for each stack we cover. Pick the one matching your server / framework.
nginx
Use rewrite rules to lowercase + hyphenate legacy URLs and 301 to the canonical version.
apache
Use mod_rewrite + RewriteMap (lowercase) or RewriteRule for individual fixes.
cloudflare
Transform Rules → Rewrite URL → URL normalisation (lowercase, strip params).
wordpress
Settings → Permalinks → use a clean structure ('Post name'). 301 legacy URLs via Redirection plugin.
flask
Use Flask-RESTful-style URL conventions. Validate/normalise paths at the URL layer.
express
Use a URL normalisation middleware (e.g. lowercase + strip trailing slash).
rails
Use friendly_id gem; lowercase all routes.
Verify it's working
View your homepage URL. All-lowercase? Hyphens not underscores? <100 chars? No unnecessary query params?
Want to know if your site has this issue?
Run a free 53-check audit — security, GDPR, NIS2, and technical SEO.
Audit my site →