サイトがマルウェアに感染すると、訪問者はサイトにアクセスしたときに奇妙なスパムサイトにリダイレクトされる可能性があります。最近、サイトがマルウェアに感染してそのサイトで検索すると、Googleの検索結果に日本語のコンテンツが公開される問題に遭遇しました。特に /?s=1234 のように検索結果ページが Google で検索されていました。
通常、検索結果ページには noindex メタタグが追加され、検索エンジンに公開されません。特に、実際には検索結果のない検索結果ページがGoogleに公開され、その検索結果ページに日本語のコンテンツが表示されました。
その WordPress サイトからマルウェアを削除し、検索結果のないページに訪問者がアクセスすると、ホーム(前面ページ)に移動するコードを追加しました。
WordPress 検索結果がない場合はホームにリダイレクトする
WordPressとセキュリティ
WordPressはセキュリティに強いが、更新を無視するなどの理由でサイトがハッキングされたり、 マルウェアに感染する可能性があります。
- WordPress、テーマ、プラグインを最新バージョンに更新しない場合
- セキュリティの脆弱性が発見されたテーマやプラグインを使用している場合
- 弱いパスワードやadminなどの管理者名を使用する場合
- ソースが不明なパスを介してテーマまたはプラグインをダウンロードする場合
Avadaのような有料テーマ エレメン などのページビルダーを公式サイトではなくソースが不明なサイトを通じてダウンロードまたは購入する場合、テーマやプラグインファイルにマルウェアが植えられている可能性が高いので注意が必要です。
次のアクションはセキュリティを強化することができます。
- WordPress コア、プラグイン、テーマを常に最新バージョンに更新して保持
- 長い間更新されないプラグインを削除する
- セキュリティの脆弱性が報告されたテーマまたはプラグインを削除する(脆弱性がパッチされるまで)
- 強力なパスワードを使用
- セキュリティプラグインのインストール
- 定期的な バックアップ
クラウドウェイズなど、一部のホスティングはマルウェアスキャン機能を提供します。
検索結果がない場合はホームにリダイレクトする
前述したように WordPress通常、検索結果ページにはnoindexロボットタグが追加されるため、検索エンジンに検索結果ページは表示されません。私のブログを見ると、検索結果ページに次のようなrobotsメタタグが追加されています。
<meta name='robots' content='noindex, follow' />
日本語キーワードのスパムマルウェアに感染した場合は、マルウェアを修復し、データベースからもページや投稿の本文に日本語のコンテンツが挿入されていないかどうかを確認してください。
phpMyAdminを介してDBに接続して、次のクエリを実行してwp_postsに日本語の文字がないことを確認できます。
SELECT *
FROM wp_posts
WHERE post_content REGEXP '[ぁ-んァ-ン]';
上記のSQLクエリは WordPressのwp_postsテーブルのpost_content列に、日本語ひらがな(ぁ-ん)文字またはカタカナ文字を含むレコードが含まれていないかどうかを問い合わせます。みんなで日本語の文字を確認してください。
マルウェアを削除した場合は、robots.txtファイルにコードを追加して、/?s = 123などの検索結果ページを収集しないように指示できます。
User-agent: *
Allow: /wp-content/uploads/
Disallow: /wp-admin/
Disallow: /readme.html
Disallow: /?s=
sitemap:https://your-site.com/sitemap_index.xml
これで、Googleに公開されている日本語コンテンツが表示される検索結果ページをクリックすると、検索結果がないというフレーズが表示されます。
この状況で検索結果がない場合は、ホーム(フロントページ)にリダイレクトすることを検討してください。検索時に検索結果がない場合は、ホームページに移動したい場合は、次のコードを チャイルドテーマ 関数ファイルに追加できます。
function redirect_empty_search_to_home() {
if ( is_search() && ! have_posts() ) { // 검색 중이며 결과가 없을 때
wp_safe_redirect( home_url() ); // 홈으로 안전하게 리디렉션
exit;
}
}
add_action( 'template_redirect', 'redirect_empty_search_to_home' );
robots.txtファイルは修正し、関数コードのみを追加できますか?
リダイレクトするのはPHPコードです。したがって、そのコードをチャイルドテーマの関数ファイルに追加するだけです。
検索結果ページにNoindexメタタグが追加されている場合は、あえてrobots.txtファイルを変更する必要はありません。
ところで、PHPコードを追加しても検索エンジンに公開されることになりますが、削除した記事がホームにリダイレクトできなくなり、Page Not Foundのように出てきます。
削除した文をホームに移動させる機能をしません。本文のコードは WordPress 検索機能を使って検索したとき、検索結果がないときにホームに移動する機能をします。
404 Page Not Found(ページなし)エラー時にホームに移動したい場合 https://www.thewordcracker.com/intermediate/404-redirection-to-homepage-in-wordpress/ 文を参考にしてください。