Table of Contents
This message can immediately stop your progress, leaving you confused. Did the download link from the developer expire? Is there something wrong with the file? It’s a common roadblock for WordPress users, but the good news is that the error message is misleading. The issue isn’t with the link itself; it’s a sign that your website’s server settings are preventing the upload from completing.
This error is a security and performance safeguard, not a bug. Your web host sets default limits on file sizes and the duration of processes to maintain server stability. When you try to upload a large theme or plugin, you might be exceeding these limits.
This comprehensive guide will walk you through exactly what causes this error and provide several step-by-step methods to fix it. From making simple adjustments in your hosting panel to editing core configuration files, you’ll find a solution that works for your technical comfort level, empowering you to get your site back on track.
What Causes the “The Link You Followed Has Expired” Error?
At its core, this error is a timeout issue. Your WordPress website is attempting to perform an action—uploading and processing a file—but it lacks sufficient server resources to complete it within the allotted time. Think of it like a delivery service with rules: if a package is too big or the driver can only wait at your door for 30 seconds, the delivery will fail.
Your server has similar rules governed by its PHP configuration. Let’s break down the specific directives that are usually responsible.
Restrictive File Size Limits
Your server has two key settings that dictate the maximum size of a file you can upload through your WordPress dashboard.
- upload_max_filesize: This directive sets the absolute maximum size for any single file that can be uploaded. If your theme’s ZIP file is 25 MB but this limit is set to 8 MB (a common default on shared hosting), the upload will be rejected.
- post_max_size: This setting defines the maximum size of all data sent in a single POST request, which includes the file itself plus other information. This value should always be equal to or greater than upload_max_filesize. If post_max_size is smaller, it can override the upload limit and cause the process to fail even if the file itself is within the upload_max_filesize limit.
When your theme or plugin file exceeds either of these limits, WordPress stops the process before it can even finish uploading, resulting in the “expired link” error.
Insufficient Script Execution Time
Uploading a file isn’t instantaneous. The server needs time to receive the file and then WordPress needs time to process it—unpacking the ZIP archive, moving the files to the correct directories, and running any installation scripts.
- max_execution_time: This directive controls the maximum number of seconds a PHP script is allowed to run before it is terminated by the server. A typical default value is 30 or 60 seconds. For larger or more complex themes and plugins, the installation process can easily take longer than this, especially on slower servers. When the time limit is reached, the script is killed mid-process, which WordPress interprets as an expired or failed action.
Low PHP Memory Limit
Finally, WordPress needs memory to execute processes. When you upload a file, it requires a certain amount of your server’s RAM to handle the task.
- memory_limit: This setting defines the maximum amount of memory a single PHP script can consume. If the installation process for your new theme or plugin requires more memory than is available, the process will fail. While this more commonly leads to a “fatal error: allowed memory size exhausted” message, it can occasionally contribute to timeout-related errors as well.
How to Check Your Current WordPress Limits
Before you start changing settings, it’s helpful to know what your current limits are. WordPress provides a couple of ways to check this.
- Via the Media Uploader: The simplest method is to go to your WordPress dashboard and navigate to Media → Add New. Below the upload box, you will see text that says, “Maximum upload file size: X MB.” This shows you the upload_max_filesize value. If your theme or plugin file is larger than this number, you’ve found a definite cause of the problem.
- Via the Site Health Tool: For a more comprehensive view, WordPress has a built-in Site Health tool.
- Go to Tools → Site Health.
- Click on the Info tab.
- Expand the Server dropdown. Here you can see detailed server information, including the PHP memory limit, PHP post max size, PHP upload max filesize, and PHP time limit (max_execution_time). This gives you a complete picture of the settings you may need to change.
Now that you understand the causes and know your current limits, let’s explore the solutions.
How to Fix “The Link You Followed Has Expired”
We’ll cover several methods to increase your server’s resource limits, starting with the most accessible and moving to more technical options. If one method doesn’t work for you (some hosting providers restrict certain types of changes), simply move on to the next one.
Method 1: Increase Limits via the functions.php File
For many users, the quickest way to adjust these limits is by adding code to your active theme’s functions.php file. You can access this file directly from your WordPress dashboard.
A word of caution: It’s highly recommended to use a child theme for this modification. If you add the code directly to your parent theme’s functions.php file, your changes will be completely erased the next time the theme is updated. A child theme inherits the parent theme’s functionality but allows you to add your own custom code safely in a separate file.
Step-by-Step Instructions
- Navigate to the Theme File Editor: From your WordPress admin dashboard, go to Appearance → Theme File Editor.
- Select the functions.php File: On the right-hand menu labeled “Theme Files,” find and click on Theme Functions (functions.php). Ensure you are editing your child theme’s file if you have one active.
- Add the Code Snippet: Scroll to the bottom of the file and paste the following code:
PHP
@ini_set( ‘upload_max_filesize’ , ‘128M’ );
@ini_set( ‘post_max_size’, ‘128M’);
@ini_set( ‘max_execution_time’, ‘300’ );
- Update File: Click the “Update File” button to save your changes.
This code attempts to set the upload file size and post size to 128 megabytes and the execution time to 300 seconds (5 minutes). You can adjust these values higher if needed for a particularly large file. The @ symbol before the function is used to suppress any errors if your host has disabled the ini_set() function, preventing it from breaking your site.
Pros and Cons of This Method
- Pros: It’s fast and doesn’t require FTP or cPanel access.
- Cons: The changes are tied to your theme. If you switch themes, the limits revert. Some hosting providers disable this function for security reasons, in which case this method won’t work.
Method 2: Modify the .htaccess File
If your website runs on an Apache server (which is true for most shared hosting plans), you can edit the .htaccess file in your site’s root directory. This is a powerful configuration file that can override server defaults.
Step-by-Step Instructions
- Access Your Site’s Files: You’ll need to connect to your server using an FTP client (like FileZilla) or the File Manager application found in your hosting control panel (like cPanel).
- Locate the .htaccess File: Navigate to the root directory of your WordPress installation. This is the folder that contains the wp-content, wp-admin, and wp-includes folders. The .htaccess file is located here.
- Pro Tip: This file is often hidden by default. In your File Manager or FTP client, look for a setting to “Show Hidden Files” or “Show Dotfiles.”
- Edit the File: Right-click the .htaccess file and choose to edit it. Add the following lines of code at the very bottom, after the # END WordPress line:
Apache
php_value upload_max_filesize 128M
php_value post_max_size 128M
php_value max_execution_time 300
php_value max_input_time 300
- Save and Upload: Save the changes to the file. If you are using an FTP client, you will need to upload the modified file back to the server, overwriting the old one.
The max_input_time directive sets the maximum time a script is allowed to parse input data, like file uploads. It’s good practice to set this to the same value as max_execution_time.
Method 3: Edit the PHP Configuration in cPanel
Many modern hosting providers using cPanel offer a user-friendly graphical interface to change PHP settings without touching any code. This is often the safest and easiest method if it’s available to you.
Step-by-Step Instructions
- Log into cPanel: Access your hosting account’s cPanel dashboard.
- Find the PHP Editor Tool: Look for an icon under the “Software” section named “MultiPHP INI Editor” or “Select PHP Version.”
- If you click “Select PHP Version,” you may see a tab or link for “Options.”
- Select Your Domain: The MultiPHP INI Editor will ask you to select the domain you want to configure.
- Adjust the Directives: You will see a list of PHP directives with dropdowns or input fields. Find the following and change their values:
- upload_max_filesize
- post_max_size
- max_execution_time
- Apply Changes: Click the “Apply” or “Save” button. The changes are applied instantly on the server. This method directly edits the server configuration for your account, making it a very reliable solution.
Method 4: Create or Edit a php.ini File
The php.ini file is the master configuration file for PHP. While you typically won’t have permission to edit the main server’s php.ini file on shared hosting, many hosts allow you to override its settings by placing a custom php.ini file in your site’s root directory.
Step-by-Step Instructions
- Check for an Existing php.ini File: Using FTP or File Manager, look for a file named php.ini in your root folder. If it exists, you can edit it.
- Create a New File: If the file doesn’t exist, create a new blank text file on your computer and name it php.ini.
- Add the Configuration Rules: Open the file with a text editor and add the following lines. Note the syntax is different from the .htaccess method.
Ini, TOML
upload_max_filesize = 128M
post_max_size = 128M
max_execution_time = 300
- Upload the File: Upload this new php.ini file to your WordPress root directory. In some hosting configurations, you might need to place it in your wp-admin folder instead for it to take effect.
Method 5: Contact Your Hosting Provider
If you’ve tried the methods above and the error persists, or if you’re not comfortable editing website files, the simplest solution is to reach out to your hosting provider’s support team. They have direct access to server settings and can increase these limits for you in a matter of minutes.
Simply send them a message explaining that you are encountering the “The link you followed has expired” error and need to increase your upload_max_filesize, post_max_size, and max_execution_time values. This is a very common request, and any competent support team will handle it quickly.
Proactive Strategies to Prevent Future Errors
Fixing the error when it happens is great, but a better long-term strategy is to create a workflow that prevents it from occurring in the first place.
Manually Upload Themes and Plugins via FTP
If you consistently work with large files or if your host has strict limits that cannot be changed, you can bypass the WordPress uploader entirely. By uploading the files manually, you are not bound by the PHP time or size limits.
- Download the File: First, download the theme or plugin ZIP file to your computer.
- Extract the ZIP File: Unzip the archive. You should now have a folder with the same name as the theme or plugin (e.g., my-cool-theme).
- Connect via FTP or File Manager: Access your server files.
- Navigate to the Correct Directory:
- For a theme, navigate to /wp-content/themes/.
- For a plugin, navigate to /wp-content/plugins/.
- Upload the Folder: Upload the entire unzipped folder (from step 2) into the appropriate directory.
- Activate in WordPress: Once the upload is complete, go to your WordPress dashboard.
- If you uploaded a theme, go to Appearance → Themes. You will see your new theme listed. Click “Activate.”
- If you uploaded a plugin, go to Plugins → Installed Plugins. Find the new plugin in the list and click “Activate.”
The Crucial Role of Your Hosting Environment
Your choice of web host has the single biggest impact on your website’s performance, security, and the likelihood of encountering resource-limit errors.
- Shared Hosting: While affordable, these plans place hundreds of websites on a single server, forcing providers to set low, restrictive limits to ensure fair resource distribution. This is where users most frequently encounter the “expired link” error.
- VPS and Dedicated Hosting: These options give you more resources and control but require significant technical expertise to manage and secure the server yourself.
- Managed WordPress Hosting: This is the ideal solution for professionals who want power without the hassle. Managed hosts specialize in WordPress and configure their servers specifically for its needs.
Elementor Hosting is a prime example of a premium managed hosting solution designed for web creators. It’s built on the world-class Google Cloud Platform, providing a robust and scalable foundation that anticipates the needs of a modern website.

Here’s how a solution like Elementor Hosting helps you avoid these issues:
- Optimized and Pre-configured Environment: The hosting environment comes with generous, pre-configured resource limits suitable for professional websites. This means you can install powerful tools like Elementor Pro and other large plugins without hitting a resource ceiling.
- Auto-scaling Cloud Infrastructure: Unlike traditional hosting that can crumble under pressure, Elementor Hosting automatically scales resources to handle traffic spikes or resource-intensive tasks. This ensures your site remains fast and stable, even when you’re uploading large files or experiencing unexpected visitor surges.
- All-in-One Expert Support: A major frustration for web creators is being bounced between a hosting provider and a theme/plugin developer, with each blaming the other for a problem. With Elementor Hosting, you get world-class support for both your hosting and the Elementor builder from a single team of experts who understand the entire ecosystem.
- Enterprise-Grade Security: The platform includes premium security features like an enterprise-level Web Application Firewall (WAF), anti-DDoS protection, and malware scanning. A secure and stable site is far less likely to suffer from the performance hiccups and background processes that can lead to timeout errors.
By investing in a high-quality managed hosting solution, you are proactively eliminating a whole class of potential problems, allowing you to focus on what you do best: creating amazing websites.
Conclusion
The “The link you followed has expired” error in WordPress is more of an inconvenience than a catastrophe. It’s a clear signal that your server’s predefined resource limits are too low for the task you’re trying to accomplish. By understanding the underlying causes—file size, execution time, and memory limits—you can confidently apply the proper fix.
Whether you choose to edit the functions.php, .htaccess, or php.ini file, use a cPanel tool, or simply contact your host, you have multiple pathways to a solution. For a more resilient long-term strategy, adopting proactive measures like manual FTP uploads and, most importantly, choosing a robust managed hosting environment, such as Elementor Hosting, will provide the stable, high-performance foundation your professional website deserves.
With these tools and knowledge, you can move past frustrating errors and focus your energy on building, creating, and growing your online presence.
Looking for fresh content?
By entering your email, you agree to receive Elementor emails, including marketing emails,
and agree to our Terms & Conditions and Privacy Policy.