How to Fix Redirects in Plesk / cPanel
Plesk and cPanel offer multiple redirect mechanisms: panel UI (domain redirects, URL redirects), .htaccess rules, nginx-additional config. Misconfigurations create redirect chains, loops, or unexpected behaviour. This guide covers panel-managed-server redirects. Pair with redirect checker guide.
Step-by-step: How to fix redirects in Plesk / cPanel
- Identify all redirect sources. Panel UI redirects (Plesk: Domain → Hosting Settings → Permanent SEO-safe 301 redirect from www to non-www; cPanel: Redirects). .htaccess rules. nginx-additional configuration. Multiple sources stacking cause chains.
- Choose single source of truth. Best practice: use ONE redirect mechanism per pattern. For www-to-non-www: use Plesk's hosting setting OR .htaccess rule, not both. For URL rewrites: use .htaccess (Apache) or nginx-additional (nginx). Document which mechanism handles which patterns.
- Configure Plesk www-to-non-www. Plesk → Domain → Hosting Settings → 'Permanent SEO-safe 301 redirect from www to non-www' (or vice versa). One toggle handles the entire pattern. Avoid duplicating in .htaccess.
- Audit chained redirects. Tools: HTTP status code checker (curl -I -L follows the chain), screaming frog redirect chains report. Max 1 hop (HTTPS upgrade or www canonicalisation). 2+ hops cause crawl waste and slight ranking signal loss.
- Fix common loop patterns. Loops: A → B → A. Causes: conflicting redirects from .htaccess + panel + WordPress plugin. Test by reading rules in order; identify circular references.
- Set 301 not 302 for permanent moves. Plesk panel redirects default to 301 (correct). .htaccess: 'Redirect 301 /old /new' (not Redirect 302 or Redirect with no code). 302 = temporary, doesn't pass ranking signals reliably. Use 301 unless genuinely temporary.
- Test. curl -I -L https://yoursite.com — check status code chain. screaming frog redirect chains report. Search Console → URL Inspection → checks Google sees correct canonical.
Frequently Asked Questions
Plesk redirects vs .htaccess redirects — which wins?
Order: nginx-additional → Plesk panel → .htaccess (where Apache active). nginx-additional applied first; if it redirects, Apache never sees the request. Plesk panel rules typically inject into nginx-additional or top of .htaccess. Stack interactions matter — always test final behaviour.
Why does my Plesk site show 'too many redirects'?
Loop typically. Common cause: SSL configuration redirecting HTTPS → HTTP (or vice versa) infinitely. Check: Plesk SSL/TLS Certificates — is 'Permanent SEO-safe 301 redirect from HTTP to HTTPS' enabled AND .htaccess rule redirecting HTTPS to HTTP both active? Pick one source.
Best way to set up HTTPS redirect on cPanel?
cPanel → SSL/TLS Status → 'Force HTTPS Redirect' toggle (cPanel 80+). Or .htaccess: 'RewriteCond %{HTTPS} off\nRewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]'. Use one, not both. Verify with curl.
Should I use Plesk panel for individual URL redirects?
Bulk: use .htaccess (more efficient for many rules). Few: panel UI fine. Plesk has Redirects feature (Domain → Apache & nginx Settings → URL redirect rules) — clean UI but stored in nginx-additional which can be overwritten by panel updates. For critical SEO redirects, prefer .htaccess (durable, version-controlled if you back up panel configs).
How do I bulk-import 1000 redirects on Plesk?
Best: edit .htaccess directly. SSH or Plesk File Manager. Format: 'Redirect 301 /old-path /new-path' per line. For >1000 redirects, consider RewriteMap (Apache) — external file, faster lookup. Test 10-20 redirects manually after import.