"The Link You Followed Has Expired" in WordPress: 5 Fixes (2026)
Disclosure: some links on this page are affiliate links. We may earn a commission at no extra cost to you. How we test and rate hosts.
"The link you followed has expired" is WordPress's most misleading error. Nothing expired. You tried to upload a theme or plugin zip that exceeded the server's PHP limits, and WordPress responded with a generic security message instead of saying so. Fix = raise the limits, or bypass the uploader entirely.
Step 0: Check Your Actual Limits
Before editing anything: wp-admin > Tools > Site Health > Info > Server section. Note upload_max_filesize, post_max_size, and max_execution_time. If upload_max_filesize is 2M and your theme zip is 15MB - there's your answer. Media > Add New also displays the effective upload cap.
Fix 1: Raise Limits via .htaccess
Fastest method on Apache hosts. Edit .htaccess in your WordPress root, append:
php_value upload_max_filesize 64M
php_value post_max_size 64M
php_value max_execution_time 300
php_value max_input_time 300
Site throws a 500 after saving? Your host runs PHP as CGI/FPM and forbids .htaccess overrides - remove the lines immediately and use fix 3.
Fix 2: Raise via php.ini or .user.ini
If your host allows per-directory PHP config, create or edit php.ini (or .user.ini on CGI setups) in the WordPress root:
upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 300
Note: post_max_size must be larger than or equal to upload_max_filesize, or the smaller one wins silently.
Fix 3: The Host's Control Panel
The reliable path on managed/shared hosting. In cPanel: MultiPHP INI Editor (or "Select PHP Version" > Options) - set upload_max_filesize and post_max_size there. These host-level settings override file-level attempts and actually stick.
Fix 4: wp-config.php (Memory Only)
wp-config can't raise upload limits, but it can raise memory - which matters when a large zip extracts successfully but processing it exhausts RAM:
define('WP_MEMORY_LIMIT', '256M');
Fix 5: Skip the Uploader - FTP Install
When limits won't budge, bypass them entirely. Unzip the theme/plugin on your computer, upload the resulting folder via FTP to wp-content/themes/ or wp-content/plugins/, then activate it in wp-admin. No PHP limits apply to FTP - done in five minutes regardless of host.
If Nothing Applies: The Shared Hosting Cap
Some hosts hard-cap upload limits server-side and ignore your files. Verify via Site Health: if your values still show 2M after every fix above, the cap is theirs. Two options: a support ticket asking them to raise it, or the FTP method forever. For one-off uploads, FTP wins; for regular client work, a host with sane defaults wins.
Limits Set for Real Work
Bluehost ships workable upload defaults out of the box - a 30MB theme zip uploads without touching .htaccess. And cPanel's MultiPHP INI Editor is one click away when you need more. From $3.99/mo.
Get Reliable HostingRelated: HTTP error on image upload - max execution time fix - memory limit fix - 500 internal server error.
What are you building?
Tell us about your project so we can match the perfect hosting plan.
Hosting Cost Calculator
See exactly how much you'll spend on hosting over time. Compare Bluehost vs popular alternatives and discover your potential savings.
Used to calculate transaction fees (Shopify charges 2% on sales)
Frequently Asked Questions
What does 'the link you followed has expired' mean?
Despite the wording, it's not a link problem. It fires when you upload a theme/plugin zip larger than the server's PHP limits (upload_max_filesize, post_max_size) or the processing takes longer than max_execution_time. WordPress fails the upload and shows this generic nonce-expired message.
What's the fastest fix?
Check your current limits first: wp-admin > Tools > Site Health > Info > Server. If upload_max_filesize is below your file size, raise it. Quickest method for most hosts: add 'php_value upload_max_filesize 64M' and 'php_value post_max_size 64M' to .htaccess.
How do I fix it in wp-config.php?
wp-config can't directly set upload limits - it sets memory: define('WP_MEMORY_LIMIT', '256M'). Upload size limits live in .htaccess, php.ini, .user.ini, or the host's control panel.
How do I fix it in .htaccess?
Add at the end: php_value upload_max_filesize 64M, php_value post_max_size 64M, php_value max_execution_time 300, php_value max_input_time 300. If you get a 500 error after saving, your host forbids .htaccess PHP overrides - remove them and use the host panel instead.
Can I bypass the upload entirely?
Yes - upload the theme or plugin via FTP instead. Extract the zip, upload the folder to wp-content/themes or wp-content/plugins via FTP, then activate in wp-admin. Works regardless of PHP limits and is often faster for large files.
Why did my limits reset or not apply?
On shared hosting, PHP limits are often capped server-side - your .htaccess/php.ini values get ignored beyond the cap. Check Site Health > Info > Server for the effective values; if yours are still low, the host must raise them.
Ready to launch?
Get Bluehost from $3.99/month with a free domain, free SSL, and 30-day money-back guarantee.
Related Articles
Bluehost vs Competitors: The Technical Deep Dive
We ran 47 benchmarks over 90 days. Here's the raw data on why Bluehost dominates.
Fix ERR_TOO_MANY_REDIRECTS in WordPress (2026): The 6 Real Causes
ERR_TOO_MANY_REDIRECTS means an infinite redirect loop. Match your Site URLs, fix Cloudflare SSL mode, reset .htaccess, kill plugin conflicts - step-by-step with code.
WordPress 403 Forbidden Error: 7 Fixes That Actually Work (2026)
403 means the server understood you but refuses to serve the page. Fix file permissions (755/644), regenerate .htaccess, kill security plugin blocks - in the right order.
Fix 502 Bad Gateway in WordPress (2026): Diagnose First, Then Fix
502 means the gateway got a bad response from your server - usually PHP timeouts, CDN issues, or overload. A 9-step diagnostic workflow from browser checks to server logs.
Fatal Error: Maximum Execution Time Exceeded - 6 Fixes (2026)
max_execution_time kills slow updates at 30-60s. Fix the culprit plugin/theme first, then raise the limit via wp-config, .htaccess or php.ini - with exact code.
HTTP Error Uploading Images in WordPress: 9 Fixes Ranked (2026)
The vague 'HTTP error' on image upload usually means memory limits or Imagick. Fix order: rename the file, bump memory, force GD library, check permissions - with code.