Cảnh báo: Đây chỉ là bản thử nghiệm cho cài đặt dev chứ không phải trang sản xuất
Tôi tò mò muốn xem liệu có một cách giải quyết nào không, đối với những người muốn phát triển nhiều trang trên bản cài đặt dev của họ nhưng trên các cổng khác nhau hơn :80
và :443
, ví dụ :8080
.
Tôi chỉ tìm thấy bài viết trên blog này của Henri Benoit. Ở đó, ông đưa ra các ví dụ về cách sửa đổi lõi 3.9.1, để khắc phục các hạn chế cốt lõi.
Đây là một plugin phải sử dụng/wp-content/mu-plugins/wpse-ms-on-different-port.php
, nơi chúng tôi cố gắng tránh các sửa đổi cốt lõi:
<?php
/**
* Test for multisite support on a different port than :80 and :443 (e.g. :8080)
*
* Here we assume that the 'siteurl' and 'home' options contain the :8080 port
*
* WARNING: Not suited for production sites!
*/
/**
* Get around the problem with wpmu_create_blog() where sanitize_user()
* strips out the semicolon (:) in the $domain string
* This means created sites with hostnames of
* e.g. example.tld8080 instead of example.tld:8080
*/
add_filter( 'sanitize_user', function( $username, $raw_username, $strict )
{
// Edit the port to your needs
$port = 8080;
if( $strict // wpmu_create_blog uses strict mode
&& is_multisite() // multisite check
&& $port == parse_url( $raw_username, PHP_URL_PORT ) // raw domain has port
&& false === strpos( $username, ':' . $port ) // stripped domain is without correct port
)
$username = str_replace( $port, ':' . $port, $username ); // replace e.g. example.tld8080 to example.tld:8080
return $username;
}, 1, 3 );
/**
* Temporarly change the port (e.g. :8080 ) to :80 to get around
* the core restriction in the network.php page.
*/
add_action( 'load-network.php', function()
{
add_filter( 'option_active_plugins', function( $value )
{
add_filter( 'option_siteurl', function( $value )
{
// Edit the port to your needs
$port = 8080;
// Network step 2
if( is_multisite() || network_domain_check() )
return $value;
// Network step 1
static $count = 0;
if( 0 === $count++ )
$value = str_replace( ':' . $port, ':80', $value );
return $value;
} );
return $value;
} );
} );
Tôi chỉ thử nghiệm điều này trên bản cài đặt dev của tôi, nhưng điều này có thể cần kiểm tra nhiều hơn tất nhiên ;-)
echo get_clean_basedomain();
cái gì? Các cổng được hỗ trợ dường như:80
và:443
.