1. objetivos principais e funções de alto nível
1.1 Objetivos principais
Altere a estrutura de URL do seu site WordPress do tradicional Formulário de catálogoA elegante transformação em um moderno Formulários de subdomínioe certifique-se de que ele seja compatível com os mecanismos de pesquisa.
- Estrutura do URL antes da conversão:
https://your-domain.com/[前缀]/[变量]/
- Estrutura do URL após a conversão:
https://[变量].your-domain.com/
1.2 Funcionalidade avançada (novo núcleo do programa)
Este guia implementará um sistema flexível de política de URL comutável que oferece suporte a vários domínios.
- Suporte a vários domíniosPode ser usado em vários domínios primários ao mesmo tempo (por exemplo, o domínio primário pode ser usado em vários domínios primários).
aigcsoft.site
,tchepai.com
) Habilite o modo de subdomínio. - Mudança de política de URLVocê pode alternar livremente entre os dois modos a seguir com um simples interruptor:
- Modelo de nome de domínio primário (melhor para SEO)Independentemente do nome de domínio a partir do qual o usuário acessa o site, o URL final e os links na página serão forçados ao "nome de domínio principal" que você especificar para centralizar o peso.
- Modo de domínio atual (tela flexível)Nome de domínio: O site mantém o nome de domínio que o usuário está visitando no momento e gera todos os links com esse nome de domínio, para cenários em que várias marcas são exibidas independentemente.
2. trabalho preparatório e conceitos básicos
Antes de começar, verifique se você tem:
- Privilégios administrativos de DNS para todos os seus nomes de domínio associados.
- Privilégios administrativos de back-end (por exemplo, Pagoda Panel, cPanel, etc.) de seu servidor da Web (host).
Esse programa se baseia em três módulos principais que funcionam em conjunto:
- Camada de DNSserve como um "catálogo de endereços" que será usado por seuTodos os nomes de domíniode solicitações de subdomínio para apontar para o seu servidor.
- Camada de servidor da Web (Nginx/Apache)Diretor de tráfego: atua como um "diretor de tráfego", recebe todas as solicitações e cria um "fluxo de tráfego" para onome de domínio múltiploConfigurar políticas de SSL e entre domínios.
- Camada de aplicativos do WordPress (PHP)Como um "mecanismo de conteúdo", o código reconhece solicitações de forma inteligente, reescreve links e executa redirecionamentos com base em políticas de troca.
3. etapas detalhadas de configuração
Etapa 1: Configurar a resolução de inundação de DNS para todos os domínios
Essa é a base. Você precisará definir uma configuração personalizada para os dados que planeja usar para oCada nome de domínio primárioRepita essa operação.
- colocaçãoPainel de gerenciamento de DNS: O painel de gerenciamento de DNS para cada registrador de nome de domínio.
- equipamentoAdicionar uma linha para cada nome de domínio A Registros.
- Registro de host (host/nome):
*
(asterisco) - Tipo de registro:
A
- Valor de registro (valor / aponta para):
您服务器的 IPv4 地址
- exemplo típico:: Para
aigcsoft.site
Adicionar um artigo*
e depois para o registrotchepai.com
Adicionar um artigo*
Registros.
- Registro de host (host/nome):
Etapa 2: Configure o servidor da Web (usando o Pagoda Panel como exemplo)
2.1 Adição de vinculação de vários domínios e configuração de vários certificados
- Criar/configurar site:
- colocação: Painel do Pagoda -> Gerenciamento do site.
- equipamentoCriar um site com o nome de domínio principal
*.your-domain-1.com
Em seguida, acesse "Domain Management" (Gerenciamento de domínios) para esse site. Em seguida, vá para "Gerenciamento de domínio" do site e adicione seus outros nomes de domínio curinga (por exemplo*.your-domain-2.com
) Adicione-o.
- Configuração de vários certificados SSL (etapa principal):
- colocação: "Configurações" -> guia "SSL" do site.
- Solicitar um certificado para o primeiro nome de domínio:
- Selecione "Let's Encrypt" e escolha "DNS Authentication" como método de autenticação.
- carrapato
your-domain-1.com
responder cantando*.your-domain-1.com
Se não for possível fazer isso, siga as instruções para concluir a validação do registro TXT para DNS e solicite-o.
- Solicitação de um certificado para um segundo nome de domínio:
- Na interface SSL, clique no canto superior esquerdo da janelaMenu suspenso Marca do certificadoEm seguida, selecione novamente "Let's Encrypt".
- A interface será atualizada, permitindo que você inicie umNovos aplicativos.
- desta vezAssinale apenas
your-domain-2.com
responder cantando*.your-domain-2.com
Se você quiser solicitar um novo nome de domínio, siga as instruções novamente para concluir a verificação do DNS e a solicitação do novo nome de domínio. - Repita esse procedimento para todos os domínios. Eventualmente, seu site terá vários certificados implantados ao mesmo tempo, e o servidor os corresponderá automaticamente aos domínios visitantes.
- Forçar HTTPSDepois que todos os certificados tiverem sido implementados com êxito, certifique-se de ativar o recurso "Force HTTPS".
2.2 Configure a política CORS entre domínios (para resolver problemas de carregamento de ícones/fontes)
Essa configuração é feita uma vez e entra em vigor para todos os domínios.
- colocaçãoNginx: O arquivo de configuração do Nginx ou do Apache para seu site.
- equipamento:
- Nginx: Em
server{}
Adicionado dentro do bloco:# --- 为字体文件添加 CORS 跨域许可 --- location ~* \.(eot|otf|ttf|woff|woff2)$ { add_header 'Access-Control-Allow-Origin' '*' always; }
- Apacheno diretório raiz
.htaccess
é adicionado:# --- 为字体文件添加 CORS 跨域许可 --- <FilesMatch "\.(eot|otf|ttf|woff|woff2)$"> Header set Access-Control-Allow-Origin "*" </FilesMatch>
- Nginx: Em
- Salve e recarregue o serviço.
Etapa 3: Modificar os arquivos principais do WordPress
3.1 Modificações wp-config.php
Arquivos (localizados no diretório raiz do site)
Esse arquivo é responsável por identificar todas as solicitações de subdomínio para domínios autorizados.
equipamento: Em wp-config.php
Parte superior do documento (<?php
tag) adicione o seguinte bloco de código.
/**
* ===================================================================
* 子域名泛解析配置: 内部请求重写 (多域名支持版)
* ===================================================================
*/
if (isset($_SERVER['HTTP_HOST'])) {
// --- 请在这里修改为您自己的配置 ---
$SUBDOMAIN_CONFIG = [
// 在此列表中添加所有您希望启用此功能的根域名
'allowed_main_domains' => [
'aigcsoft.site', // 您的第一个域名
'tchepai.com', // 您的第二个域名
],
// 这是您的固定目录前缀
'url_prefix' => 'tool',
];
// --------------------------------
$current_host = $_SERVER['HTTP_HOST'];
$host_parts = explode('.', $current_host);
if (count($host_parts) >= 3 && $host_parts[0] !== 'www') {
$subdomain = $host_parts[0];
$main_domain_candidate = implode('.', array_slice($host_parts, 1));
if (in_array($main_domain_candidate, $SUBDOMAIN_CONFIG['allowed_main_domains'])) {
$_SERVER['REQUEST_URI'] = '/' . $SUBDOMAIN_CONFIG['url_prefix'] . '/' . $subdomain . '/';
}
}
}
3.2 Modificações functions.php
(localizado no arquivo wp-content/themes/your-active-theme/
)
Esse arquivo é o centro de controle da política de URL.
equipamentoNa seção functions.php
No final do arquivo, adicione o seguinteBloco de código completo.
/**
* ===================================================================
* 子域名泛解析功能包: URL处理 & SEO重定向 (带开关的多域名支持版)
* ===================================================================
*/
// --- 请在这里修改为您自己的配置 ---
$MY_APP_CONFIG = [
// [重要!] 定义您的“官方”主域名。
'canonical_domain' => 'aigcsoft.site',
// 所有授权的域名 (与 wp-config.php 中保持一致)
'allowed_main_domains' => [
'aigcsoft.site',
'tchepai.com',
],
// 您的固定目录前缀
'url_prefix' => 'tool',
/**
* [总开关] 是否强制使用主域名 (Canonical Domain)
* - 设置为 true: 【SEO 最佳实践】无论用户从哪个域名访问,最终地址和页面内链接都会统一到 'canonical_domain'。
* - 设置为 false: 【灵活展示模式】网址会显示用户当前访问的域名,实现多品牌独立展示。
*/
'force_canonical_domain' => true, // 在这里切换 true 或 false
];
// --------------------------------
// 功能 1: 禁用 WordPress 规范链接重定向 (基石)
remove_filter('template_redirect', 'redirect_canonical');
// 功能 2: 动态重写网站内所有相关链接 (已升级)
function my_theme_rewrite_internal_links($permalink, $post) {
global $MY_APP_CONFIG;
$prefix_to_check = '/' . $MY_APP_CONFIG['url_prefix'] . '/';
if (strpos($permalink, $prefix_to_check) !== false) {
$target_domain = $MY_APP_CONFIG['canonical_domain'];
if (!$MY_APP_CONFIG['force_canonical_domain']) {
$current_main_domain = implode('.', array_slice(explode('.', $_SERVER['HTTP_HOST']), -2));
if (in_array($current_main_domain, $MY_APP_CONFIG['allowed_main_domains'])) {
$target_domain = $current_main_domain;
}
}
return 'https://' . $post->post_name . '.' . $target_domain . '/';
}
return $permalink;
}
add_filter('post_link', 'my_theme_rewrite_internal_links', 20, 2);
add_filter('post_type_link', 'my_theme_rewrite_internal_links', 20, 2);
// 功能 3: 为旧链接 (/prefix/slug/) 设置 301 永久重定向 (已升级)
function my_theme_redirect_old_urls() {
global $MY_APP_CONFIG;
$prefix_to_check = '/' . $MY_APP_CONFIG['url_prefix'] . '/';
if (in_array($_SERVER['HTTP_HOST'], $MY_APP_CONFIG['allowed_main_domains']) && strpos($_SERVER['REQUEST_URI'], $prefix_to_check) === 0) {
$slug = trim(str_replace($prefix_to_check, '', $_SERVER['REQUEST_URI']), '/');
if (!empty($slug)) {
$target_domain = $MY_APP_CONFIG['force_canonical_domain'] ? $MY_APP_CONFIG['canonical_domain'] : $_SERVER['HTTP_HOST'];
wp_redirect('https://' . $slug . '.' . $target_domain . '/', 301);
exit;
}
}
}
add_action('template_redirect', 'my_theme_redirect_old_urls');
// 功能 4: [新增] 当开关开启时,将非主域名访问重定向到主域名
function my_theme_redirect_to_canonical_domain() {
global $MY_APP_CONFIG;
if (!$MY_APP_CONFIG['force_canonical_domain']) return;
$current_host = $_SERVER['HTTP_HOST'];
$host_parts = explode('.', $current_host);
if (count($host_parts) >= 3 && $host_parts[0] !== 'www') {
$subdomain = $host_parts[0];
$current_main_domain = implode('.', array_slice($host_parts, 1));
if (in_array($current_main_domain, $MY_APP_CONFIG['allowed_main_domains']) && $current_main_domain !== $MY_APP_CONFIG['canonical_domain']) {
wp_redirect('https://' . $subdomain . '.' . $MY_APP_CONFIG['canonical_domain'] . '/', 301);
exit;
}
}
}
add_action('template_redirect', 'my_theme_redirect_to_canonical_domain', 5);
4. validação final e solução de problemas
- Limpando o cache:: Após a conclusão das modificaçõesnecessariamenteLimpe todos os caches (plug-ins, CDNs, servidores, navegadores). É altamente recomendável usarModo sem rastreamentoTestes.
- chave de alternância: Em
functions.php
modificação'force_canonical_domain'
O valor de (true
/false
) para testar diferentes modos.
4.1 Método de verificação: Quando a chave é true
(modo de nome de domínio primário)
- Salto de testeDigite na barra de endereços de seu navegador
[变量].your-domain-2.com
. Depois de pressionar enter, a barra de endereços deveráPule agoraaté[变量].your-domain-1.com
(seu nome de domínio principal). - Link de testeVisite qualquer página e clique com o botão direito do mouse para verificar todos os links internos e suas respectivas
href
causalidadeDeve ser tudoAponte para seu domínio principal (...your-domain-1.com
).
4.2 Método de verificação: Quando a chave é false
(modo de nome de domínio atual)
- retenção de teste:: Acesso
[变量].your-domain-2.com
A barra de endereço devepermanecer inalterado. - Link de teste: Em
[变量].your-domain-2.com
página, clique com o botão direito do mouse para verificar todos os links internos, suashref
deve apontar para o domínio atual (...your-domain-2.com
). - testes cruzados:: Acesso à nova guia
[变量].your-domain-1.com
O link para essa página deve apontar para a página...your-domain-1.com
.
4.3 Solução de problemas comuns
- Redirecionamento ilimitado:: Garantir
remove_filter('template_redirect', 'redirect_canonical');
Existe e não está anotado. - Certificado incorreto/inseguroVerifique a etapa 2.1 para garantir que os certificados SSL independentes tenham sido aplicados e implementados com êxito para todos os nomes de domínio.
- Ícones/fontes ausentesVerifique a configuração CORS entre domínios na etapa 2.2.
- Os links ou saltos não se comportam como esperado:: Inspeção
functions.php
o valor correto da chave noLimpeza completa da Cache. - Erro de tela branca/500 do site:: Inspeção
wp-config.php
talvezfunctions.php
Não há erros de sintaxe do PHP no arquivo
Mantenha este guia avançado em segurança, pois ele será de grande valia para suas futuras migrações de servidor, atualizações de tema ou implementação da mesma estratégia em novos projetos.