我可能会给你一个解决方案。
第一步:
您需要在域的DNS管理器中创建CNAME记录。名称将是blog,主机名将是您的域名。这是必要的,因为浏览器需要知道将子域博客指向何处。mydomain。com到其次,你需要告诉apache(我想你正在使用apache)子域博客在哪里。mydomain。com的目录位置。这是必要的,因为一旦浏览器知道要在哪个服务器上找到您的子域,它就需要apache告诉它要查看哪个文件夹完成第一步后,您可能需要等待至少15分钟,以确保您的更改都已传播。
如果你只想通过博客访问你的单篇文章。mydomain。com/xxxx/xx/xx/my post你完成了。但是,请注意,您网站中的任何页面都将通过博客访问。mydomain。com/some页。例如,用户将能够访问两个mydomain。com/我的联系人页面和博客。mydomain。com/我的联系人页面
此外,更改为域名博客。mydomain。com未被强制执行。如果希望强制执行,则需要编辑。htaccess文件,并在wordpress标记前插入以下内容:
# BEGIN custom redirect
# You might want to change \'blog\' to your current blog page slug or to sth else you want!
<IfModule mod_rewrite.c>
# Here we are making sure when the user accesses blog.mydomain.com he will see the blog page content.
RewriteCond %{HTTP_HOST} ^blog\\.
RewriteCond %{REQUEST_URI} ^\\/$
RewriteRule ^.*$ index.php?pagename=blog [L]
# Here we are redirecting mydomain.com/2016/12/16/my-post to blog.mydomain.com/2016/12/16/my-post
RewriteCond %{HTTP_HOST} !^blog\\.
RewriteRule ^([0-9]{4})\\/([0-9]{1,2})\\/([0-9]{1,2})\\/(.+)\\/?$ http://blog.mydomain.com/$1/$2/$3/$4 [L,NC]
# Here we are redirecting mydomain.com/blog to blog.mydomain.com
RewriteRule ^blog\\/?$ http://blog.mydomain.com [L,NC]
</IfModule>
# END custom redirect
请注意代码段中的注释,以便在需要时执行您自己的更改 如果要防止通过子域看到其他页面,可以在函数中添加此代码段。php文件:
function push_redirect() {
$host = $_SERVER[\'HTTP_HOST\'];
// If we are not seeing the subdomain we have no reasons to continue.
if ( !preg_match( "/^blog\\./", $host ) )
return;
// If we are seeing blog homepage or single post we have no reasons to continue.
if ( is_home() || is_singular( \'post\' ) )
return;
$site_url = site_url();
$uri = $_SERVER[\'REQUEST_URI\'];
$redirect_to = $site_url . $uri;
wp_redirect( $redirect_to, 302 );
exit;
}
add_action( \'template_redirect\', \'push_redirect\', 10 );
我希望这就是你想要的。