Mobile app version of vmapp.org
Login or Join
Kristi941

: 301 redirects for /blog to blog subdomain not working I just created a new subdomain for my blog so blog.example.com - it used to be www.example.com/blog so I am now trying to write 301 redirects

@Kristi941

Posted in: #301Redirect #Htaccess #Redirects #Wordpress

I just created a new subdomain for my blog so blog.example.com - it used to be example.com/blog so I am now trying to write 301 redirects from all my old /blog posts to the new blog.example.com URLs. I have placed the following code in my htaccess:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.example.com$
RewriteRule ^blog/(.*)$ blog.example.com/ [L,R=301]


However, do I put it after the # END Wordpress in the htaccess or am I missing something? Where in the htaccess file do I put this code or is it even the correct code?

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress


OR Do I need to write out

Redirect 301 /blog/example-post blog.example.com/example-post

Any help would be appreciated, thanks!

10.03% popularity Vote Up Vote Down


Login to follow query

More posts by @Kristi941

3 Comments

Sorted by latest first Latest Oldest Best

 

@Moriarity557

I had same problem, site was very very slow.

Changed [L,R=301] to [R=301,L] and problem solved.

10% popularity Vote Up Vote Down


 

@Jamie184

...do I put it after the # END Wordpress in the htaccess or am I missing something?


No. Any external redirect should come before the # BEGIN WordPress code block. ie. Before WP internally rewrites the request.

If you placed it after the WP code block it will simply be ignored, since WP will have already routed the request.

Otherwise your mod_rewrite redirect looks OK, assuming your old /blog/ URL always has a trailing slash (to the "blog root"), the blog subdomain points to the same place on the filesystem as your main domain and you have already canonicalised the domain (ie. it can only be accessed via the www subdomain).


Redirect 301 /blog ....



You should avoid mixing RewriteRule (ie. mod_rewrite) and Redirect (ie. mod_alias) directives. Since these two directives belong to different modules they execute at different times during the request and you can end up with confusing conflicts if you are not careful. So, since you are already using mod_rewrite (WordPress directives) then you should stick to using mod_rewrite for any redirects.

It wouldn't matter were you placed the Redirect in your config file - it would still execute after the mod_rewrite directives.

10% popularity Vote Up Vote Down


 

@Jessie594

You want something like this using a mod_alias

Redirect permanent /blog blog.example.com/

The keyword permanent causes Apache to send an HTTP status of 301 Moved Permanently instead of 302 Found.

To use your method you can try this

RewriteEngine on

RewriteCond %{HTTP_HOST} ^(www.)?example.com$
RewriteRule ^blog/(.*)$ blog.example.com/ [L,QSA,R=301]

RewriteCond %{HTTP_HOST} ^blog.example.com$
RewriteCond %{REQUEST_URI} !^blog/
RewriteRule ^(.*)$ /blog/ [L,QSA]

10% popularity Vote Up Vote Down


Back to top | Use Dark Theme