1.基本目標とハイレベル機能
1.1 中核目標
WordPressサイトのURL構造を従来のものから変更する。 カタログフォームエレガントでモダンな空間に生まれ変わった。 サブドメイン・フォームそして、検索エンジンにフレンドリーであることを確認してください。
- 変換前のURL構造:
https://your-domain.com/[前缀]/[变量]/
- 変換後のURL構造:
https://[变量].your-domain.com/
1.2 高度な機能(新プログラムのコア)
このガイドでは、複数のドメインをサポートする柔軟な切り替え可能なURLポリシーシステムを実装する。
- マルチドメイン・サポート複数のプライマリ・ドメインに同時に使用可能(例.
aigcsoft.site
,tchepai.com
) サブドメインモードを有効にする。 - URLポリシーの切り替えスイッチひとつで、以下の2つのモードを自由に切り替えることができます:
- プライマリドメインネームモデル(SEOベスト): ユーザーがサイトにアクセスするドメイン名に関係なく、最終的なURLとページ内リンクは、重みを一元化するために指定した「メインドメイン名」に強制されます。
- カレント・ドメイン・モード(フレキシブル表示)複数のブランドが独立して表示されるシナリオのために、ウェブサイトはユーザーが現在訪問しているドメイン名を保持し、そのドメイン名の下にすべてのリンクを生成します。
2.準備作業とコア・コンセプト
始める前に、あなたが持っていることを確認してください:
- 関連するすべてのドメイン名のDNS管理権限。
- ウェブサーバー(ホスト)のバックエンド管理者権限(Pagoda Panel、cPanelなど)。
このプログラムは、3つの主要モジュールが連動している:
- DNSレイヤーアドレス帳」として使用されます。すべてのドメイン名サブドメインリクエストがあなたのサーバーを指すようにする。
- ウェブサーバーレイヤー(Nginx/Apache):: "トラフィック・ディレクター "として働き、すべてのリクエストを受け取り、"トラフィック・フロー "を作成する。複数ドメイン名SSLとクロスドメインポリシーを設定する。
- WordPressアプリケーションレイヤー(PHP)コンテンツエンジン」として、コードはインテリジェントにリクエストを認識し、リンクを書き換え、スイッチングポリシーに基づいてリダイレクトを実行する。
3.詳細な設定手順
ステップ1:すべてのドメインに対してDNSフラッドレゾリューションを設定する
これが基本です。に使用する予定のデータ用にカスタマイズされたコンフィギュレーションを設定する必要があります。各プライマリドメイン名この操作を繰り返す。
- プレースメント各ドメイン名レジストラのDNS管理パネル。
- リグ各ドメイン名の行を追加する 記録.
- ホストレコード(ホスト/名前):
*
(アスタリスク) - レコードの種類:
A
- レコード値(値/ポイント):
您服务器的 IPv4 地址
- 典型例:: 用
aigcsoft.site
記事を追加する*
そしてtchepai.com
記事を追加する*
記録
- ホストレコード(ホスト/名前):
ステップ 2: ウェブサーバーの設定(パゴダパネルを例に)
2.1. マルチドメインバインディングとマルチ証明書設定の追加
- サイトの作成/設定:
- プレースメントパゴダパネル -> サイト管理。
- リグメインのドメイン名でサイトを作成する
*.your-domain-1.com
次に、そのサイトの「ドメイン管理」に進みます。次に、そのサイトの「ドメイン管理」に行き、他のワイルドカードドメイン名を追加します(例.*.your-domain-2.com
)それを加える。
- 複数のSSL証明書を設定する(キーステップ):
- プレースメントサイトの「設定」→「SSL」タブ。
- 最初のドメイン名の証明書を申請する:
- Let's Encrypt」を選択し、認証方法に「DNS認証」を選択する。
- ダニ
your-domain-1.com
歌で応える*.your-domain-1.com
それができない場合は、プロンプトに従ってDNSのTXTレコード検証を完了し、申請してください。
- セカンドドメイン名の証明書の申請:
- SSLインターフェイスで、左上の証明書ブランドのドロップダウンメニュー次に、"Let's Encrypt "を再選択する。
- インターフェイスが更新されます。新しいアプリケーション.
- 今回ダニのみ
your-domain-2.com
歌で応える*.your-domain-2.com
新しいドメイン名を申請する場合は、再度指示に従ってDNSの検証を行い、新しいドメイン名の申請を完了します。 - これをすべてのドメインで繰り返す。最終的には、あなたのサイトには複数の証明書が同時に配備され、サーバーはそれらを訪問ドメインに自動的にマッチさせます。
- HTTPSを強制するすべての証明書が正常にデプロイされたら、必ず「Force HTTPS」機能を有効にしてください。
2.2.CORSクロスドメインポリシーの設定(アイコンやフォントの読み込みの問題を解決するため)
この設定は一度だけ行われ、すべてのドメインに対して有効になる。
- プレースメントNginxまたはApacheの設定ファイル。
- リグ:
- Nginxで
server{}
ブロック内に追加:# --- 为字体文件添加 CORS 跨域许可 --- location ~* \.(eot|otf|ttf|woff|woff2)$ { add_header 'Access-Control-Allow-Origin' '*' always; }
- アパッチルート・ディレクトリ
.htaccess
ファイルが追加される:# --- 为字体文件添加 CORS 跨域许可 --- <FilesMatch "\.(eot|otf|ttf|woff|woff2)$"> Header set Access-Control-Allow-Origin "*" </FilesMatch>
- Nginxで
- サービスを保存し、再ロードする。
ステップ3:WordPressのコアファイルを修正する
3.1 修正 wp-config.php
ファイル(ウェブサイトのルートディレクトリにあります)
このファイルは、認可されたドメインに対するすべてのサブドメインリクエストを識別する役割を果たす。
リグで wp-config.php
文書の先頭 (<?php
タグ)に以下のコード・ブロックを追加する。
/**
* ===================================================================
* 子域名泛解析配置: 内部请求重写 (多域名支持版)
* ===================================================================
*/
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 修正 functions.php
ファイル wp-content/themes/your-active-theme/
)
このファイルはURLポリシーのコントロールセンターである。
リグテーマの functions.php
ファイルの最後に以下を追加する。完全なコードブロック.
/**
* ===================================================================
* 子域名泛解析功能包: 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.最終検証とトラブルシューティング
- キャッシュの消去改造完了後必ずすべてのキャッシュをクリアする(プラグイン、CDN、サーバー、ブラウザ)。を使用することを強くお勧めします。トレース・モードなしテスト。
- トグルスイッチで
functions.php
修正'force_canonical_domain'
の値である。true
/false
)を使ってさまざまなモードをテストする。
4.1.検証方法:スイッチが true
(主ドメイン名モード)
- テストジャンプブラウザのアドレスバーに入力
[变量].your-domain-2.com
.エンターキーを押すと、アドレスバーが今すぐジャンプまで[变量].your-domain-1.com
(プライマリドメイン名)。 - テストリンク任意のページにアクセスし、右クリックすると、すべての内部リンクとそのリンクを確認できます。
href
因果性すべてでなければならないメイン・ドメイン (...your-domain-1.com
).
4.2.検証方法:スイッチが false
(現在のドメイン名モード)
- テストホールドアクセス
[变量].your-domain-2.com
アドレスバーは不変. - テストリンクで
[变量].your-domain-2.com
ページを右クリックして、すべての内部リンクとそのhref
属性は現在のドメイン(...your-domain-2.com
). - クロステスト新しいタブへのアクセス
[变量].your-domain-1.com
ページへのリンクは...your-domain-1.com
.
4.3 よくある問題のトラブルシューティング
- 無制限のリダイレクト:: 確約する
remove_filter('template_redirect', 'redirect_canonical');
存在するが注釈はない。 - 誤った/安全でない証明書ステップ2.1を確認し、すべてのドメイン名に独立したSSL証明書が正常に適用され、デプロイされていることを確認します。
- アイコン/フォントが見つからない2.2のCORSクロスドメイン設定を確認する。
- リンクやジャンプが期待通りに動作しない:: 検査
functions.php
のスイッチの値を正しく設定する。徹底したキャッシュ・クリーニング. - ウェブサイトの白い画面/500エラー:: 検査
wp-config.php
もしかしたらfunctions.php
にPHPの構文エラーはありません。
このアドバンスガイドを大切に保管してください。将来サーバーを移行したり、テーマをアップグレードしたり、新しいプロジェクトに同じ戦略を導入したりする際に、非常に役立つはずです。