2.2と2.4で情報が混在してるので注意。
Deny Allow
とかは2.2だぞ!
https://httpd.apache.org/docs/2.4/upgrading.html
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
AuthUserFile /etc/httpd/conf.d/.htpasswd
AuthName "Basic Auth"
AuthType Basic
Require valid-user
https://qiita.com/katzueno/items/4cf15117d228dbaf2448
こうしてみた。
<RequireAll>
Basic認証の設定
<RequireAny>
IP制限の設定
</RequireAny>
</RequireAll>
- 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]