にしし ふぁくとりー(西村文宏 個人サイト)

Presented by Nishishi via Movable Type. Last Updated: 2018/02/19. 10:38:42.

Sakura Scope (2017年05月)

ちょっと倒錯気味な、ただの日記です。(^^;)
これはやばいと思われた場合は、お早めに閲覧を中止されることをお勧め致します。

ローマ字で使う横棒(長音記号マクロン)を加えた英字を表示する方法

長音(伸ばす音)が含まれる日本語の単語をローマ字で表記する際には、母音を示す「a,A」「i,I」「u,U」「e,E」「o,O」のアルファベットの上に横棒を加えて、「ā,Ā」「ī,Ī」「ū,Ū」「ē,Ē」「ō,Ō」のように表記します。
例えば「交番」なら「KŌBAN」、「九州」なら「KYŪSYŪ」のような感じです。
この英字の上に載せる横棒のことは「マクロン(MACRON)」と呼びます。

このような横棒(長音記号/マクロン)を付加した英字をウェブ上に表示したい場合には、以下の3通りの方法があります。

①の方法は、ウェブページの文字コードが「UTF-8」のようなUnicodeである場合にだけ使える方法です。②と③の方法は、ウェブページの文字コードに関係なく使えます。よく分からない場合は②の方法を使っておけば確実だと思います。

方法① Unicodeで定義されているマクロン付き英字をそのまま記述

Unicodeでは、長音記号(マクロン)を付加した母音英字が定義されています。以下の通りです。(※かっこ内は、UTF-8で定義されているコードです。)

Unicode文字を直接表示
母音大文字小文字
マクロン付きA・aĀ (C480)ā (C481)
マクロン付きI・iĪ (C4AA)ī (C4AB)
マクロン付きU・uŪ (C5AA)ū (C5AB)
マクロン付きE・eĒ (C492)ē (C493)
マクロン付きO・oŌ (C58C)ō (C58D)

上記のように、マクロン付きの英字がUnicodeで定義されていますから、ウェブページの文字コードがUTF-8などのUnicodeであれば、上記の文字をそのままHTMLソースに書けば表示できます。
IMEの文字パレットなどを使って入力することもできますし、テキストエディタに搭載されている特殊文字入力機能を使って入力することもできますし、上記に表示されている文字をそのままコピー&ペーストしても良いでしょう。

方法② マクロン付き英字を表す文字実体参照を記述

長音記号(マクロン)を付加した母音英字は、それぞれ文字実体参照という記述方法が用意されているため、以下のような「&」記号で始まって「;」記号で終わる記述をHTMLソース内に記述することで、表示できます。(※かっこ内は、文字実体参照を使って実際に表示させてみた例です。)

文字実体参照で表示
母音大文字小文字
マクロン付きA・aĀ (Ā)ā (ā)
マクロン付きI・iĪ (Ī)ī (ī)
マクロン付きU・uŪ (Ū)ū (ū)
マクロン付きE・eĒ (Ē)ē (ē)
マクロン付きO・oŌ (Ō)ō (ō)

上記のように、マクロン付きの英字は文字実体参照にも定義されていますから、ウェブページの文字コードがSHIFT-JISやEUC-JPなどであっても、上記の記述方法をHTMLソースに書くことで表示できます。
もちろん、ウェブページの文字コードがUTF-8の場合であっても、文字実体参照を使ってはいけないことはありません。つまり、上記のように文字実体参照を使う方法は、文字コードに関係なく使用可能です。文字コードがなんなのかよく分からない場合は、この方法を使っておくのが確実でしょう。

方法③ 長音記号(マクロン)を合成するための数値文字参照を併記

さて、実はこのアルファベットの上に載せる横棒は、HTMLソース内で合成することもできます。数値文字参照の ̄ を使うと、直前の英字にマクロンを合成できます。例えば、英字「A」の直後に「̄」を加えて、「Ā」と記述すると、実際の表示では英字の上に横棒が合成されて「」と表示されるわけです。例えば以下のように書けます。(※かっこ内は、数値文字参照を使って実際に合成結果を表示させてみた例です。)

マクロンを合成して表示
母音大文字小文字
A・aに横棒を合成Ā (Ā)ā (ā)
I・iに横棒を合成Ī (Ī)ī (ī)
U・uに横棒を合成Ū (Ū)ū (ū)
E・eに横棒を合成Ē (Ē)ē (ē)
O・oに横棒を合成Ō (Ō)ō (ō)

上記のように、直前のアルファベットの上に横棒を合成することで、長音記号(マクロン)付きの英字を表現できます。
そして、この方法を使えば、母音ではないアルファベットの上にマクロンを加えることもできるため、実際には使われない文字を作り出すこともできます。

▼AIUEO以外の英字の上に長音記号を合成することも……

英字の直後に ̄ を書き加えれば横棒を合成できるわけですから、例えば、英字「y」の直後に「̄」を加えて、「ȳ」と記述すれば、実際の表示では英字の上に横棒が合成されて「ȳ」と表示(※注)されます。(^_^;)

※注:ただ、この方法で合成できるかどうかは、表示に使われているフォントや、ブラウザ次第のような気がします。私がちょっとだけ試してみたところ、表示できるブラウザと表示できないブラウザがありましたし、表示できるブラウザであっても使用フォントによっては表示できませんでした。
例えば以下のように記述してみたとき、

ĀB̄C̄D̄ĒF̄ḠH̄ĪJ̄K̄L̄M̄N̄
ŌP̄Q̄R̄S̄T̄ŪW̄X̄ȲZ̄
āb̄c̄d̄ēf̄ḡh̄īj̄k̄l̄m̄n̄
ōp̄q̄r̄s̄t̄ūw̄x̄ȳz̄
1̄2̄3̄4̄5̄6̄7̄8̄9̄0̄

以下のように表示されます。

ĀB̄C̄D̄ĒF̄ḠH̄ĪJ̄K̄L̄M̄N̄ŌP̄Q̄R̄S̄T̄ŪW̄X̄ȲZ̄
āb̄c̄d̄ēf̄ḡh̄īj̄k̄l̄m̄n̄ōp̄q̄r̄s̄t̄ūw̄x̄ȳz̄
1̄2̄3̄4̄5̄6̄7̄8̄9̄0̄

EdgeやIEでは全文字の上にマクロンが上手い具合に合成されていました。下図が表示例です。

全アルファベットに長音記号(マクロン)を合成したEdgeでの表示例

でも、他のブラウザでは母音以外には合成できませんでした。これは別にブラウザの仕様というわけではなく、表示に使われているフォントに影響されているような気もします。私の環境では、例えばセリフ(Serif)系フォントを使えば、合成できる文字もありました。

全アルファベットに長音記号(マクロン)を合成したChromeでの表示例

まあ、このように母音以外のアルファベットなどに長音記号を付加する必要性(需要)がないでしょうけども。(^_^;) ただ、Gの上にマクロンを加えるのはアラビア語で使われるようですけども。
なんとなく顔文字を合成する目的でちょっと使われたりしそうかな? という気はします。^^;
この方法を使おうとする場合には、意図通りに表示できない環境もあるという点を気にしておいた方が良さそうです。

長音記号(マクロン)を単独で表示したい場合

ちなみに、合成しないマクロンを表示したい場合(つまり、マクロンを単体で表示したい場合)は、文字実体参照で「¯」が使えます。表示すると「 ¯ 」のように見えます。
もちろんUnicodeで定義されていますから(00AF/UTF-8だとC2AF)、ウェブページの文字コードがUTF-8などであれば直接「¯」を書くことでも表示できます。

というわけで、ローマ字などで使われる「横棒(長音記号マクロン)を加えた英字」を表示する方法でした。

「スタートアップツール for ATOK」を削除すると[CTRL]キー2回で辞書引きできるイミクル機能も無効になってしまう

[Ctrl]キー2回押下で辞書引きできるATOKイミクル機能最近のATOKには、文字列を範囲選択してから[Ctrl]キーを2回押すだけでATOK内蔵電子辞典で辞書引きができる「イミクル」という便利機能が内蔵されています。どんなソフトの上でも、とにかく文字列を範囲選択さえできれば辞書引きができるので非常に便利です。
ブラウザだろうとテキストエディタだろうとどこでも辞書引きができるので、単語の正確な意味を確認する場合はもちろん、英和辞典も入れていれば英文を読み解く際にも役に立ちます。

この大変便利なイミクル機能ですが、ATOKが「スタートアップ」フォルダに追加する「スタートアップツール for ATOK」項目を削除すると、イミクルも使えなくなってしまうんですね!
正確には、イミクル機能が使えなくなるわけではなく、イミクル機能の常駐が解除されてしまうので[Ctrl]キーを2回押下してもイミクル検索ができなくなる、ということですが。

以下はその話です。

ATOKがスタートアップに自動追加する「スタートアップツール for ATOK」はイミクルの常駐に必要だった

PC(Windows)にATOKをインストールすると、ATOK関連の機能がスタートメニューに追加されます。しかしそれとは別に、スタートメニュー内にある「スタートアップ」フォルダにも『スタートアップツール for ATOK xxxx』という項目が追加されます。(※xxxxはバージョン番号でATOK 2017なら「スタートアップツール for ATOK 2017」です。)

スタートアップフォルダ

このスタートメニュー内の「スタートアップ」フォルダ(※注)は、Windowsの起動直後に自動実行されるショートカットを格納する特殊なフォルダです。ここに望みのショートカットを入れておけば、それらがすべてWindowsの起動(というかログオン)直後に自動的に起動されます。

※注:この「スタートアップ」フォルダはかなり昔のWindowsから存在し、Windows10にもあります。しかし、Winodws10では実際のスタートメニュー上では見えません。(スタートメニューを構成しているフォルダを直接参照するか、もしくはタスクマネージャから確認できます。:後述)

ATOKの「スタートアップツール for ATOK」は、てっきり初回インストール直後とか新規ユーザを追加した際に、他のIMEから変換辞書などを引き継ぐ処理を実行するためだけに存在しているのだとばかり思っていました。
なので、インストールしているATOKが問題なく動作することを確認できたら、あとは削除しても問題ない、と理解していました。

しかーし。実はそうでもなかったようです。(^_^;)

ATOKが「スタートアップ」フォルダに追加する「スタートアップツール for ATOK」項目を削除すると、[Ctrl]キー2回押下で辞書引きができる「イミクル」機能も使えなくなってしまうんですね!
この事実に気付きました。

▼不要な常駐プログラムを減らそうと思って「スタートアップツール for ATOK 2017」を削除してみたら……

Windows7 PCで、いつ頃からか[Ctrl]キーを2回押下してもイミクルのウインドウが出てこないことに気付きました。
最初は、たまたま何かの不具合でそうなったのかな、Windowsを次に再起動したときには元に戻っているだろう、と思っていたんですが、どうもずっと無効になり続けているようだと分かりました。
そこで原因を調べてみたところ、イミクル機能は「常駐することで動作するプログラムだ」という事実に行き当たりました。

ATOKとは「日本語入力機能(IME/Input Method Editor)」ですから、Windowsの起動と同時に実行されるのは当たり前です。
なので、ATOKの機能の一部である「イミクル」も、当然ATOKが動作してさえいれば使えるものだと解釈していたのですが、どうやらそうではなかったようです。
イミクル機能はATOK本体とは別に動作する独立したプログラムなんですね。だから「常駐」するわけで。

で、常駐といえば思い当たることが1点ありました。
スタートメニュー内のスタートアップフォルダから「スタートアップツール for ATOK 2017」項目を削除したな、と。(^_^;)

実際には完全に消し去ったわけではなく、スタートアップフォルダの中にあったショートカットを別の場所に移動させることで、スタートアップフォルダ内から消しただけですが。
なので、「スタートアップツール for ATOK 2017」のショートカットを、再度スタートアップフォルダの中に戻してみました。(そして、そのショートカットをダブルクリックして1回実行しました。)

すると、[Ctrl]キー2回押下で期待通りイミクルのウインドウが開きました。

▼スタートアップツール for ATOKでは意外といろんな機能が呼ばれているっぽい

Windows10でも、「スタートアップツール for ATOK」はスタートアップフォルダの中に含まれています。(ただ、スタートメニューからは見えません。)
Windows10の場合は、タスクマネージャで常駐プログラムの一覧を見たり、無効化したりできます。これを見てみると、ATOKスタートアップツールでは以下の6個のプログラムが自動起動されているようでした。

タスクマネージャでATOK関連の常駐プログラムを表示させたところ

  • ATOK イミクルC:\Program Files (x86)\JustSystems\ATOK30\ATOK30DV.EXE
  • ATOK オンメモリマネージャーC:\Program Files (x86)\JustSystems\ATOK30\ATOK30OM.EXE
  • ATOK スタートアップ補助ツールC:\Program Files (x86)\JustSystems\ATOK30\ATOK30PD.EXE
  • ATOK スタートアップ補助ツールC:\Program Files\JustSystems\ATOK30_X64\ATOK30PD.EXE
  • ATOK スタートアップツールC:\Program Files (x86)\JustSystems\ATOK30\ATOK30PC.EXE
  • ATOK クラウドツールC:\Program Files (x86)\JustSystems\ATOK30\ATOK30CL.EXE

※自動起動するというだけであって、すべてが「常駐」するわけではないと思いますが。(1度実行されたらすぐに終了するものもあるでしょう。)
「スタートアップ補助ツール」というのだけは、32bit版と64bit版が別々に起動しているっぽいです。

何の役割を担っているのか分からないのもありますが、名称からして勝手に無効化はしない方が良さげな感じですね。(^_^;)
まあ、スタートアップフォルダから削除していてもATOKによる日本語入力機能に(少なくとも体感するような)不具合はありませんでしたけども。

イミクル機能の有効化・無効化や設定変更などの方法

というわけで、たとえイミクル機能が不要な場合であっても、少なくとも「スタートアップツール for ATOK」を削除する方法で実現するのは避けた方が良さそうです。^^;
イミクル機能は、ATOKのメニューを開けば単独で起動できます。ここから有効化(常駐)・無効化(非常駐)も含めた設定変更ができますから、ここから設定するのが正攻法でしょうね。

既にイミクル機能が有効なのであれば[Ctrl]キーを2回押下します。
有効出ないのなら、ATOKパレットからメニューを開くか、もしくはタスクトレイにあるATOKアイコンを右クリックして「ATOKメニュー」項目を選択すれば、ATOKのメニューが開きます。
ここに「ATOKイミクル」という項目がありますから、それをクリックすると(何も辞書引きしない状態での)イミクルウインドウが開きます。

ATOKメニューで「ATOKイミクル」項目をクリック

ここで、ウインドウ右上の歯車アイコンを押すと、設定画面が開きます。

イミクル機能の設定画面

「ATOKイミクルを常駐する」というチェックボックスがあるので、ここをON/OFFすることで、イミクル機能の常駐/非常駐を選択できます。
また、イミクル機能で辞書引きする際に使うキーを、[Ctrl]キー2回ではなく、[Alt]キー2回や、[Shift]キー2回に変更することもできます。
[Ctrl]キーを何か別のソフトで頻繁に使うのであれば、[Alt]などに変更しておくと便利かも知れません。
また、「無効にするアプリケーションの登録」ボタンを使えば、イミクルを起動しないようにするソフトを設定しておくこともできるようです。

イミクル機能は、ATOK本体とは独立したプログラムだったとは

というわけで、スタートアップから「スタートアップツール for ATOK」を削除してしまうと、イミクル機能も使えなくなってしまう、という話でした。
ATOKみたいなIMEは(IMEとしてWindowsと共に自動起動するわけだから)当然スタートアップに何かを入れる必要性なんてないものだとばかり思っていたんですが、そうではなかったようです。^^;
イミクルが C:\Program Files (x86)\JustSystems\ATOK30\ATOK30DV.EXE などの場所に存在する、ATOKそのものとは別の独立したプログラムだったんですね。

まあ、ATOKに加えられる各種電子辞典での辞書引きは、ATOKとは別の一太郎からでも実行できるわけですから、ATOK本体からは独立した機能になっている、ということなんですかね?

なお、Windows7やWindows10のスタートメニューの編集方法などについては、下記の記事で説明していますので必要なら別途ご参照下さい。

Windows10のスタートメニューの実体がある場所と追加方法
Windows7のスタートメニューの実体がある場所

レンタルサーバのペナルティで強制的に「410 Gone」が返される事例に驚いた

410 Goneとある企業サイトに関して、「数ヶ月前からGoogleの検索結果に一切ヒットしなくなった」という相談を受けました。
いろいろ調べてみたところ、ウェブサーバにアクセスした際に返されるHTTPレスポンスヘッダが以下のような条件で分岐されていることに気付きました。

  • PCやモバイル端末で使われる一般的なブラウザのユーザエージェント名でアクセスすると、HTTPステータスコードには「200 OK」が返されていて普通に閲覧できる。
  • それ以外のユーザエージェント名でアクセスすると、HTTPステータスコードには「410 Gone」が返されて、一切閲覧できない

なかなか謎の現象でした。
上記のようになっているので、Google Botなどが使っているユーザエージェント名からのアクセスに対しては「410 Gone」が返ります。そのせいで、検索結果からも排除された上で、クローラーのアクセス数も激減していたのでした。
最初は、.htaccessファイルでリダイレクト関連の記述をミスったがための影響かな? と思ったんですが、当該サイトではそもも.htaccessファイルは利用されていませんでした。

結論から言うと、

負荷の高すぎるサイトに対するペナルティだった

この現象はレンタルサーバ会社側が科したペナルティでした。
実は、あまりにも負荷の高いウェブサイトだったために、レンタルサーバ側からペナルティを科されて、

  • 人間以外のUAには強制的に『410 Gone』を返す

……という措置が執られていたことが判明しました。
そんな措置を契約者に知らせることなく実施するレンタルサーバもあるのかと驚きました!

※注:このブログがあるレンタルサーバ会社ではありません

もちろん共用サーバなのですから、負荷の高すぎるサイトに対して何らかの対処をする必要がありますし、場合によってはペナルティを科すことも当然だとは思います。ただ、せめて「こういうペナルティを科しました」という事後報告くらいあって良いと思うんですが。そうすれば契約者の側だって何らかの対策を考えたり採ったりできるわけですし。
今回は無警告・無報告で実施されてしまったがために、「なんか数ヶ月前から検索結果に一切出なくなったんだけど」→「じゃあ調べましょうか。……なんか410 Goneを返しまくってるんだけど」→「いや、特にそんな設定をした覚えはないが」→「では原因はどこにあるんだろうか」などという試行錯誤を経る無駄な時間を費やしてしまったわけで。

そもそも、HTTPステータスコードには「高負荷でアクセスできないよ」というような意味を表せる、「503 Service Temporarily Unavailable」があるわけで、アクセス元の区別なくそれを返してくれていれば良かったんじゃないかと思うんですけども。(もしかして、ペナルティというか、「せめて人間には見せてやろう」という配慮なんでしょうか?^^;)

強制的に「410 Gone」が返される現象の原因を探ろうと試行錯誤した記録(^_^;)

当該サイトはPHPからデータベース(MySQL)にアクセスして情報を表示するサイトで、一部のページは非常に重くなっていました。ウェブサーバにリクエストを送ってから最初の反応が返ってくるまでに30秒くらいかかってしまうような。
いろんなところに問題はありそうでしたけども、検索結果から全排除されるような何らかの悪質な要素があるわけでもなさそうなので、検索結果に一切出てこないのはちょっと不思議だなとは思いました。
もうやや忘れかけていますが、だいたい以下のような順序で調べた気がします。

1. Google Search Consoleでちゃんとクロールされているかどうかを調べる

検索結果に出てこなくなった際には、まずは「Google Search Console」を覗いてみるのが良いでしょう。クローラーがどれくらいの頻度で訪れて情報を引っ張っているか、何らかのエラーが発生していないか、SEO関連でペナルティを科されていないか、などの情報が得られます。
で、実際にそのサイトの「Google Search Console」で「クロールの統計情報」を見ると、数ヶ月前のある時点から突然クローラーがほとんど来なくなっている事実が判明しました。

Google Search Consoleで調べたクロールの統計情報(少ない) Google Search Consoleで調べたクロールの統計情報(普通)

1ヶ月にわずか1~2回しかクロールされておらす、しかも1回のクロールで最大2ページしか読んでいません。比較のために私のサイトの情報も調べると、毎日平均629ページがクロールされていました。というわけで、検索結果にヒットしないのは「そもそもクロールされていないから」ということが分かりました。そりゃ情報を取得しに来てくれなかったら、検索結果に出るわけがありませんよね。
最初は、そのように「あまりにも反応が遅い」ために、検索エンジンのクローラーがアクセスを諦めてしまっているのかな? と思ったんですが……、

2. Fetch As GoogleでGoogle Botがどのように見ているかを調べる

Google Search Console内にある「Fetch As Google」機能を使うと、Google Botがどのようにウェブページを見ているか(描画しているか)が分かります。
実際に試してみると、ステータスには「見つかりませんでした」というエラーが表示されます。正常な場合には、この欄には「完了」という緑色の文字が出ます。

Fetch As Googleのステータスが「見つかりませんでした」エラーになる

※このFetch As Googleでレンダリングリクエストも送っていれば、「完了」の項目をクリックすることで実際の描画結果が画像で見えます。しかし「見つかりませんでした」エラーが出る場合には描画結果も参照できませんでした。

IE、Edge、Firefox、Chromeなどのブラウザで閲覧すれば問題なく見えるのに、「Fetch As Google」では見つからないと言われてしまうので、クローラーにどう見えているのかが判断できません。
ちょっと困りました。

3. ユーザエージェント名を変更して、Google Botのようにアクセスして調べる

Google Botがどのように見ているのかを直接調べるために、Google Botを装ってウェブサイトにアクセスしてみることにしました。
具体的には、Windows上のChromeのデベロッパーツールを使って、ブラウザのUA(ユーザエージェント)名をGoogle Botが使っている名称「Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)」に変更してアクセスします。
すると、状況が見えてきました。
Google Botを装ってアクセスすると、以下のように「410 Gone」というエラーが返っていました。

Google Botを装ってアクセスすると410 Goneが返る

というわけで、どうやらGoogle Botがウェブサイトにアクセスしようとしても、Google Botにはコンテンツの存在が見えていないようだということが分かりました。なかなか問題は深刻そうです。これならクロール頻度が激減するのも納得です。HTTPステータスコード410とは「もうこのURLにコンテンツは存在しません(消滅しました)」という意味ですから。「404 Not Found」の場合だと「何らかのミスで消えた」とか「一時的に消されてしまっただけ」という可能性もありますが、「410 Gone」をわざわざ返すということは、「運営者の意思で消した」のだろうと推測できますから。

ページがPHPで出力されていたウェブサイトでしたし、ユーザエージェント名をチェックしてPCとモバイルを分岐しているサイトでもあったので、まずはPHPソースの記述を疑いました。
でも、「モバイルなら移動、それ以外ならそのまま」という分岐処理だったので、Google Botにだけ410 Goneを返してしまう原因はなさそうでした。
さらに、よくよく確認してみると、以下の事実が分かりました。

  • 存在しないURLを指定した場合でも、人間用ブラウザには「404 Not Found」が返るのに、Google Botには「410 Gone」を返している。
  • ユーザエージェント名を「ABC123XYZ」のような適当な文字列にした場合でも、常時「410 Gone」が返される。

この、存在しないURLにアクセスした場合でも「410 Gone」が返されるという事実から、PHPソースの問題ではなく、ウェブサーバの設定の問題だと言えそうです。
また、Google Botを決め打ちしているわけではなく、「PCやモバイルで使われる一般的なブラウザ以外」全部に対して「410 Gone」を返していそうなことも分かりました。

4. ウェブサーバの設定を調べる

いろいろ調べてみたところ、リダイレクトの記述を誤ると「410 Gone」が返ってしまうケースがあることが分かりました。
普通、リクエストを別ページに転送(リダイレクト)する際には、HTTPステータスコードに301や302などを返します。(307や308なども使われますが。)
しかし、リダイレクトする記述を使いながら、リダイレクト先の記述を省略してしまうと、「移動先がない(消滅した)」という解釈で「410 Gone」が返されるようです。

さて、ウェブサーバはApacheでしたので、HTTPステータスコードをどうにかするには .htaccessファイルを使います。
どこかにそういう誤った記述が含まれる .htaccessファイルがあるだろう……と予想したのですが、見つかりません。
そもそも、このウェブサイトでは.htaccessファイルが1つも使われていませんでした。

しかし、何らかの手段で「一般のブラウザ」と「それ以外」とを判別して分岐していることは間違いありません。
ウェブサーバのアクセスログを見てみると、410を返しているケースが多数ありました。Google Botはもちろん、Bing Botに対しても410を返しています。

このような事実からも、必ずどこかに「強制的に410を返す」ような設定があるはずです。
でも、レンタルサーバのコントロールパネルを見てみても、それらしき設定項目は見つかりません。
ここまで来ると、途方に暮れてしまいました。(^_^;;;

5. レンタルサーバのサポートに問い合わせて、ペナルティの事実が発覚!

で、こうなると「もはやレンタルサーバ会社のサポートに問い合わせるしかないのでは」というアドバイスをする以外に方法が残っていません。
ということで問い合わせて頂いた結果、

  • 共用サーバなので、負荷が高すぎるサイトには、一般的なブラウザ以外に対して強制的に410を返すペナルティを科している
  • 何らかの対策が採られたら解除することは可能。

という返答があり、すべての原因はレンタルサーバ会社側の対処(ペナルティ)だと判明したのでした。
……たしかに重たいサイトでしたから、ペナルティが必要なのは分からんもでないんですが、その事実をちゃんと報告していればこんな苦労をする必要もなかったのに……と思わずに居られません。^^;
まあ、もしかしたらちゃんと報告はあったものの、先方の担当者が黙殺したか意味を理解できなかったか何かそういうことだったのかも知れませんけども。

※ちなみに、先方が契約しているのは、そのレンタルサーバ会社が提供している最上位のコースだったので、契約を上位に変更するという対策は取れませんでした。(格安レンタルサーバではなく、そこそこ月額料金の高いレンタルサーバです。)

レンタルサーバ会社側が「410 Gone」を返すよう設定するケースもあるのだと……

確かに、とても重たいサイトでした。
PHPを使ってデータベース(MySQL)からデータを引っ張ってくるのにものすごく時間がかかっていたんですよね。それ以外の部分でも、画像サイズが無駄に大きかったり、必要性の低いスクリプトを読んでいたり、いろいろ問題点は見つかりました。
一応、若干の軽量化対策とかを施しましたが、本格的に負荷を減らすには、データベース側に負荷軽減策が必要です。
幸いなことに、毎回データベースを参照する必要のあるリクエストというのは多そうではないようだったので、「データベースからの読み込み結果を一定期間キャッシュしておく」とかの対処を使えば、ある程度は軽減できそうな感じでした。

まあそれはともかくとして、「負荷の高すぎるサイトに強制的に『410 Gone』を返すことでクローラーのアクセスを阻害してアクセス数(負荷)を減らそうとする方針のレンタルサーバ会社があるとは思わなかったので驚いた」という話でした。^^;
ウェブサイトが重たくなってしまっている場合には気をつけましょう。
もっとも、ウェブサイトが重たいのであれば、ペナルティとか検索結果云々以前に、人間の閲覧者だって帰ってしまうでしょうから対処は必須ですが。

注:ここのサーバの話ではありません

※注:この問題のサイトが契約しているレンタルサーバ会社は、私は使ったことがない会社でした。(つまり、このブログがあるサーバではありませんので、混同・誤解しないようご注意下さい。)

CSSだけでドロップダウンメニューのサブメニューを開閉する方法

ドロップダウンメニューをHTML+CSSだけで作る方法メニュー項目の上にマウスポインタを載せるとサブメニューが下方向や横方向に展開するメニューのことを「ドロップダウンメニュー」と呼びます。
マウスの動きに合わせてサブメニューを表示したり消したりしなければ実現できないので、なんとなくJavaScriptの併用が必要なように感じるんですが、実はHTML+CSSだけで作れます。JavaScriptは不要です。
そんな解説記事をAll Aboutで書きました。

ドロップダウンメニューをHTML+CSSだけで作る方法(@All Aboutホームページ作成)

「何かの上にマウスポインタが載ったときに何かを表示する」というような動作は、CSSの:hover疑似クラスを使えば実現できます。
とはいえ、「特定の要素にマウスが載った」という事実をトリガーにして、全く関係ない部分の表示に影響を与えるのをCSSで実現しようとするのはやや難しそうです。
しかし、HTMLのul要素とli要素とで作る「リスト」を使ってメニューの階層構造を作っておけば、「サブメニュー(2階層目のul要素)」は必ず「メインメニュー項目(1階層目のli要素)」の内側に含まれるわけですから、:hover疑似クラスを使うだけで簡単に実現できます。

サブメニューの表示位置を、親メニュー項目の隣にする必要がありますが、その辺はpositionプロパティなどを駆使すればあまり難しくはありません。
というわけで、ドロップダウンメニューはHTML+CSSだけで作れて、JavaScriptは不要というわけです。

詳しくは記事で解説しましたのでそちらをご覧下さい。
※10年前の記事の全面改稿なのですが、以前はJavaScriptを使う方法を解説していましたので、完全に別の記事になっています。

説明を分かりやすくしようと思って、「2階層だけのドロップダウンメニュー」と「3階層以降にも対応するドロップダウンメニュー」の2つに分けて解説しています。
しかも、ソースを1ステップずつ詳しめに解説したので、記事が全10ページ構成とずいぶん長くなってしまっているのですが。(^_^;)
でも、実際のところ、サンプルページのHTMLソースを直接眺めて頂く方が、簡単に分かるかも知れません。(^_^;;;

2017年05月
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      

他の月

--- 当サイト内を検索 ---