博客文章在一个子域上,页面在另一个子域上

时间:2013-08-29 作者:Florian Heinle

我想用博客。实例com作为我博客文章的基础,例如。http://blog.example.com/2013/08/29/sample-post/ 和www.example。com用于我的页面,例如www.example。com/关于我/

有没有简单的方法可以做到这一点?我尝试创建一个网络,但这给了我两个WordPress安装,都有帖子和页面,还有他们自己的管理仪表盘。我只想把帖子发到一个子域,把页面发到另一个子域。

2 个回复
最合适的回答,由SO网友:filipecsweb 整理而成

我可能会给你一个解决方案。

第一步:

您需要在域的DNS管理器中创建CNAME记录。名称将是blog,主机名将是您的域名。这是必要的,因为浏览器需要知道将子域博客指向何处。mydomain。com到完成第一步后,您可能需要等待至少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 );

我希望这就是你想要的。

SO网友:Pim

我相信唯一的方法就是mod_rewrite 在您的.htaccess 转动固定url;说http://www.example.com/blog 进入http://blog.example.com

在你的所有文章前面加上“blog”。

将此放入.htaccess 在您的/blog 目录

RewriteEngine on
RewriteCond ${HTTP_HOST} ^www\\.domain\\.com$
RewriteRule ^(.*) http://blog.domain.com/$1 [R,L]

结束

相关推荐

Pods CMS-在一个页面中加载两次Pod

我很难装载两次吊舱。假设我加载了一个与另一个豆荚相关的豆荚,我们称之为子豆荚。在页面的后面,如果我尝试加载子pod,我将得到空结果。实例$pods = new Pod(\'customization_category\'); $pods->findRecords(array(\'select\' => \"t.id, t.name\", \'where\' => \"t.id=$id\")); $pods->fetchRecord()