Redirect site with .htaccess but exclude one folder

Apache.HtaccessRedirect

Apache Problem Overview


I want to 301 redirect an entire website, but exclude everything in a folder called /uploads which exists in the /root directory.

I have googled for this, but didn't come up with anything, or I didn't think what I saw was right.

Can we crack this?

Apache Solutions


Solution 1 - Apache

Try this mod_rewrite rule:

RewriteEngine on
RewriteRule !^uploads($|/) http://example.com%{REQUEST_URI} [L,R=301]

This rule does match any URL path that does not begin with either /uploads or /uploads/ (leading / is missing in the pattern due to the path prefix removal when used in .htaccess files) and redirects the request to the corresponding path at example.com.

Solution 2 - Apache

Simple answer I just stumbled upon myself.

At the top before any other calls add the following

RewriteRule ^(uploads) - [L]

Solution 3 - Apache

I think you want this:

RewriteEngine on
RewriteCond %{REQUEST_URI} !^/uploads/
RewriteRule (.*) http://www.newdomain.com/$1 [R=301,L]

If you get 500 Internal Error then double-check that you have a space between } and ! on the second line.

Solution 4 - Apache

A mod-alias based solution

Redirect all except a specific folder

Add the following line to your root/.htaccess :

RedirectMatch 301 ^/((?!uploads).*)$ http://newdomain.com/$1

This will redirect all pages (excluding /uploads/*) from your old domain to the newdomain.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionPaulAdamDavisView Question on Stackoverflow
Solution 1 - ApacheGumboView Answer on Stackoverflow
Solution 2 - ApachePseudoNinjaView Answer on Stackoverflow
Solution 3 - ApacheDominic RodgerView Answer on Stackoverflow
Solution 4 - ApacheAmit VermaView Answer on Stackoverflow