Я хочу переписать набор URL-адресов в другой домен, только когда задана конкретная строка запроса.Необходимо переписать только основной URL-адрес домена, оставшийся путь URL-адреса должен остаться прежним, а также удалить строку запроса.
Примеры:
http://www.domain-a.com/post-type-a/post-title/?template=custom
следует перенаправитьна:
http://www.domain-b.com/post-type-a/post-title/
и
http://www.domain-a.com/post-type-b/post-title/?template=custom
следует перенаправить на:
http://www.domain-b.com/post-type-b/post-title/
и
http://www.domain-a.com/post-type-c/post-title/?template=custom
следует перенаправить на:
http://www.domain-b.com/post-type-c/post-title/
и т. Д.
Строка запроса настроена для загрузки различных шаблонов с одним постом, так что я могу создать микро-сайт на своем существующем веб-сайте WordPress.Однако я хочу использовать другое мое доменное имя для этого микросайта, поэтому мой вопрос.
ОБНОВЛЕНИЕ
Если я помещу эти строки в мой .htaccess в корне домена -b:
RewriteCond %{HTTP_HOST} domain-a\.com$ [NC]
Rewritecond %{QUERY_STRING} ^template=custom$ [NC]
RewriteRule ^ http://www.domain-b.com%{REQUEST_URI}? [R=301,L]
перенаправление действительно работает, однако я сталкиваюсь с 2 проблемами:
1) Правильный шаблон не загружен, так как правило перезаписи уже удалило строку запроса ранеефункция может его обнаружить.
2) http://www.domain -b.com переходит обратно на www.domain-a.com из-за других правил перезаписи.
Так что я думаюЯ должен найти решение для проблемы 1 в моей функции wordpress вместо .htaccess.Позвольте мне объяснить мою ситуацию лучше:
Мой основной домен с веб-пространством зарегистрирован на domain-b .Мой сайт WordPress установлен в папке blog .Я использую domain-a в качестве URL-адреса WordPress, поэтому domain-b.com / blog / перенаправляет на domain-a .Это работает нормально, но я хочу сделать исключение из этих правил переписывания WordPress, если строка запроса установлена на template = custom , как указано выше.В моем файле .htaccess в корне папки blog у меня есть следующие правила (сгенерированные WordPress):
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /blog/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /blog/index.php [L]
</IfModule>
Это функция, которую я использую для загрузки различныхфайлы шаблонов сообщений:
// Add Query var
add_filter('query_vars', 'template_query_vars');
function template_query_vars( $query_vars ){
$query_vars[] = 'template';
return $query_vars;
}
// Switch template according to query parameter
add_filter( 'template_redirect', 'sjc_template' );
function sjc_template(){
global $wp_query;
if( $wp_query->get( 'template' ) ):
global $post;
$posttype = get_post_type($post->ID);
include( get_template_directory() . '/single-'. $posttype .'-custom.php' );
exit();
endif;
}
Поэтому я попытался добавить туда правило перезаписи, но оно не работает (пока):
// Set up the rewrite
add_action( 'init', 'template_setup_rewrites' );
function template_setup_rewrites() {
add_rewrite_rule('^/custom/?', '^/?template=custom', 'top');
flush_rewrite_rules(false);
}
Для проблемы 2 мне как-то нужно сделать исключениео правилах переписывания, сгенерированных Wordpress, чтобы сохранить domain-a ...
Извините, если все это немного расплывчато, но это сложно объяснить.ЛЮБАЯ помощь приветствуется!
Спасибо