it-swarm.com.de

Blogposts auf einer Subdomain, Seiten auf einer anderen

Ich möchte blog.example.com als Basis für meine Blog-Posts verwenden, z. http://blog.example.com/2013/08/29/sample-post/ und www.example.com für meine Seiten, z. www.example.com/about-me/

Gibt es eine einfache Möglichkeit, dies zu tun? Ich habe versucht, ein Netzwerk zu erstellen, aber das gibt mir zwei WordPress-Installationen, sowohl mit Beiträgen als auch mit Seiten und eigenen Admin-Dashboards. Ich möchte nur Posts an eine Subdomain senden, Seiten an die andere.

5
Florian Heinle

Ich könnte eine Lösung für Sie haben.

Erste Schritte:

  1. Im DNS-Manager Ihrer Domain müssen Sie einen CNAME-Eintrag erstellen. Der Name wäre blog und der Hostname wäre dein domain Name. Dies ist erforderlich, da der Browser wissen muss, wohin die Unterdomäne verweisen soll blog.mydomain.com zu;
  2. Zweitens müssen Sie Apache mitteilen (ich nehme an, Sie verwenden Apache), wo sich der Verzeichnisspeicherort der Subdomain blog.mydomain.com befindet. Dies ist erforderlich, da der Browser, sobald er weiß, auf welchem ​​Server sich Ihre Unterdomäne befindet, Apache benötigt, um ihm mitzuteilen, in welchem ​​Ordner sie sich befinden soll.

Sobald Sie mit dem fertig sind erste Schritte Möglicherweise müssen Sie mindestens 15 Minuten warten, um sicherzustellen, dass alle Änderungen übernommen wurden.

Wenn Sie nur möchten, dass auf Ihre einzelnen Posts über zugegriffen wird blog.mydomain.com/xxxx/xx/xx/my-post du bist fertig. Beachten Sie jedoch, dass auf alle Seiten Ihrer Website über zugegriffen wird blog.mydomain.com/some-page. Beispielsweise kann der Benutzer auf beide zugreifen mydomain.com/mein-kontaktseite und blog.mydomain.com/mein-kontaktseite.

Außerdem der Wechsel zur Domain blog.mydomain.com  wird nicht gezwungen . Wenn Sie möchten, dass es erzwungen wird , müssen Sie Ihre .htaccess-Datei bearbeiten und vor dem WordPress-Tag Folgendes einfügen:

# 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
Beachten Sie die Kommentare im Code-Snippet, um gegebenenfalls eigene Änderungen vorzunehmen.

Wenn Sie verhindern möchten, dass andere Seiten in der Unterdomäne angezeigt werden, können Sie diesen Codeausschnitt in Ihre functions.php-Datei einfügen:


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 );

Ich hoffe, das ist, wonach Sie gesucht haben.

7
filipecsweb

Ich glaube, die einzige Möglichkeit ist, mod_rewrite in Ihrem .htaccess zu verwenden, um eine feste URL zu aktivieren. Sagen Sie http://www.example.com/blog in http://blog.example.com

  1. Stellen Sie all Ihren Artikeln "blog" voran.

  2. Fügen Sie dies in .htaccess in Ihr /blog-Verzeichnis ein

:

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