Laravel「重複しています。Google により、ユーザーがマークしたページとは異なるページが正規ページとして選択されました」の対処

Laravelでプロジェクトを公開、GoogleSearchConsoleでドメインプロパティとして登録した場合に重複登録されてしまったので対処した方法です。

「重複しています。Google により、ユーザーがマークしたページとは異なるページが正規ページとして選択されました」

と表示されていました。

原因としては httpとhttps、wwwありwwwなし、それぞれのURLで登録されてしまったため重複してしまいました。

.htaccess での対処方法

アクセスURLをwwwなしのhttpsに固定するためにリダイレクトする場合

RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
RewriteRule ^(.*)$ https://%1%{REQUEST_URI} [R=301,L]

参考

wwwあり・なしをリダイレクト設定で統一する方法 | WEBクリエイターの部屋

Laravel での対処方法

リダイレクトはせずに、metaタグのcanonicalに統一したいURLを記載します。

あらかじめ以下のライブラリを追加してmetaタグのcanonical表示ができるように設定しておきます

https://github.com/artesaos/seotools

return [
    'meta' => [
        'defaults'       => [
            'canonical'    => 'current',
        ],

canonicalに表示されるURLを .env の APP_URL に統一してhttpsでのアクセスに固定します

use Illuminate\Support\Facades\URL;

    public function boot(): void
    {
        if (config('app.env') !== 'local') {
            URL::forceRootUrl(config('app.url'));
            URL::forceScheme('https');
        }
    }

以上です。

どちらかに対応し、GoogleSearchConsoleでの「修正を検証」を実行すれば解消されます。