1.基本目標
WordPressサイトのURL構造を従来のものから変更する。カタログフォームエレガントでモダンな空間に生まれ変わった。サブドメイン・フォームそして、検索エンジンにフレンドリーであることを確認してください。
- 変換前のURL構造:
https://your-domain.com/[前缀]/[变量]/
- 変換後のURL構造:
https://[变量].your-domain.com/
キープレイスホルダーの説明
your-domain.com
: プライマリドメイン名(例.aigcsoft.site
).[前缀]
: コンテンツを整理するために使用する固定ディレクトリ名(例.tool
,app
,showcase
).[变量]
: 記事やページのユニークな識別子(スラッグ):tiktokalyzer-tool
).
2.準備作業とコア・コンセプト
始める前に、あなたが持っていることを確認してください:
- ウェブドメインのDNS管理者権限。
- ウェブサーバー(ホスト)のバックエンド管理者権限(Pagoda Panel、cPanel、Pleskなど)。
このプログラムの実施は、3つの主要なモジュールが連動することに依存している:
- DNSレイヤーアドレス帳」として、すべてのサブドメインをあなたのサーバーに向ける。
- ウェブサーバーレイヤー(Nginx/Apache)すべてのリクエストを受け取り、クロスドメインやその他のポリシーを処理する。
- WordPressアプリケーションレイヤー(PHP)コンテンツエンジン」として機能し、リクエストをインテリジェントに認識し、リンクを書き換え、リダイレクトを実行します。
3.詳細な設定手順
ステップ1:DNSフラッド解決の設定
これは、サブドメインがあなたのサーバーを見つけるための基本です。
- プレースメントドメイン名レジストラのDNS管理パネル。
- リグ記事を追加する 記録.
- ホストレコード(ホスト/名前)::
*
(アスタリスク) - レコードの種類::
A
- レコード値(値/ポイント)::
您服务器的 IPv4 地址
- TTLデフォルト値を使用する。
- ホストレコード(ホスト/名前)::
ステップ2:ウェブサーバーの設定
2.1. フラッディングサイトの追加とSSLの設定
- プレースメントパゴダパネルまたは他のホスティング管理パネル -> ウェブサイト管理。
- リグ::
- サイト追加ドメイン名」の欄に
*.your-domain.com
サイトを作成する。 - SSL証明書の申請サイトへの申請ワイルドカード証明書Let's Encryptを使用する場合。Let's Encryptを使用する場合は、必ず
*.your-domain.com
歌で応えるyour-domain.com
. - HTTPSを強制する証明書のデプロイに成功したら、"Force HTTPS "機能を有効にします。
- サイト追加ドメイン名」の欄に
2.2.CORSクロスドメインポリシーの設定(アイコンやフォントの読み込みの問題を解決するため)
(落とす [变量].your-domain.com
ページをロードする必要がある your-domain.com
この設定は、フォントまたはアイコンファイルが
- プレースメント:あなたメインサイト (
your-domain.com
)のサイトプロフィールを参照。 - リグ::
- Nginxユーザーの方へ::
をマスターの Nginx 設定ファイルに追加します。server{}
ブロックの中に以下のコードを追加する:# --- 为字体文件添加 CORS 跨域许可 --- location ~* \.(eot|otf|ttf|woff|woff2)$ { # 允许任何来源的页面请求此服务器上的字体文件。 add_header 'Access-Control-Allow-Origin' '*' always; }
- Apache ユーザーの方へ::
マスターのルート・ディレクトリに.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
タグの後に、以下のコード・ブロックを追加する。コメントに従って、必ず独自のドメイン名と接頭辞に変更してください!
/**
* ===================================================================
* 子域名泛解析配置: 内部请求重写
* ===================================================================
* 作用:当服务器接收到子域名请求时 (例如: a.b.com), 在 WordPress 内部
* 将其解析为对特定目录的访问 (例如: /prefix/a/),而浏览器地址
* 栏的 URL 保持子域名不变。
*/
if (isset($_SERVER['HTTP_HOST'])) {
// --- 请在这里修改为您自己的配置 ---
$main_domain_parts = ['your-domain-part-1', 'your-domain-part-2']; // 例如: ['aigcsoft', 'site']
$url_prefix = 'tool'; // 这是您的固定目录前缀, 例如: 'tool', 'app' 等。
// --------------------------------
$host_parts = explode('.', $_SERVER['HTTP_HOST']);
// 判断条件:域名由3部分组成, 且不是www, 且主域名匹配
if (count($host_parts) === 3 && $host_parts[0] !== 'www' && $host_parts[1] === $main_domain_parts[0] && $host_parts[2] === $main_domain_parts[1]) {
$subdomain = $host_parts[0];
// 将请求 URI 重写为/前缀/目录下的对应页面
$_SERVER['REQUEST_URI'] = '/' . $url_prefix . '/' . $subdomain . '/';
}
}
3.2 修正 functions.php
ファイル wp-content/themes/your-active-theme/
)
このファイルは、リダイレクト・ループの防止、リンクの動的な書き換え、古いリンクの301ジャンプの処理という3つの重要なタスクを担っている。
リグ現在のテーマの functions.php
書類極端そして、次のような完全なコード・ブロックを追加する。この場合も、コメントに従って独自ドメイン名と接頭辞に変更してください!
/**
* ===================================================================
* 子域名泛解析功能包: URL处理 & SEO重定向
* ===================================================================
*/
// --- 请在这里修改为您自己的配置 ---
$MY_APP_CONFIG = [
'main_domain' => 'your-domain.com', // 您的主域名, 例如: 'aigcsoft.site'
'url_prefix' => 'tool', // 您在 wp-config.php 中设置的相同前缀, 例如: 'tool'
];
// --------------------------------
/**
* 功能 1: 禁用 WordPress 规范链接重定向
* 作用:这是整个方案的基石。防止 WordPress 将子域名请求自动301跳转回
* 带目录的 URL,从而避免无限重定向循环。
*/
remove_filter('template_redirect', 'redirect_canonical');
/**
* 功能 2: 动态重写网站内所有相关链接
* 作用:在页面生成时,自动将 /prefix/slug/ 格式的链接替换为 slug.domain.com
* 的子域名格式,实现完美的伪静态效果。
*/
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) {
$subdomain = $post->post_name; // 获取文章的 slug
return 'https://' . $subdomain . '.' . $MY_APP_CONFIG['main_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: 为旧链接设置 301 永久重定向
* 作用:当用户或搜索引擎直接访问旧的 /prefix/slug/ 格式的 URL 时,
* 自动执行一个 SEO 友好的 301 重定向,跳转到新的子域名地址。
*/
function my_theme_redirect_old_urls() {
global $MY_APP_CONFIG;
$domain_to_check = $MY_APP_CONFIG['main_domain'];
$prefix_to_check = '/' . $MY_APP_CONFIG['url_prefix'] . '/';
// 仅当访问的是主域名,且URL路径包含指定前缀时才执行
if ( $domain_to_check == $_SERVER['HTTP_HOST'] && strpos($_SERVER['REQUEST_URI'], $prefix_to_check) === 0 ) {
$slug = trim(str_replace($prefix_to_check, '', $_SERVER['REQUEST_URI']), '/');
if (!empty($slug)) {
$new_url = 'https://' . $slug . '.' . $domain_to_check . '/';
wp_redirect($new_url, 301); // 执行301永久重定向
exit;
}
}
}
add_action('template_redirect', 'my_theme_redirect_old_urls');
4.最終検証とトラブルシューティング
- キャッシュの消去すべての改造が完了した時点で。必ずWordPressプラグインのキャッシュ(WP Rocketなど)、CDNのキャッシュ(ある場合)、ブラウザのキャッシュをクリアします。以下を使用することを強く推奨する。トレース・モードなしテストを実施する。
- リンクの確認あなたのウェブサイトのトップページにアクセスし、右クリックでツールや記事のリンクを確認する。
href
属性はhttps://[变量].your-domain.com/
フォーマット - リダイレクトの確認ブラウザのアドレスバーに手入力のような古い住所。
https://your-domain.com/[前缀]/[变量]/
エンターキーを押した後、アドレスバーが即座に新しいサブドメインのアドレスにジャンプするかどうかを観察する。 - サブドメインの検証サブドメインのアドレスに直接アクセスして、ページが正しく表示され、すべてのアイコンとスタイルが正しく読み込まれているかどうかを確認する。
よくある質問 トラブルシューティング:
- 無限リダイレクト (ERR_TOO_MANY_REDIRECTS)検査
functions.php
を追加しましたか?remove_filter('template_redirect', 'redirect_canonical');
. - アイコン/フォントがボックスまたはXで表示されるステップ2.2のCORSクロスドメイン設定が正しく追加され、有効になっていることを確認する。
- リンクは変更なし検査
functions.php
真ん中$MY_APP_CONFIG
サイト内のドメイン名と接頭辞は、あなたのサイト内のものとまったく同じです。 - ウェブサイトの白い画面または500エラー検査
wp-config.php
もしかしたらfunctions.php
PHPの構文エラー(通常はコピー&ペーストのエラー)はありませんか?
この文書は、将来、サーバーの移行やテーマのアップグレードを行ったり、新しいプロジェクトに同じ戦略を導入したりする際に、非常に貴重なものとなりますので、大切に保管してください。