For a long time I served my blog from http://www.murrayc.com/blog/, with the wordpress installation in /home/murrayc/murrayc.com/blog/. Now I’ve moved it to http://www.murrayc.com/, without moving the wordpress installation on the filesystem.
I did that by:
-
Changing the “Site Address (URL)”, in Settings->General, to http://www.murrayc.com. I kept the “WordPress Address (URL)” as http://www.murrayc.com/blog
-
Adding a RedirectRule in my top-level .htaccess at /home/murrayc/murrayc.com/, so that, for instance, permalink/something could be used instead of blog/permalink/something. The older blog/permalinks still seem to work too.
However, some old links are not working.
http://www.murrayc.com/blog/ takes you to a page that happens to mention blogs, presumably via WordPress’s attempt to guess what you want. Likewise, http://www.murrayc.com/blog/feed takes you to the comments feed for one old blog post.
With the rules added by WordPress (after changing the “Site Address URL”, I think), this is my .htaccess file:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !^/temp
RewriteRule ^(.*)$ blog/$1 [L]
# 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
I’m using WordPress 3.5.1, the latest release, via Dreamhost’s 1-click install, which updates automatically.
This feels like a bug in WordPress. Maybe it’s misinterpreting URLs that it gets at some point that contain blog/blog.
You can skip the first Part of your
.htaccess
, just use the standard WordPress configuration.The main problem is, you need to create a new
index.php
in theroot
directory of your webspace, containing the following:You also need to create a
.htaccess
file in your root directory, containing the standard WordPress.htaccess
, and then everything should work fine.You might want to use 301 redirects, as now there is no blog directory, but it is assumed to be as root.
You have to inform server that these are old urls and should be matched to new one’s. You can do this using .htaccess as code below,
also there are plugins for these.