Redirect site with .htaccess but exclude one folder
Apache.HtaccessRedirectApache 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.