web-dev-qa-db-pt.com

Postagens do blog em um subdomínio, páginas em outro

Gostaria de usar blog.example.com como base para minhas postagens no blog, por exemplo http://blog.example.com/2013/08/29/sample-post/ e www.example.com para minhas páginas, por exemplo www.example.com/about-me/

Existe uma maneira fácil de fazer isso? Eu tentei criar uma rede, mas isso me deu duas instalações do WordPress, tanto com posts e páginas quanto com seus próprios painéis de administração. Eu só quero ir para um subdomínio, páginas para o outro.

5
Florian Heinle

Eu posso ter uma solução para você.

Primeiros passos:

  1. No gerenciador de DNS do seu domínio, você precisa criar um registro CNAME. O nome seria blog e o hostname seria seu nome do domínio. Isso é necessário porque o navegador precisa saber para onde apontar o subdomínio blog.meudominio.com para;
  2. Segundo, você precisa dizer ao Apache (suponho que você está usando o Apache), onde está o local do diretório do subdomínio blog.mydomain.com. Isso é necessário porque, uma vez que o navegador saiba em qual servidor encontrar seu subdomínio, será necessário que o Apache informe em qual pasta ele deve ser examinado.

Depois de terminar com o primeiros passos talvez você tenha que esperar pelo menos 15 minutos para ter certeza de que todas as suas alterações foram propagadas.

Se você quer que suas postagens únicas sejam acessadas via blog.mydomain.com/xxxx/xx/xx/my-post você terminou. Mas, esteja avisado que qualquer página do seu site será acessada via blog.mydomain.com/some-page. Por exemplo, o usuário poderá acessar os dois mydomain.com/my-contact-page e blog.mydomain.com/my-contact-page.

Além disso, a mudança para o domínio blog.mydomain.com  não está sendo forçado . Se você quiser que seja forçado você precisa editar seu arquivo .htaccess e inserir antes da tag wordpress o seguinte:

# 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
Preste atenção nos comentários ao longo do snippet de código para realizar suas próprias alterações, caso seja necessário.

Se você quiser evitar que outras páginas sejam vistas através do subdomínio, você pode adicionar este snippet de código em seu arquivo functions.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 );

Espero que seja isso que você estava procurando.

7
filipecsweb

Acredito que a única maneira é usar mod_rewrite em seu .htaccess para transformar um URL fixo; diga http://www.example.com/blog em http://blog.example.com

  1. Prefixo todos os seus artigos com "blog".

  2. Coloque isso em .htaccess dentro do seu diretório /blog

:

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