【本当にただのメモ】.htaccessの設定が難しい。

本当にこれはただのメモです。

.htaccessの設定が難しい、という超個人的ブログメモです。


このウェブサイトでは、

.htaccessは

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTPS} !=on [NC]
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>

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

# END WordPress

というふうに設定しています。

しかし、これだと素人目には


RewriteEngine On

を2回実行している…意味あるのかな?(速度に影響があるんじゃないかな?)」

という風に思っていました。

そこで、

 

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} !=on [NC]
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

(このサイトではないんですが)このようにしてテストのサイトでまとめてみました。

…そうしたら、WordPressがちゃんと動くんです。

上から4行目と5行目の
RewriteCond %{HTTPS} !=on [NC]
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

の部分でSSLじゃないリンクから来た場合にhttps://にリダイレクトをかけている感じだと思っています。(多分)。まとめても動くんですね。

ちなみに、さくらインターネットのクイックインストールでワードプレスを入れた場合、WordPress5.2.2の場合は

.httpaccessは

# BEGIN SAKURA Internet Inc.
<IfModule mod_deflate.c>
SetOutputFilter DEFLATE
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/x-javascript application/javascript application/ecmascript
</IfModule>
<IfModule mod_expires.c>
ExpiresActive On
<FilesMatch "\.(css|js)$">
ExpiresDefault "access plus 1 week"
</FilesMatch>
<FilesMatch "\.(gif|jpe?g|png)$">
ExpiresDefault "access plus 1 month"
</FilesMatch>
</IfModule>
# END SAKURA Internet Inc.

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /「さくらの自分のドメイン.sakura.ne.jp/」より下層でのファイルの場所/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /「さくらの自分のドメイン.sakura.ne.jp/」より下層でのファイルの場所/index.php [L]
</IfModule>

# END WordPress

このような感じでした。

上記の

「さくらの自分のドメイン.sakura.ne.jp/」より下層でのファイルの場所

というのは、ドメイン以下でファイルを置いてあるフォルダの名前です。

さくらの自分のドメイン.sakura.ne.jp/abcd

という場所にサイトのファイルを置いた場合は「abcd」のことです。

 

「.htaccessによるアクセス制御」

https://help.sakura.ad.jp/hc/ja/articles/206054622–htaccess%E3%81%AB%E3%82%88%E3%82%8B%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E5%88%B6%E5%BE%A1

こちらにも色々書いてあります。

ちなみに.htaccessのパーミッションは共有サーバー(レンタルサーバー)の場合は604に設定するらしいです。(にも書いた)
参考:「何となくで使ってた「.htaccess」について勉強し直す」- 知らなきゃ絶対損するPCマル秘ワザ

この記事を書くために、なんだかんだで上記の「何となくで使ってた「.htaccess」について勉強し直す」の記事を改めて確認してみたところ、

■ 複数設置した場合
「.htaccess」が複数ある場合すべて有効になります。
例えば、「http://example.com/sample/」と
子である「http://example.com/sample/test/」に設置した場合
子の「http://example.com/sample/test/」では
2つの「.htaccess」両方の内容が適用されます。
両方に同じ種類の設定がある場合は子の方が優先されます。

とありました。

両方適用されるんですね。
何か解決した気がします。(勝手に解決してしまった。)

1つにまとめた方が良いかも調べてみないといけませんね。速度的な違いはあるのでしょうか。


また、さくらインターネットのクイックインストールでワードプレスを入れた場合の

<IfModule mod_deflate.c>
SetOutputFilter DEFLATE
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/x-javascript application/javascript application/ecmascript
</IfModule>
<IfModule mod_expires.c>
ExpiresActive On
<FilesMatch "\.(css|js)$">
ExpiresDefault "access plus 1 week"
</FilesMatch>
<FilesMatch "\.(gif|jpe?g|png)$">
ExpiresDefault "access plus 1 month"
</FilesMatch>
</IfModule>

ここもよく分かっていないので引き続き調べていきたいと思います。


↑の話ですが、ざっくり

IfModule mod_deflate.c

のほうはコンテンツを圧縮してサイト速度を上げる設定、

「Apacheのmod_deflateでコンテンツを圧縮してサイトを高速化する方法」
https://oxynotes.com/?p=6519

IfModule mod_expires.c

のほうは、ファイルタイプごとにキャッシュをコントロールする設定のようです。
「Apacheのmod_expiresでファイルタイプごとにキャッシュをコントロールする方法」https://oxynotes.com/?p=6024

何となく消してしまいましたがサイトは動いています。
必要そうならまた入れようと思います。

以上、超個人的メモでした。