Skip to content

Instantly share code, notes, and snippets.

@Ryomasao
Last active January 20, 2021 13:22
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Ryomasao/c78868ffcd07bb6ff6a6959d1c4ccfd3 to your computer and use it in GitHub Desktop.
Save Ryomasao/c78868ffcd07bb6ff6a6959d1c4ccfd3 to your computer and use it in GitHub Desktop.
Webサーバ関連

Apache

2.2と2.4で情報が混在してるので注意。 Deny Allowとかは2.2だぞ!

https://httpd.apache.org/docs/2.4/upgrading.html

IP制限

https://httpd.apache.org/docs/2.4/howto/access.html

書き方が、ホワイトリスト方式かブラックリスト方式かを選べる。 先に許可してだめなものを書く→ブラックリスト 全部だめで一部OK→ ホワイトリスト

<RequireAll>
    Require all granted
    Require not ip 10.252.46.165
</RequireAll>

IP制限と環境変数の組み合わせ

https://qiita.com/katzueno/items/4cf15117d228dbaf2448

Basic認証

AuthUserFile /etc/httpd/conf.d/.htpasswd
AuthName "Basic Auth"
AuthType Basic
Require valid-user

Basic認証 + IP制限

https://qiita.com/katzueno/items/4cf15117d228dbaf2448

こうしてみた。

 <RequireAll>
 Basic認証の設定
  <RequireAny>
    IP制限の設定
  </RequireAny>
 </RequireAll>

毎回忘れるRewriteRule

Condとの違い

  • CondはなくてもRewriteRule単独だけでも使える。
  • Apacheが提供する環境変数とかを組み合わせたい場合、Condを使う必要があるっぽい
    <IfModule mod_rewrite.c>
      RewriteEngine On
      RewriteBase /
      RewriteRule ^foo$ https://bar/foo [R=301,L]
    </IfModule>

リダイレクトする際に、クエリパラメータを連携したい

RewriteRuleを使えば普通にいけるっぽい

記載場所

.htaccessに書くことが多いけど、confにかけるんならそっちがパフォーマンス的に優れてるってどっかで見た。

これが簡潔でわかりやすい。 https://rfs.jp/server/apache/02apache/url_rewrite.html

こんな感じに、VirtualHost配下、Directory配下のどっちにもかけるっぽい。

Rewrite機能自体のオン・オフを制御します。使いたいそれぞれのバーチャルホストに対してRewriteEngine指示子の設定が必要です。 ディレクトリごとの設定でRewrite処理を可能にするためには、RewriteEngine On に加えて、Option FollowSymLinks を可能にする必要があります。

VirtualHost *:80>
  ServerName your-domain 
  DocumentRoot /var/www/html/your-docroot/

  <Directory /var/www/html/your-docroot>
    # mod_rewriteを有効にするには、SymLinkを有効にする必要がある
    Options +FollowSymLinks
    AllowOverride all

    <IfModule mod_rewrite.c>
      RewriteEngine On
      RewriteBase /
      RewriteRule ^index\.html$ - [L]
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteRule . /index.html [L]
    </IfModule>
  </Directory>

ルール

いろいろあるんだろうけど、ひとまずVueRouterに設定例をみる。

    <IfModule mod_rewrite.c>
      RewriteEngine On
      // RewriteRuleを行うときの基準
      RewriteBase /
      // URIが /index.htmlにhitしたら、 -(何もせず) [L] ここで終わり
      RewriteRule ^index\.html$ - [L]
      // RewriteCondは、RewriteRuleを実行するための条件
      // リクエストされたURIのファイルが存在しない場合次を実行
      RewriteCond %{REQUEST_FILENAME} !-f
      // リクエストされたURIのディレクトリが存在しない場合次を実行
      RewriteCond %{REQUEST_FILENAME} !-d
      // リクエストされたURI(.) を/index.htmlに置換して [L]ここで終わりここで終わり
      RewriteRule . /index.html [L]
    </IfModule>

LPとSPAを共存させる例

    RewriteBase /
    // domainにアクセスした場合は、lpに遷移
    // domain/も、おんなじ挙動になった
    RewriteRule ^$ /lp/index.html [L]
    // それ以外は、SPAの通り
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.html [L]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment