スポンサードリンク
久しぶりにOpenPNEインストールしようと思ったら最近のOpenPNEは3.8からスマホ対応してきてるんですね・・・
それはともかくOpenPNEではApacheのrewriteを使っています。あの黒魔術とも言われるあれです。
しかし僕は数カ月前くらいにwebサーバーをnginxに移行させてしまっていたので困りました・・・
そこでOpenPNEの.htaccessのrewrite設定をnginx用のrewrite設定に移植しましてみましたが・・・3時間くらいかかった(´Д`)
日本語情報が意外となくて英語と格闘したり目的の情報にピタッとくる記事が見つからなかったり・・・ググり力身につけないと(^_^;)
ともかくもとのapacheのrewrite設定がこれ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<IfModule mod_rewrite.c> RewriteEngine On # uncomment the following line, if you are having trouble # getting no_script_name to work #RewriteBase / # we skip all files with .something #RewriteCond %{REQUEST_URI} \..+$ #RewriteCond %{REQUEST_URI} !\.html$ #RewriteRule .* - [L] # we check if the .html version is here (caching) RewriteRule ^$ index.html [QSA] RewriteRule ^([^.]+)$ $1.html [QSA] RewriteCond %{REQUEST_FILENAME} !-f # no, so we redirect to our front web controller RewriteRule ^(.*)$ index.php [QSA,L] </IfModule> |
でnginx用に作ってみたのがこれ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
location / { # we skip all files with .something #set $check "C"; #if ($request_filename ~ \..+$) { # set $check "A"; #} #if ($request_filename !~ \.html$) { # set $check "${check}B"; #} #if ($check = "AB"){ # rewrite .* - last; #} # we check if the .html version is here (caching) if (-f "${document_root}/index.html") { rewrite ^/$ /index.html last; } if (-f $request_filename.html){ rewrite ^/([^.]+)$ /$1.html last; } if ($request_filename ~ \.php) { rewrite ^/(.+\.php)/ /$1 last; } if (!-f $request_filename){ rewrite ^/(.*)$ /index.php last; } } |
一応動きましたが・・・間違ってるかもしれないので間違ってたら教えてください。
RewriteBaseが/じゃない場合はlocation /と”${document_root}/index.html”あたりを書き換えたらいいかと
スポンサードリンク