Üçüncü düzey alan adlarına sahip bir wordpress ağı kurma


11

Bir WordPress ağ kurulumu kurmaya çalışıyordum. İstediğim etki alanı düzenimin iyi uymadığı noktaya gelinceye kadar her şey sorunsuz gidiyor.

Aşağıdaki gibi bir düzen istiyorum:

blog. *. stackexchange.com

böylece, örneğin, bir ağda benzeyen birden fazla site istiyorum:

blog.wordpress.stackexchange.com
blog.apple.stackexchange.com
blog. $ site.stackexchange.com

Ben düşünüyorum ben bu bazı yaratıcı yeniden yazma kuralları ile çalışma ve manuel DNS müdahale alabilir ama yerine ben her şeyin yaratılmasını ama başkasına DNS bırakabileceğini bir kurulum olurdu (biz zaten otomatik olarak bir süreç var DNS'de gereken tüm alt alanları oluşturma)

Etrafımda oynamaktan ve WP okumaktan gerçekten sitelerin bir sonraki seviye alan olmasını istiyor, bu yüzden yukarıdaki örneğimde, ana WP blogunun stackexchange.com'da ve ağ bloglarının wordpress.stackexchange.com'da olmasını istiyor.

İstediğim etkiyi elde etmenin herhangi bir yolu var mı yoksa blog.stackexchange.com/$ sitesi yapmanın yolunu mu seçmeliyim?


2
Yaratıcı yeniden yazma kuralları ve manuel DNS müdahalesini kullanmak zorunda kalacağınızdan eminim. Ayrıca, bunun tasarım gereği olduğundan da eminim, böylece <del>me</del> <ins> başka birine </ins> ... ıslık </ sarcasm> (:
Rebecca Chernoff

Birinin güzel bir adım adım rehberle birlikte gelmesi umuduyla bir ödül ekledim, böylece Zypher, SE'yi tutmak konusunda daha fazla zaman ve topluluk bloglarına bakmak için daha az zaman harcayabilir.
kimse

Yanıtlar:


3

Bunun için Alan Adı Eşleyici eklentisini kullanabilirsiniz . Her alt blogu manuel olarak yapılandırmanızın dezavantajı.


İlginç, bir yönlendirme yapıyor mu yoksa yalnızca içeriği mi sunuyor? Sormaya çalıştığım şey, adres çubuğu son kullanıcı için değişiyor mu?
Zypher

@Zypher Hayır, sadece içeriğe hizmet ediyor.
kimse

1
Eklentinin kullanımı için öğretici: ottopress.com/2010/… Önemli : WP'yi yükleyip eklentiyi etkinleştirdiğinizde ve bu içe aktarma verileri veya moigrate sisteminden sonra sorunsuzdur; blog ek bir alan adı eşlemeden önce bir hayata sahip olduktan sonra bu eklentiyi eklemek o kadar kolay değil. wp arka ucunda çalışmayı biraz daha kolay hale getirmek için diğer eklentileri de verir. wordpress.org/extend/plugins/networks-for-wordpress
bueltge

alternatif eksikliği nedeniyle, +150 temsilcisi var.
kimse

1

Bunu özelleştirilmiş bir sunrise.php dosyasıyla yapabilirsiniz. Temel olarak etki alanı eşleme eklentisi bu şekilde çalışır, ancak bunun üzerine oldukça iyi bir ön uç ekler. Özel bir şey için, temelde aynı şeyi yapmak için bazı basit PHP yazabilirsiniz.

Çoklu sitenin özü, hangi siteye hizmet edileceğini bulmayı içerir. Domain mapping eklentisi bunu bir wp_domain_mapping tablosu oluşturarak ve bilgileri orada saklayarak yapar. Bu nedenle, xxx.com için bir istek aldığında, bu tabloya bakar ve bunun blog_id 123'e karşılık geldiğini görür.

İlk olarak, bir WordPress kurulumu yapın ve çok siteli yapın. Gerçekten nerede yaşadığı önemli değil, çünkü tüm bunları değiştireceğiz. Basit olması için, blog.stackexchange.com'a koydum ve bir alt dizin tipi site yaptım (bunlar daha kolay). Oluşturulan alt dizinler muhtemelen sümüklü böcek olacaktır. / wordpress, / apple, / her neyse.

Yani evet, başlamak için, gerçekten blog.stackexchange.com/wordpress adresinde canlı hale getiriyorsunuz. Bunu evreleme ortamınız olarak düşünün. Her siteyi oluşturduğunuzda, eşlemeyi açmaya karar verene kadar burada bir şeyler yapabilirsiniz.

Eklenti olmadan kendiniz alan adı eşlemesi yapmak için şöyle bir şey yaparsınız:

Birinci adım: define( 'SUNRISE', 'on' );wp-config.php dosyanızın en üstüne ekleyin .

İkinci adım: wp-content dizininde sunrise.php dosyası oluşturun. <?phpBaşlamak için en üste koyun .

Üçüncü adım: sunrise.php dosyasında hangi sitenin yükleneceğini belirlemek için mantığınız olacaktır.

Bunu $_SERVER[ 'HTTP_HOST' ]değişkene dayandıracaksınız . Bunu nasıl yaptığınız tam olarak kolaydır: ancak bunu yapmak istersiniz. Aramak için bir regex yazmak '/blog\.(.*)\.stackexchange\.com/'ve sonra veritabanında bu biti aramak istiyorsanız, bunu yapabilirsiniz.

Burada "altdizin" ile aynı slug kullandığınız için ayrı bir tabloya ihtiyacınız yoktur. İhtiyacınız olan siteyi bulmak için sadece ana wp_blogs tablosuna bakabilirsiniz. Buna benzer bir şey:

$current_blog = $wpdb->get_var( "SELECT blog_id FROM {$wpdb->blogs} WHERE path = '/wordpress/' LIMIT 1" );

$ Current_blog dosyasına sahip olduğunuzda, aşağıdaki koda ihtiyacınız vardır:

$current_blog->domain = $_SERVER[ 'HTTP_HOST' ];
$current_blog->path = '/';
$blog_id = $current_blog->blog_id;
$site_id = $current_blog->site_id;
$current_site = $wpdb->get_row( "SELECT * from {$wpdb->site} WHERE id = '{$current_blog->site_id}' LIMIT 0,1" );
$current_site->blog_id = $current_blog->blog_id;

Bu, WordPress'in MU işlevlerinin bunu yapmasına izin vermek yerine $ current_blog ve $ current_site genel değişkenlerini önceden tanımlar.

Bu, siteyi kurmak ve çalıştırmak için yeterli olacaktır (DNS'inizi göstermesini ve sanal barındırma öğelerini sıraladıktan sonra), ancak HTML kodunda kullanılan statik URL'lerin çoğu hala blog.stackexchange.com'u gösterecektir. / wordpress, sitenin gerçekte olduğu yer burası. Ayrıca, Kurallı URL işlevi URL'yi beğenmez ve sizi de yönlendirir.

Bu sorunları çözmek için, muhtemelen siteyle ilişkilendirilmiş birkaç URL'yi önceden tanımlamak istersiniz. WP_SITEURL ve WP_HOME gibi şeyler. Ayrıca WP_CONTENT_URL, WP_PLUGIN_URL ve WPMU_PLUGIN_URL. Bu, ayarlanan URL'lerin çoğunu kapsamalıdır.

Son olarak, 'COOKIE_DOMAIN' ayarını yapmak isteyeceksiniz. Girişlerin büyük olasılıkla tümüyle paylaşılmasını istediğiniz için, stackexchange.com olarak ayarlayabilir veya hatta paylaşılan girişler olmasını istemiyorsanız daha da yükseltebilirsiniz.

Normal stackexchange giriş sistemini WordPress'e entegre etmek hakkında konuşmak isterseniz, bununla ilgili soruları da cevaplayabilirim, ancak bir cevap biraz daha ayrıntılı olacaktır. :)

Bu konuda daha fazla yardım isterseniz bana e-posta göndermekten çekinmeyin. Yardımcı olmaktan memnunum: otpress.com adresinde.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.