这里有两种不同的解决方案(为您的用例编辑细节):
执行重定向:
1。)在您的
/wp-config.php
文件添加以下内容:
if ( is_yoursite_blogger_domain( $_SERVER[\'SERVER_NAME\'] ) ) {
$domain = str_replace( \'www.\', \'\', $_SERVER[\'SERVER_NAME\'] );
define( \'WP_SITEURL\', \'http://\' . $domain );
define( \'WP_HOME\', \'http://\' . $domain );
} else if ( ! is_main_domain( $_SERVER[\'SERVER_NAME\'] ) ) {
header( "Location:http://{$yoursite_main_domain}", true, 301 );
exit;
}
function is_main_domain( $domain ) {
$domain = str_replace( \'www.\', \'\', $_SERVER[\'SERVER_NAME\'] );
return strpos( $domain, \'maindomain.com\' ) !== false;
}
function is_yoursite_blogger_domain( $domain ) {
$domain = str_replace( \'www.\', \'\', $_SERVER[\'SERVER_NAME\'] );
return in_array( $domain, array(
\'blogger1.com\',
\'blogger2.com\',
\'blogger3.com\',
\'blogger4.com\',
\'blogger5.com\',
\'uncategorized.dev\', // Only here for use on my own test site
) );
}
2.)然后将此添加到主题
functions.php
文件:
add_action( \'template_redirect\', \'yoursite_template_redirect\' );
function yoursite_template_redirect() {
$path = $_SERVER[\'REQUEST_URI\'];
if (strpos($path,"/category/") === false) {
$domain = str_replace( \'www.\', \'\', $_SERVER[\'SERVER_NAME\'] ) ;
$category = str_replace( \'.com\', \'\', $domain );
$category = str_replace( \'.dev\', \'\', $domain ); // Only for my own test site
$location = "http://{$domain}/category/{$category}/" ;
wp_safe_redirect( $location );
exit;
}
}
}
以上将执行302重定向到
http://blogger1.com/category/blogger1/
当对任何URL发出请求时
http://blogger1.com
而不是以
http://blogger1.com/category/
(您需要进行一些更改以支持其他URL。)做一个;“重写”:
以上不支持的是;“重写”vs.a;重定向(&Q)解决方案。如果你想这样的话,它会更复杂一点。以下代码将导致类别页面加载到映射到中的任何域的根路径中
is_yoursite_blogger_domain()
作用当然是你的
is_yoursite_blogger_domain()
函数可以根据现有类别进行验证,但我不知道完整的标准,所以我只是硬编码了它。您可以将此代码复制到函数的
theme.php
归档或放入
.php
您可能正在编写的插件的文件。请注意,此代码还需要
/wp-config.php
以上文件:
add_action( \'category_link\', \'yoursite_category_link\', 11, 2 );
function yoursite_category_link( $category_link, $category_id ) {
// Make sure any blogger category links are truncated to the root
$parts = explode( \'/\', $category_link );
if ( is_yoursite_blogger_domain( $parts[2] ) ) {
// if %category% in http://%domain%/category/%category%/
// equals %domain% minus the \'com\' extension
if ( "{$parts[4]}." == substr( $parts[2], 0, strlen( $parts[4] ) + 1 ) ) {
$category_link = "http://{$parts[2]}/"; // Strip \'category/%category%/\'
}
}
return $category_link;
}
add_action( \'init\', \'yoursite_init\' );
function yoursite_init() {
// Remove the canonical redirect to the category page
// if %category% in http://%category%.%ext%/ is a blogger category.
if ( is_yoursite_blogger_domain( $_SERVER[\'SERVER_NAME\'] ) ) {
$parts = explode( \'/\', strtolower( $_SERVER[\'REQUEST_URI\'] ) );
if (count($parts) > 1) {
$category_base = get_option( \'category_base\' );
if ( empty( $category_base ) )
$category_base = \'category\';
if ( $category_base == $parts[1] ) {
remove_filter( \'template_redirect\', \'redirect_canonical\' );
}
}
}
}
add_action( \'template_redirect\', \'yoursite_template_redirect\' );
function yoursite_template_redirect() {
// Redirect any http://%category%.%ext%/category/%category%/ to http://%category%.%ext%/
if ( is_yoursite_blogger_domain( $_SERVER[\'SERVER_NAME\'] ) ) {
$category_base = get_option(\'category_base\');
if (empty($category_base))
$category_base = \'category\';
$parts = explode( \'/\', strtolower( $_SERVER[\'REQUEST_URI\'] ) );
if ( $category_base == $parts[1] &&
"{$parts[2]}." == substr( $_SERVER[\'SERVER_NAME\'], 0, strlen( $parts[2] ) + 1 ) ) {
wp_safe_redirect( "http://{$_SERVER[\'SERVER_NAME\']}/", 301 );
exit;
}
}
}
add_action( \'request\', \'yoursite_request\' );
function yoursite_request($query_vars) {
// If %category% in http://%category%.%ext%/ is a blogger category set the
// \'category_name\' query var to tell WordPress to display the category page.
$domain = $_SERVER[\'SERVER_NAME\'];
if ( is_yoursite_blogger_domain( $domain ) ) {
$path = $_SERVER[\'REQUEST_URI\'];
if ( strpos( $path, "/category/" ) === false ) {
$domain = str_replace( \'www.\', \'\', $domain ) ;
$category_name = substr( $domain, 0, strrpos( $domain, \'.\' ) );
$query_vars = array( \'category_name\' => $category_name );
}
}
return $query_vars;
}
下面的屏幕截图显示了第二个实际示例:
mikeschinkel.com)
另一种可能更好的方法是使用自定义分类法而不是类别,或者更好的方法是将域映射到用户名。这样就减少了作者的工作量,您也不必担心在代码或单独的分类列表中维护博主列表。
至于你;“奖金”抱歉,我不明白你想说什么。