【やりたいこと】は、Nginxのrewite機能を利用して、
http://xxxxxxx.com/pro/items/1/2/2016-06-16/11/0
へのアクセスで
http://xxxxxxx.com/pro/index.php?A=1&B=2&C=2016-06-16&D=11&E=0
にrewiteし、ブラウザのアドレスバーには
http://xxxxxxx.com/pro/items/1/2/2016-06-16/11/0
と表示されている状態になることです。
/etc/nginx/sites-available/pro に以下を設定し
rewriteはできたのですが、アドレスバーは
http://xxxxxxx.com/pro/index.php?A=1&B=2&C=2016-06-16&D=11&E=0
となります。
---------------------------
location /pro/ {
root /var/www/html;
index index.php;
rewrite ^/pro/items/([0-9]+)/([0-9]+)/([^/]+)/([0-9]+)/([0-9]+) /pro/index.php?A=$1&B=$2&C=$3&D=$4&E=$5 permanent;
try_files $uri $uri/ /pro/index.php?$args;
}
---------------------------
そこで、rewriteの最後をpermanentからbreakに変更したところ、アドレスバーは
http://xxxxxxx.com/pro/items/1/2/2016-06-16/11/0
となりますが
PHP が動作せずCromeではテキストファイルがダウンロードされ、IEでは画面にプログラムが表示されてます。
【やりたいこと】ができる設定方法を詳細に教えていただけませんでしょうか?
「やりたいこと」の本質は、Curry でルーティングするためにフロントのスクリプトに処理を渡したいという事だと思いますので、それに沿って回答します。
> /etc/nginx/sites-available/pro に以下を設定し
デフォルトではそこを読むようにはなっていませんよね?
/etc/nginx/nginx.conf の設定を変更されていると思いますが、どのように変更しているかでいろいろ変わってきてしまうのはお解りですよね?
とりあえず出来るだけデフォルトから変更しない方向で書いていきます。
CentOS 6.6 でサーバを minimam で構築します。
(Nginx をインストールするために)リポジトリ EPEL を追加します。
EPEL より Nginx をインストールします。
PHP, PHP-FPM をインストールします。
/etc/nginx/default.conf の名前を変更しておきます。
default.conf -> default.conf.bak
/etc/nginx/prot.conf を作成して以下を記述します。
server { index index.php; server_name example.com; root /usr/share/nginx/html; location /pro { if (!-e $request_filename) { rewrite ^/pro/(.*) /pro/curry.php last; } } location ~ .php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; include fastcgi_params; } }
Curry を完全にインストールするのは手間が掛かりそうなので、REQUEST_URI が取得できるかだけチェックします。
/usr/share/nginx/html/pro/index.php に以下を記述します。
<?php var_dump($_SERVER['REQUEST_URI']);
/etc/php-fpm.d/www.conf の動作するユーザ、グループを nginx に変更します。
PHP-FPM, Nginx を起動します。
ブラウザで http://example.com/pro/hoge0?a=1 にアクセスすれば以下の様に表示されると思います。
string(14) "/pro/hoge0?a=1"
ドキュメントルートをデフォルト以外に設置する場合は、SELinux のポリシーを適切に設定する必要があるのをお忘れなく。
__SELinux を止めてしまう解説ページが非常に多いのはいかがなモノか
詳細にありがとうございます。これから試してみます。
2016/06/20 09:49:38別件もあります関係で少しお時間をください。
再度設定を行ったところ、うまく動きました。大変ありがとうございました。
2016/06/20 14:36:42