やったこと
/opt/bitnami/apps/wordpress/htdocs/.htaccessに追記
<FilesMatch "wp-login.php|wp-admin">
Order deny, allow
Deny from all
Allow from 000.000.000.000
</FilesMatch>
IP制限されず・・・
題名の通り、AWS Lightsailだと.htaccessは無効になるらしい。
解決策
- /opt/bitnami/apps/wordpress/conf/htaccess.confに追記
- 再起動
追記するコードはDirectoryタグの外
htaccess.confのデフォルト
<Directory "/opt/bitnami/apps/wordpress/htdocs/wp-content/plugins/akismet">
<IfModule !mod_authz_core.c>
Order Deny,Allow
Deny from all
</IfModule>
<IfModule mod_authz_core.c>
Require all denied
</IfModule>
<FilesMatch "^(form\.js|akismet\.js|akismet\.css)$">
<IfModule !mod_authz_core.c>
Allow from all
</IfModule>
<IfModule mod_authz_core.c>
Require all granted
</IfModule>
</FilesMatch>
<FilesMatch "^logo-full-2x\.png$">
<IfModule !mod_authz_core.c>
Allow from all
</IfModule>
<IfModule mod_authz_core.c>
Require all granted
</IfModule>
</FilesMatch>
</Directory>
ビギナーだけかもしれないけど、Directoryタグの中に追記したくなる。
でもそれだと効かないので外に記述する。
htaccess.confに追記
</Directory>
<FilesMatch "wp-login.php|wp-admin">
Order Allow,Deny
Allow from 000.000.000.000
</FilesMatch>
FilesMacthタグ内の記述が少し変わっているのは、前のコードだとsyntaxエラーになったから。
調べてみた
<FilesMatch "wp-login.php|wp-admin"> //URLにwp-login.phpとwp-adminが含まれている時
Order deny, allow //デフォルトで許可、拒否するかの選択。Order allow,denyに変更するとデフォルトで拒否になる
Deny from all //デフォルトは許可してるけど、全て拒否に変更してる
Allow from 000.000.000.000 //指定のIPのみ許可
</FilesMatch>
やってることは全く同じ。前のコードのほうが無駄があるように見える。
なぜsyntaxエラーが出たのかはUbuntuが原因かなと思います。Linuxなら大丈夫なはず。
再起動
sudo /opt/bitnami/ctlscript.sh restart apache
おまけ
FilesMatchタグ内を工夫することで、より特定したURLを指定できる。
<FilesMatch "^wp-login.php|wp-admin$">
^wp-login.php
wp-login.phpから始まる文字列を指定。 例)aaa-wp-login.phpは除外
wp-admin$
wp-adminで終わる文字列を指定。 例)wp-admin-aaaは除外
量指定子 | 説明 |
---|---|
^ | 行の先頭 |
$ | 行の末尾 |
. | あらゆる一文字 |
+ | 1回以上の繰り返し |
* | 0回以上の繰り返し |
? | 0回か、1回の繰り返し |
{ n } | n 回の繰り返し |
{ n ,} | n 回以上の繰り返し |
{n,m} | n 回から m 回の繰り返し |