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

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

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

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

.htaccess

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

Q&A

解決済

1回答

2435閲覧

ツイッターカードの画像が表示されない

keigo_8i

総合スコア11

Apache

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

.htaccess

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

1グッド

0クリップ

投稿2018/03/09 00:09

ツイッターカードの設定をしており、一昨日ツイートした時はちゃんと表示されたのですが、本日ツイートしたら画像が表示されませんでした。
それどころか、昨日まで表示されていた画像まで全て表示されなくなりました。

.htaccessに以下を記述していましたが、ちゃんと画像が表示されていた時から何も変えていません。

Apache

1RewriteEngine on 2RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?test.com [NC] 3RewriteCond %{HTTP_USER_AGENT} !(twitter|facebookexternalhit|google) [NC] 4RewriteRule .(jpg|png|gif|svg|js|css)$ - [NC,F,L]

https://nj-clucker.com/disable-direct-access-to-image-by-htaccess/
↑のサイトさんに、
RewriteCond %{HTTP_USER_AGENT} !(twitter|facebookexternalhit|google) [NC]
↑を書かないといけないと書かれていたのですが、他にこの記述をしているサイトは見つからず、またタイトルに「WordPress」とあるので、WordPressのみ効くものなのでしょうか?
この.htaccessを置いているサイトはWordPressではないです。

とりあえず上記の記述を全て消して再度をアップロードしましたが、ツイッターカードの画像は表示されないままです。
今は.htaccessにはオリジナルエラーページ(404と403)の記述しかしていません。

自ドメイン以外からのアクセスを拒否しつつ、ツイッターカードは表示したいのですが、正しい記述を教えていただきたいです。
よろしくおねがいいたします。

munokura👍を押しています

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

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

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

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

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

CHERRY

2018/03/09 01:40

Twitter Card の表示がうまくできない場合は、https://cards-dev.twitter.com/validator でのテストとWebサーバのアクセスログを見ながら調整するしかないとおもいます。
keigo_8i

2018/03/09 03:28

ありがとうございます。 そちらでURLを入れてみたら特にエラーも出ず、翻訳したら 「情報:ページが正常にフェッチされました」 「情報:14メタタグが見つかりました」 「情報:twitter:card =要約タグが見つかりました」 「情報:カードが正常に読み込まれました」 の4つが出てきましたが、画像は表示されません。
guest

回答1

0

ベストアンサー

"twitter card"というのはこの質問をみるまでしりませんでした。
上記の.htaccessの設定は、画像ファイルの直リンクや、許されているもの以外のエージェントからの閲覧を禁止するものです。

apache

1RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?test.com [NC] 直前に見ていたページがwww.test.comではない。 2RewriteCond %{HTTP_USER_AGENT} !(twitter|facebookexternalhit|google) [NC] ユーザエージェントが twitter等ではない。 3RewriteRule .(jpg|png|gif|svg|js|css)$ - [NC,F,L] その場合forbiddenで返す。

[NC]はNo Case sensitive(大文字と小文字を区別しない)。その他正規表現の説明は省きます。
RewriteCondは列挙した場合 AND で評価されます。否定条件なので、どちらかのルールにマッチしなければRewriteRuleが適用されて403で返します。

この設定を変えてないのに見えなくなったということは、このルールによってforbiddenになったというわけではなく、別の理由で参照できなくなったのではないかと思われます。

以下を試してみてください。

  • 画像ファイルへのアクセスログをチェック。なにかエラーがでていませんか。エラーがでているとすると、コードはなにでしょうか。上記ルールでエラーになっているなら 403(Forbidden)になっているはず。
  • 許されているユーザエージェントをリクエストヘッダにつけて該当画像URIをリクエスト。参照できるでしょうか。
% wget --user-agent="twitter" http://xxx.com/hoge.jpg
  • 上記 .htaccess の設定をすべてコメントアウトうえで、該当画像URIをリクエスト。参照できるでしょうか。

投稿2018/03/09 05:21

rogueref

総合スコア727

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

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

keigo_8i

2018/03/09 06:06

ありがとうございます。 サーバーはさくらサーバーで、コントロールパネルから見られるエラーログというものを見てみたのですが、初めて見たので何が書いてあるのかさっぱり分かりません..。 ただ「403」という文字列や画像ファイルのパスは見当たらず、テスト用にパスワードでアクセス制限しているページのパスはいっぱい書いてありました。 2つ目の % wget --user-agent="twitter" http://xxx.com/hoge.jpg は、どこに入力するのでしょうか? ブラウザのアドレスバーに入力したらグーグルの検索になってしまいました。 ツイッターカードに使っている画像は、サイト内でも使っているもので、そちらはちゃんと表示されています。
rogueref

2018/03/09 06:19

さくらサーバ上で動作しているApacheのログは参照できませんか? wgetはどこで動作させてもOKです。ブラウザではありません。ローカルのコンソールでもいいし、wgetがなければ、FirefoxなりでUserAgentを変更して許可しているユーザエージェント文字列で参照できるかどうかを確認してみてください。 自サイト(http(s)?://(www.)?test.com )でも見えるようなので、コンテンツの存在は大丈夫なようですから、あとはmod_rewritreの設定を確認。 .htaccessの設定を一旦全部はずてみても見えないのであれば、apacheの設定は無罪だということになりますね。
keigo_8i

2018/03/21 01:54

かなり遅くなってすみません。 何も変えていませんが数日たったら表示されるようになったので、理由はよくわかりませんが解決です。 いろいろとありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問