引き続きhttpd.confとか.htaccessで悩む

  • 投稿日:
  • by
  • カテゴリ:

GoogleのSearch Consoleは
「サーバで301リダイレクトせよ」と仰る。

ところが、.htaccessが効かない。
前記事のように、アクセス制限をssl-example-com-vhost.confに書いてる。このため、.htaccess を使い込んでいなかったのだ。※/home/www/data/以下で、.htaccessとか.htpasswordって見づらくて嫌だなぁ、というのが感じ。"sudo su"したり"su -"は何ら抵抗が無い。

さて、本題に戻る。Google先生に「.htaccessが効かない」と訊くと、「"AllowOverride None"になってるだろう、"AllowOverride All"にしなさい」と仰る。

そこで、.htaccess の301リダイレクトの呪文

Redirect permanent / https://www.sub.h-sol.jp/

と書いてみたが、リダイレクトされない。

httpd.confに、"Requre all granted"としてるから、.htaccessに影響してるのかしらと、"Require all denied"としてみると、403エラーとなって、該当ページにアクセスできなくなってしまった。どうも Requireでは解決でき無さそうだ。

.htaccess が上流のディレクトリで"AllowOverride None"宣言されているかと考え、.htacccess に適当な文字列を入れると、Internal Server Error (500) が出た。うん、これは".htaccess"の書き方の問題と確信。

そもそも、Redirectの動作をするには、URLの書き換え処理、Apacheのmod_rewriteが有効になっていないのではと、疑いを持った。

ssl-example-com-vhost.conf に mod_rewrite を読み込むようにしたが、状況は変わらず。

正解は、.htaccess の先頭で、mod_rewriteを読み込めばよいという結論に達した。

<IfModule mod_rewrite.c>
RewriteEngine On
Redirect permanent / https://www.sub.h-sol.jp/

試行錯誤の結果なので、正しい作法では無いような気がするが、おいら環境ではウマく動いているので、結果オーライで、良しとする。

301-redirect.jpg

なお、Googleでは無事に301されたと認定されている。

search-console.JPG

ツッコミあれば、ご連絡ください。