web-dev-qa-db-fra.com

Articles de blog sur un sous-domaine, pages sur un autre

J'aimerais utiliser blog.example.com comme base pour mes articles de blog, par exemple. http://blog.example.com/2013/08/29/sample-post/ et www.example.com pour mes pages, par exemple. www.example.com/about-me/

Y a-t-il un moyen facile de faire ceci? J'ai essayé de créer un réseau, mais cela me donne deux installations WordPress, avec des publications et des pages et leurs propres tableaux de bord d'administration. Je veux juste aller des messages à un sous-domaine, des pages à l'autre.

5
Florian Heinle

Je pourrais avoir une solution pour vous.

Premiers pas:

  1. Dans le gestionnaire DNS de votre domaine, vous devez créer un enregistrement CNAME. Le nom serait blog et le nom d'hôte serait votre nom de domaine. Cela est nécessaire car le navigateur doit savoir où diriger le sous-domaine. blog.mydomain.com à;
  2. Deuxièmement, vous devez dire à Apache (je suppose que vous utilisez Apache) où se trouve l'emplacement du répertoire du sous-domaine blog.mydomain.com. Cela est nécessaire car une fois que le navigateur sait sur quel serveur trouver votre sous-domaine, Apache a besoin de lui indiquer dans quel dossier il doit regarder.

Une fois que vous avez terminé avec le premiers pas vous devrez peut-être attendre au moins 15 minutes pour vous assurer que toutes vos modifications ont été propagées.

Si vous souhaitez simplement que vos messages individuels soient accessibles via blog.mydomain.com/xxxx/xx/xx/my-post vous avez terminé. Mais, soyez averti que toute page de votre site sera accessible via blog.mydomain.com/some-page. Par exemple, l’utilisateur pourra accéder aux deux mydomain.com/my-contact-page et blog.mydomain.com/my-contact-page.

Par ailleurs, le passage au domaine blog.mydomain.com  n'est pas forcé . Si vous voulez être forcé , vous devez éditer votre fichier .htaccess et insérer avant la balise wordpress les éléments suivants:

# 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
Faites attention aux commentaires le long de l'extrait de code afin d'effectuer vos propres modifications si nécessaire.

Si vous souhaitez empêcher la visualisation d'autres pages par le sous-domaine, vous pouvez ajouter cet extrait de code dans votre fichier 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 );

J'espère que c'est ce que vous cherchiez.

7
filipecsweb

Je crois que le seul moyen est d'utiliser mod_rewrite dans votre .htaccess pour transformer une URL fixe; dire http://www.example.com/blog à http://blog.example.com

  1. Préfixez tous vos articles avec "blog".

  2. Placez ceci dans .htaccess dans votre répertoire /blog

:

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