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

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

新規登録して質問してみよう
ただいま回答率
85.35%
CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

URL

URL(ユニフォームリソースロケータ)とは、インターネット上のリソース(Webページや電子メールの宛先等)を特定するための形式的な記号の並びの事を言う。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

2533閲覧

特定文字列を含むURLをnoindexにできない

pond

総合スコア350

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

URL

URL(ユニフォームリソースロケータ)とは、インターネット上のリソース(Webページや電子メールの宛先等)を特定するための形式的な記号の並びの事を言う。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2020/03/16 02:58

編集2020/03/16 06:38

事象

特定文字列example1、example2を含むURLをnoindexにするように
下記のように設定しましたが全ページがnoindexになってしまう。

設定

【設定ファイル】:
/etc/httpd/conf.d/noindex.conf
【設定内容】:
RewriteEngine on
Header set X-Robots-Tag "noindex"
RewriteCond %{QUERY_STRING} example1
RewriteCond %{QUERY_STRING} example2
RewriteRule .* ? [env=NOINDEX_HEADER:1]

確認したこと

Header set X-Robots-Tag "noindex"を設定すると全ページへ適用される

環境

OS:CentOS6.7
Apache:2.2.1

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

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

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

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

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

Y.H.

2020/03/16 05:03

タグにapacheを追加してください。
pond

2020/03/16 06:40

追加いたしました。
guest

回答1

0

ベストアンサー

特定文字列example1、example2を含むURLをnoindexにするように

AND条件でいいんですよね?

全ページがnoindexになってしまう。

無条件にHeader setしているだけなのでそうなります。
まずRewrite moduleで条件により環境変数NOINDEX_HEADERをセットし、
NOINDEX_HEADERが設定されている場合のみHeader setすればいいです。

※以下では.htaccessで確認してますがconfでの定義でも同じです。

htaccess

1RewriteEngine on 2RewriteCond %{QUERY_STRING} example1 3RewriteCond %{QUERY_STRING} example2 4RewriteRule .* - [env=NOINDEX_HEADER:1] 5Header set X-Robots-Tag "noindex" env=NOINDEX_HEADER

console

1$ cat .htaccess 2RewriteEngine on 3RewriteCond %{QUERY_STRING} example1 4RewriteCond %{QUERY_STRING} example2 5RewriteRule .* - [env=NOINDEX_HEADER:1] 6Header set X-Robots-Tag "noindex" env=NOINDEX_HEADER 7$ curl -s -I 'http://localhost/test.php?example1&example2' 8HTTP/1.1 200 OK 9Date: Mon, 16 Mar 2020 04:58:13 GMT 10Server: Apache/2.4.29 (Ubuntu) 11X-Robots-Tag: noindex 12Content-Type: text/html; charset=UTF-8 13$ curl -s -I 'http://localhost/test.php?example1&example' 14HTTP/1.1 200 OK 15Date: Mon, 16 Mar 2020 04:58:17 GMT 16Server: Apache/2.4.29 (Ubuntu) 17Content-Type: text/html; charset=UTF-8

投稿2020/03/16 05:01

編集2020/03/16 05:07
Y.H.

総合スコア7918

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

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

pond

2020/03/16 06:35

ご回答ありがとうございます。 > AND条件でいいんですよね? 失礼いたしました、OR条件になります。 >無条件にHeader setしているだけなのでそうなります。 理解しました。
Y.H.

2020/03/16 06:43

> 失礼いたしました、OR条件になります。 であれば以下のように[OR]を追加でOKです。 RewriteCond %{QUERY_STRING} example1 [OR] RewriteCond %{QUERY_STRING} example2
pond

2020/03/16 06:50

すみません。複数のクエリがあり以下のように設定し、chrome開発者モード で確認したところx-robots-tagが出力されませんでした。 RewriteEngine on RewriteCond %{QUERY_STRING} example1 [OR] RewriteCond %{QUERY_STRING} example2 [OR] RewriteCond %{QUERY_STRING} example3 [OR] RewriteCond %{QUERY_STRING} example4 [OR] RewriteCond %{QUERY_STRING} example5 [OR] RewriteCond %{QUERY_STRING} example6 [OR] RewriteCond %{QUERY_STRING} example7 RewriteRule .* - [env=NOINDEX_HEADER:1] Header set X-Robots-Tag "noindex" env=NOINDEX_HEADER
pond

2020/03/16 06:51

apache再起動してます。
Y.H.

2020/03/16 07:02 編集

あーあと確認時はブラウザのキャッシュは都度クリアしてますよね?(chrome開発者モードならキャッシュ無効)
Y.H.

2020/03/16 07:34

今回追加したRewrite群より前に別のRewriteがありませんか? RewriteRuleで ENDとかLとか指定したものとか。。。 また、例示用にはexample.comとかexample.jpとか例示用のものに修正ください。 test.comは実在するドメインです。(悪意のある内容であったまたは変更された場合、pondさんの投稿がそのサイトへ誘導してしまいます。)
pond

2020/03/16 07:49

>今回追加したRewrite群より前に別のRewriteがありませんか? >RewriteRuleで ENDとかLとか指定したものとか。。。 無いです。 >また、例示用にはexample.comとかexample.jpとか例示用のものに修正ください。 >test.comは実在するドメインです。 大変失礼しました、修正いたしました。
Y.H.

2020/03/16 08:30

noindex.confだけじゃないですよ? noindex.confが読まれる前に他のconfでRewriteされてませんか? pc/spやhttp/httpsリダイレクトとかどこかにRewriteが入ってそうなんですが・・・ こちらでは以下問題なくX-Robots-Tag: noindex返ってますねぇ。 Rewriteされるのはこの.htaccessのみ。 $ cat .htaccess RewriteEngine on RewriteCond %{QUERY_STRING} example1 [OR] RewriteCond %{QUERY_STRING} example2 [OR] RewriteCond %{QUERY_STRING} example3 [OR] RewriteCond %{QUERY_STRING} example4 [OR] RewriteCond %{QUERY_STRING} example5 [OR] RewriteCond %{QUERY_STRING} example6 [OR] RewriteCond %{QUERY_STRING} example7 RewriteRule .* - [env=NOINDEX_HEADER:1] Header set X-Robots-Tag "noindex" env=NOINDEX_HEADER $ sudo curl -s -I 'http://localhost/report_tag/?example1&pageID=168&site=test' HTTP/1.1 200 OK Date: Mon, 16 Mar 2020 08:02:00 GMT Server: Apache/2.4.29 (Ubuntu) X-Robots-Tag: noindex Content-Type: text/html; charset=UTF-8 $ sudo curl -s -I 'http://localhost/report_tag/?example2&pageID=278&site=test' HTTP/1.1 200 OK Date: Mon, 16 Mar 2020 08:02:01 GMT Server: Apache/2.4.29 (Ubuntu) X-Robots-Tag: noindex Content-Type: text/html; charset=UTF-8 $ sudo curl -s -I 'http://localhost/report_list/?example3=1&tag_id=54&site=test' HTTP/1.1 200 OK Date: Mon, 16 Mar 2020 08:02:02 GMT Server: Apache/2.4.29 (Ubuntu) X-Robots-Tag: noindex Content-Type: text/html; charset=UTF-8 $ sudo curl -s -I 'http://localhost/?example4=0&site=test' HTTP/1.1 200 OK Date: Mon, 16 Mar 2020 08:02:03 GMT Server: Apache/2.4.29 (Ubuntu) Last-Modified: Mon, 02 Dec 2019 04:42:40 GMT ETag: "12-598b135a45b04" Accept-Ranges: bytes Content-Length: 18 X-Robots-Tag: noindex Content-Type: text/html $ sudo curl -s -I 'http://localhost/report/detail/?id=51740&example5=2?site=test' HTTP/1.1 200 OK Date: Mon, 16 Mar 2020 08:02:04 GMT Server: Apache/2.4.29 (Ubuntu) X-Robots-Tag: noindex Content-Type: text/html; charset=UTF-8
pond

2020/03/16 08:49

> noindex.confが読まれる前に他のconfでRewriteされてませんか? 他設定ファイルにありました。
pond

2020/03/16 09:07

<VirtualHost>タグ中に記載されてます。
Y.H.

2020/03/16 09:14

それらより前にnoindex.confに記載しているrewriteが処理されるようにするしかないですね。
pond

2020/03/24 03:17

お待たせいたしました、ありがとうございます。 特定ページにnoindexをつけることができました。 追加で大変申し訳ございません。下記2パターンのURLに対して設定したのですが 文字列にマッチしませんでした、id=の後は指定の方法が変わるんでしょうか? ① https://example.com/test/test2/id=12345&abc;def=1?site=test abc;def=1をクエリ文字列に含む場合noindexにする ↓設定 RewiteCond %{QUERY_STRING} (^|&)abc;def=1($|&) [OR] ② https://example.com/test/test2/id=12345&abcdef=2?site=test abcdef=2をクエリ文字列に含む場合noindexにする ↓設定 RewiteCond %{QUERY_STRING} (^|&)abcdef=2($|&) [OR]
Y.H.

2020/03/24 03:29

URLとしてのQueryStringは?以降です。 よって%{QUERY_STRING}には "site=test"が入っているのでマッチしないのでは?
pond

2020/03/24 04:10

ありがとうございます。以下の設定で解決しました。 RewiteCond %{REQUEST_URI} (^|&)abc;def=1($|&) [OR] RewiteCond %{REQUEST_URI} (^|&)abcdef=2($|&) [OR]
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問