前回「Basic認証は大事だよ」という記事を書いていて思い出したこと。
このブログを立ち上げて間もない頃だったと思いますが、.htaccessファイルが勝手に更新されていて、自分で設定した記述がきれいさっぱり消えてしまっていることが何度かありました。
同じ事象で悩んでいる方がいるかもしれないので書いておきます。
.htaccessが書き換わってしまう原因と対処
とその前に.htaccess関連の過去記事:WordPressのログイン画面にBasic認証をかける
WordPressのパーマリンク設定で気をつけること
WordPressが自動で生成した.htaccessファイルには下記のように書かれています。
# BEGIN WordPress # END WordPressパーマリンクの設定を行うと「BEGIN」の次の行に記述が追加されます。
# BEGIN WordPressその後、Basic認証の設定のために自分で記述を追記してみたり。RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] # END WordPress
# BEGIN WordPress今後も「BEGIN」と「END」の間に書き足していけばいい、と思っていたのですが…これはベストな書き方ではないようです。RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] AuthType Basic AuthName "Input your ID and Password." AuthUserFile /var/.htpasswd Require valid-user # END WordPress
「BEGIN」と「END」の間には追記しない
なんらかのタイミング、これがいつなのかよく分からないのですが、WordPressが勝手に.htaccessを更新することがあります。すると「BEGIN」「END」間に自分で追記した記述が全て消えてしまいます。リダイレクトの設定が消えたりBasic認証が外れたり。とても困る。
でも「BEGIN」「END」の外に書いた記述は消されません。
こんな感じに書き足してしまえばOK。.htaccessでの設定は上から順に実行されるので、「BEGIN」より上に記述すると良いです。AuthType Basic AuthName "Input your ID and Password." AuthUserFile /var/.htpasswd Require valid-user # BEGIN WordPressRewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] # END WordPress
apacheに書き込み権限を与えない
勝手にファイルが書き換わることを完全に防ぎたいなら、WordPressに書き込み権限を与えないというのもアリ。自動生成された.htaccessのファイル所有者がapacheになっているのであれば、パーミッションの設定でapacheの書き込みを不可にしてしまえば問題ないです。
ただし、パーマリンクの再設定を管理画面で行ったときなど、WordPressが.htaccessを書き換える必要があるときにこの設定がされているとエラーが起こる可能性大なのでご注意。
——————–
更新頻度がどんどん下がってきてることに危機感を感じ、今月後半は怒涛の更新でした(笑)。これで5月の記事数より減る事態は避けられたぞ。
シノブさんにも月1ペースで登場してもらおうと思ってます。ネタがないと騒いでたので「数の子を噛んだときの音が自己主張激しすぎる件について」と指定しておきました(ぇ