
Laravel/LumenをLiteSpeedで動かす
Laravel (や Lumen )を LiteSpeed 上で動かしたい。Laravel を動かすためには、 .htaccess を有効にする必要がある。
Laravel のディレクトリにある public/.htaccess は Laravel 用の Apache 設定ファイルで、Apache がこの .htaccess を読み込むことで Laravel は Apache 上で正常に動作するようになる。
無料の Open LiteSpeed で .htaccess を読めるのか
LiteSpeed は Apache の設定ファイルをそのまま流用できるのがウリだが、 .htaccess を読み込むには有料版の LiteSpeed を利用する必要がある。
下記のような記事があり、無料版の Open LiteSpeed でも .htaccess を読み込めそうだが、僕の場合この記事通りにせっていしても動かなかった。これが、LiteSpeed バージョンなどによる違いなのか、それとも単に僕の設定が間違っているのかはわからなかった。
どうしたのか
こう設定したら動いた。
rewrite {
enable 1
rules <<<END_OF_HTACCESS
RewriteEngine On
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [L,R=301]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
END_OF_HTACCESS
}
rewrite enable 1
rewriteモジュールを有効ニスルタメニ、 rewrite の中に enable 1 を書く。
rulesの中身
rules の中身がRewriteの設定だ。
RewriteEngine On
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [L,R=301]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
これは、Laravel などに入っている以下の設定のうち、mod_rewriteの中身の部分だけ持ってきたものだ。多分全体を持ってきても動くと思うが、negotiationの部分とかは多分いらないだろうから。必要最低限の部分だけ持ってきた。*1
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews -Indexes
</IfModule>
RewriteEngine On
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
設定が適用されているか確認する
http://localhost:7080 にアクセスし、
- 左のメニューから「Virtual Hosts」
- バーチャルホスト名をクリック
- 「Rewrite」のタブを選択
すると今の設定が見られる。

ここに設定が入っていなかったら、confの文法がおかしいなど、なにか問題が起こっている場合が多い。
まとめ
結局 .htaccess を読み込む方法はわからなかったが、.htaccess の中身を LiteSpeed の conf にコピペしたら動いた。
- 作者:掌田津耶乃
- 出版社/メーカー: 秀和システム
- 発売日: 2019/12/27
- メディア: 単行本
*1:動かなかった場合の特定を簡単にするため、まずはシンプルな設定で試すのは上等手段だ。