こんにちは。
私はいわゆる昔ながらのwebデザイナーでありコーダーやってました(現在はたまにやる程度)。モダンwebと呼ばれるフロントエンド界隈にはあまり詳しくなく、これまでFTPを使ったアップロードで済んでいたような、シンプルなwebサイト制作が多かったのですが、勤務先のサーバー環境がGCP系(主にGAE Google App Engine)になったことで、いろいろ新しく覚えることが増えたので備忘録として残していきます。
##トラフィックの少ない静的サイトはGAEと相性が良いみたい
GAEには無料枠というものがあり、トラフィックの少ないサイトはGAEにデプロイすることで固定費を抑えるできることがわかったので、現在勤務先では積極的に採用していく方針となってます。無料枠に関してはこちらの記事に詳しく書かれてました。
##app.yamlのハンドラーに苦戦
適当に書いてたらエラーの嵐。GAEでhtmlのデプロイはリファレンス少なくて結構困りました。ここから試行錯誤で対応です。
###httpsに対応&リダイレクトさせる
runtime: php55
api_version: 1
service: <サービス名>
handlers:
- url: /
script: index.php
# これ↓
secure: always
こちらはドキュメントルートにアクセスした際に、index.phpを呼び出すように設定。httpsに対応させるため、secure: alwaysと記述します。こうすることで、httpにアクセスしても、自動的にhttpsへリダイレクトしてくれます。(GAEってこの一行でssl対応できるからありがたい)ただし、あくまで指定したURLしか対応しないので複数ページがあればすべて記述が必要なので注意。全部一括でhttpsにしてくれる方法あったら教えて下さい。
###末尾スラッシュなしにアクセスした際の挙動をコントロール
runtime: php55
api_version: 1
service: <サービス名>
handlers:
- url: /<サブディレクトリ名>/
static_files: <サブディレクトリ名>/index.html
upload: <サブディレクトリ名>/index.html
secure: always
- url: /<サブディレクトリ名>
script: <サブディレクトリ名>/index.php
secure: always
<?php
$dom = (empty($_SERVER['HTTPS']) ? 'http://' : 'https://') . $_SERVER['HTTP_HOST'];
?>
<!DOCTYPE html>
<html>
<head>
<title>サイトタイトル</title>
<meta charset="UTF-8">
<meta name=”robots” content=”noindex”>
<meta http-equiv="refresh" content="0 ; URL=<?php echo $dom; ?>/<サブディレクトリ名>/">
</head>
<body>
</body>
</html>
app.yamlにはスラッシュありの場合の読み込み先と、スラッシュなしの場合の読み込み先は個別に指定する必要があります。じゃないと、指定していない方にアクセスすると普通にエラーになります。ということで、スラッシュなしのURLにアクセスした際に、リダイレクト用のindex.phpを用意してそれを読み込ませることで対応させました。瞬時に切り替わるのでユーザー側に不便はないですが、おそらくやり方としては全然スマートじゃないのでもっといい方法あったら教えて下さい。
##今後の更新予定
app.yamlの書き方覚えたら追加していくのと、あとはNUXT.js使ったサイトを作ったので、そのあたりで覚えたことがあれば書いていきます。多分。