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.

2 Answers
2

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 the root directory of your webspace, containing the following:

<?php
/**
 * Front to the WordPress application. This file doesn't do anything, but loads
 * wp-blog-header.php which does and tells WordPress to load the theme.
 *
 * @package WordPress
 */

/**
 * Tells WordPress to load the WordPress theme and output it.
 *
 * @var bool
 */
define('WP_USE_THEMES', true);

/** Loads the WordPress Environment and Template */
require('./blog/wp-blog-header.php');
?>

You also need to create a .htaccess file in your root directory, containing the standard WordPress .htaccess, and then everything should work fine.

Leave a Reply

Your email address will not be published. Required fields are marked *