質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

5356閲覧

ルートディレクトリにindex.phpだけを置いて、下の階層に置いたphpを読み込む方法。

takesan311

総合スコア12

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

1クリップ

投稿2017/10/08 11:00

編集2017/10/08 11:05

Webサイトの階層について。
ドメインのルートディレクトリに、たくさんのphpファイルを置いておくのがあまり綺麗でないと思いまして、
ルートにindex.phpだけを置いて、下の階層からphpを読み込む方法はないでしょうか?

サイトは英語サイトと、日本語サイトで分けているので、
以下のように役割ごとフォルダに分けて配置したいと考えています。

/public_html フォルダ (ドメインのルートディレクトリ)
--index.php - ルートに置いたindex
--_enフォルダ - 英語サイト
--_jpフォルダ - 日本語サイト
--jsフォルダ - 共通のjsスクリプト
--cssフォルダ - 共通のcss
--imgフォルダ - 共通のimg

その他 faviconやsitemapなど

メインは日本語サイトにしたいので、例えば、
http://hoge.com とURLに打ち込んだときは、_jp配下のindex.phpが表示される。
http://hoge.com/_enと打ち込んだときは、_en配下のindex.phpが表示される。
以下、
http://hoge.com/categoryとしたら、 _jp配下のcategory.php が表示される。

このような感じの設定ができたらと思っています。

サーバはnginxで動かしています。
詳しい方、よろしくお願いいたします。

ちなみに、
現在のnginx.confは、以下のようにしていて、ルートディレクトリ直下に、phpをずらずら並べています。(抜粋)

server { listen 80 default_server; listen [::]:80 default_server; server_name urbanmeetup.tokyo; root /usr/share/nginx/urbanmeetup/public_html; location / { index index.html index.php index.html; try_files $uri $uri.php $uri.html $uri/ 404.html=404; gzip_static on; if ( -f $request_filename.php ) { rewrite ^(.*)$ $1.php; } } location ~ .php$ { root /usr/share/nginx/urbanmeetup/public_html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

.phpを補完してやる方法と、URL ルーティングを使用する方法の2種類があります。
それぞれの方法を確認すれば、やりたいことにあった方法が見つかると思います。

追記
#.phpの補完
nginx の設定で対応します。
実際の設定は要件次第ですが、ざっくり以下のような流れが参考になるかと。
・与えられた URI に.phpを足す
・そのファイルが有るかどうかの確認
・あれば、php ファイルとして認識し、php ファイルとして処理
参考リンク
Module ngx_http_rewrite_module

#URLルーティングで対応
こちらは php で仕組みを作り対応します。
*nginx の設定も必要です。
・nginx に、全リクエストを index.php + パラメータとして扱うよう設定します。
(各種フレームワークの設定や WordPress の設定を参考にしてください)
・index.php でパラメータに従って必要なファイルを実行する仕組みを構築
参考リンク
PHPで高速に動作するURLルーティングを自作してみた

投稿2017/10/08 11:07

編集2017/10/09 02:35
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

takesan311

2017/10/09 01:47

ありがとうございます。 .phpの補完と URLルーティング、どちらもググってみましたが、具体的にどう設定をしたらいいか分かりませんでした。もう少し詳しく教えていただけませんか?
退会済みユーザー

退会済みユーザー

2017/10/09 02:35

追記しました。 調べればいくらでも出てくる内容なのでざっくりとです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問