Obrigado pelas suas respostas, eu realmente agradeço a elas.
Depois de algumas tentativas e erros, descobri. O problema era a linha de base para as regras de reescrita na parte do blog das coisas.
Para começar, algo que ajudou foi o aumento do registro para os arquivos de log de acesso e erro. Então, em /etc/apache2/mods-available/rewrite.load, adicionei a segunda linha abaixo:
LoadModule rewrite_module /usr/lib/apache2/modules/mod_rewrite.so
LogLevel alert rewrite:trace4
Então aqui estão as reescritas no arquivo de configuração do site em sites disponíveis:
RewriteEngine On
# Turn on HTTPS
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
# No-www to www
RewriteCond %{HTTP_HOST} !^www\.(.+)$ [NC]
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [R=301,L]
E aqui está o .htaccess no site principal:
RewriteEngine On
# if not blog do make URLs pretty
# by removing .php extensions
RewriteCond %{REQUEST_URI} !^.*\/blog\/.*$ [NC]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^\.]+)$ $1.php [NC,L]
E finalmente o .htaccess no diretório do blog:
RewriteEngine On
RewriteBase /blog
RewriteCond %{REQUEST_URI} ^/blog
RewriteRule ^/blog/index\.php$ - [L]
RewriteCond %{REQUEST_URI} ^/blog
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /blog/index.php [L]
O principal problema foi este último bit com o RewriteBase sendo alterado para / blog.
Espero que isso ajude os outros.