リダイレクト
ブラウザからのリクエストのstatuscodeが301か302で送信された場合、Response HeaderのLocationにあるURLが再度リクエストされるようになる
サーバー内でURLを振り分けているのではなく、301or302のステータスコードとlocationをブラウザに送信し再度リクエストを送るよう要求している
※URLの末尾に/が入っていない場合、Apacheの設定で/をつけて再度リダイレクトする機能がある
■ステータスコード301と302の違い
→ 301 一度リダイレクトされると情報がdisk cacheに保存されその情報がRequestHeaderのlocalに乗る(サーバーの情報が反映されない)
Apatchのコンテキストの種類
■サーバー設定ファイル
httpd.conf srm.conf acsses.conf など
■バーチャルホスト
一つのサーバーで複数のドメインをもつ事ができる
■ディレクトリ
<directory><location><files>など
タグに囲まれた部分をセクションと呼ぶ
<Directory パス名>
設定したディレクティブはサブフォルダでも有効になる
■.htaccess
conf/apache/httpd.confにあるAllowOverrideを有効にする必要がある
各ディレクトリに配置する。配置した.htaccessは子要素でも有効で子要素に配置された.htaccessが優先される
OptionsやDirectoryIndexなどのディレクティブをhttpd.confに書かずに配置した.htaccessに書く
リクエストのたびに読み込むので処理が重くなる
ディレクティブはコンテキストによって使えるものと使えないものがある
【MAMP】Apatchのディレクティブ
■Alias
Alias パス ファイルの絶対パス
で指定する
- URLを第一引数で指定した値に置き換える
- フォルダは/で終わるように指定
- MAMP/htdocs以外のパスのファイルも指定可能
■DirectoryIndex
Directoryディレクティブの中で使用する
ディレクティブにアクセスがあった場合にどのファイルを表示するかを制御する
- ifmodule dir_moduleの項でデフォルトのファイル名が指定されている
■Options
設定されているオプションを制御
- htdocsに設定されていたoptionsを - をつけることで無効化(-Indexes)
- -や+をつけないでオプションを指定するとそのオプションのみ指定になる
■Redirect
Redirect ステータスコード アクセス元のパス リダイレクト先のパス
- ステータス301は永続的なリダイレクト、302は一時的に引っ越したことを表す(デフォルトは302)
- アクセス元のパスに前方一致したパスをリダイレクト先のパスに置換しブラウザのRequest Header locationに返す
■LogLevel
emerge、areat、crit、error、warn、notis、info、debug、
デフォルトはwarn
■ErrorLog
エラーログの出力先ファイルのパスを指定
■logformat
ログを出力する際のフォーマットを指定
CustomLogディレクティブで使用するために名前をつける
■CustomLog
ファイルの出力先パス LogFormat名
LogFormatのルールに従って出力する
■RewriteRule
RewriteEngin OnをRewriteRuleの前に呼び出す必要がある
OptionのFollowSymLinksがディレクトリで記述されている必要がある
pattern substitution [flag]
patternをsubstitutionに置き換える
flag R=code:ridirect F:403エラーを発生させる L:処理を終了。以降のRewriteRuleは実行しない。複数利用したい場合はカンマで区切る
インターナルリダイレクト:クライアント側にリダイレクトを要求せずサーバーで疑似的にリダイレクト処理をする
■
【MAMP】webの情報を保存する仕組み
三つの方法がある
- クッキー
- セッション
- DBに保存
□クッキーとは
- サーバーからsetcookie(Name, value, option)で保存
- 変数$_COOKIE[name]で呼び出せる
- response headerでブラウザに返され、以後expireの期限が切れるまで相互に送信される
パラメータ(ブラウザの開発ツールApplicationタブから確認できる)
Name:クッキーの名前
Value:クッキーの値
domain:そのクッキーが有効なドメイン
path:そのクッキーが有効なパス(そのパス以外では送受信されない)
Expires:この期限が切れたら消滅する
Secure:Httpsの通信でのみ送受信される
Httponly:trueにするとjavascriptから操作できずにセキュリティが担保される
□セッションとは
- サーバーサイドでsession_start()関数を宣言し使用する
- $_SESSION['name'] = value で値を保存(upload_tmp_dirが設定されていない場合MAMP/bin/php/sessions に保存される)
- ブラウザに↑のファイル名がvalueの値になったPHPSESSIDというクッキーが返される
- そのクッキーをもとにブラウザからサーバーのセッションを参照する
クッキーはブラウザに直接値が保持されるため改ざん可能
あまり使われずセッションIDを保持する用途でよく使われる
【MAMP】webの情報を保存する仕組み
三つの方法がある
- クッキー
- セッション
- DBに保存
□クッキーとは
- サーバーからsetcookie(Name, value, option)で保存
- 変数$_COOKIE[name]で呼び出せる
- response headerでブラウザに返され、以後expireの期限が切れるまで相互に送信される
パラメータ(ブラウザの開発ツールApplicationタブから確認できる)
Name:クッキーの名前
Value:クッキーの値
domain:そのクッキーが有効なドメイン
path:そのクッキーが有効なパス(そのパス以外では送受信されない)
Expires:この期限が切れたら消滅する
Secure:Httpsの通信でのみ送受信される
Httponly:trueにするとjavascriptから操作できずにセキュリティが担保される
□セッションとは
- サーバーサイドでsession_start()関数を宣言し使用する
- $_SESSION['name'] = value で値を保存(upload_tmp_dirが設定されていない場合MAMP/bin/php/sessions に保存される)
- ブラウザに↑のファイル名がvalueの値になったPHPSESSIDというクッキーが返される
- そのクッキーをもとにブラウザからサーバーのセッションを参照する
クッキーはブラウザに直接値が保持されるため改ざん可能
あまり使われずセッションIDを保持する用途でよく使われる