質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
AMP(Accelerated Mobile Pages)

AMP(Accelerated Mobile Pages)は、Google社を始め複数のプラットフォームが共同で参加しているプロジェクト。モバイルユーザーのUX向上を目的とし、モバイルページの表示速度の高速化を図っています。

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

.htaccess

Apacheウェブサーバーにおいて、ディレクトリ単位で設置及び設定を行う設定ファイルを指します。

Q&A

解決済

1回答

284閲覧

Googleの検索結果のモバイル用urlに含まれる &amp=1 をリダイレクトで消したい

yiwsk

総合スコア39

AMP(Accelerated Mobile Pages)

AMP(Accelerated Mobile Pages)は、Google社を始め複数のプラットフォームが共同で参加しているプロジェクト。モバイルユーザーのUX向上を目的とし、モバイルページの表示速度の高速化を図っています。

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

.htaccess

Apacheウェブサーバーにおいて、ディレクトリ単位で設置及び設定を行う設定ファイルを指します。

0グッド

0クリップ

投稿2024/09/07 05:36

編集2024/09/07 09:25

実現したいこと

https://mydomain/?page_id=123&amp=1 のようなurlから、.htaccessで、&amp=1のないurlにリダイレクトしたい。

発生している問題・分からないこと

Wordpressで数学のブログを作成し、数式の表示には MathJaxを使っています。
Googleに登録し、スマホで検索結果を見ると、URLの最後に勝手に &amp=1 がつけられています。AMP(Accelerated Mobile Pages)は、モバイルページの表示速度を高速化するHTMLフレームワークだということですが、&amp=1 がついた状態では、数式が文字化けしてしまいます。
そこで、色々と調べて、下のような .htaccess で&amp=1 のないページにリダイレクトさせてみました。

該当のソースコード

<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{QUERY_STRING} (^|&)amp=1(&|$) RewriteRule ^(.*)$ https://mydomain%{REQUEST_URI}? [R=301,L] </IfModule>

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

上のコードでは、
https://mydomain/index.html?amp=1
は、正しく https://mydomain/index.html にリダイレクトされるのですが、Wordpressの
https://mydomain/?page_id=123&amp=1 は、"page_id=123" も消えて、http://mydomain/ にリダイレクトされてしまいます。
page_id=123を残してリダイレクトするには、どうしたらいいですか?
今日一日試行錯誤に費やしました。助けて下さい。

補足

なぜ、私のブログがamp対応になったのか分からなかったのですが、Wordpressのテーマ、Cocoonの設定をみると、「AMP」というタブがあり、知らない間に「AMP機能を有効化する」のチェックを入れていました。数式が文字化けするなどといった反作用があることは想定外でした。
このチェックを外したので、リダイレクトが無事にできたら、AMPのキャッシュをクリアーしようと思います。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

amp=1は必ず末尾という前提で、手抜きで、前に何かある場合と、これのみの場合で場合分け。

Apache

1RewriteEngine On 2RewriteCond %{QUERY_STRING} ^(.*)&amp=1$ 3RewriteRule ^ %{REQUEST_URI}?%1 [R=301,L] 4RewriteCond %{QUERY_STRING} ^amp=1$ 5RewriteRule ^ %{REQUEST_URI}? [R=301,L]

以前、前方に別の文字列があるかないかもまとめて1つの正規表現で書いた覚えがあるのでそれも可能でしょうが、まあこれくらいで。
%1RewriteCondの正規表現の括弧内です)

末尾に限定せずに先頭や途中の場合も、少なくとも場合分けすれば出来ます。工夫すればある程度まとめられると思います。

あと、リダイレクト先のホスト名が同じなら、パス以降だけ書けば良いです。

投稿2024/09/08 02:31

otn

総合スコア85901

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yiwsk

2024/09/08 23:39

おお!ありがとうございます。 うまく行きました!!助かりました!! なるほど、あのように書くのですね。
otn

2024/09/09 10:09

「(不要部分の)削除」とかの機能が無いので、「必要な部分のみ抜きだし」になります。 処理の意味としては同じなので。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問