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

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

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

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

Webサーバー

Webサーバーとは、HTTPリクエストに応じて、クライアントに情報を提供するシステムです。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

PHP

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

2回答

1219閲覧

PHP拡張子の隠蔽とディレクトリについて

gsuisk

総合スコア72

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

Webサーバー

Webサーバーとは、HTTPリクエストに応じて、クライアントに情報を提供するシステムです。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

PHP

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

3クリップ

投稿2017/11/04 13:23

PHPの拡張子を隠蔽(拡張子自体を非表示)にしたいのですが、いくつか分からない点があります。WebサーバーはApacheを使用しています。

現在のディレクトリ構成は、大元となるルートフォルダ(PROJECT1)直下に直接、複数のphpファイルがあり、同じPROJECT1フォルダ直下にcssフォルダ、imageフォルダがあります。

PROJECT1フォルダー直下に.htaccessファイルを作成しました。

拡張子を省略する設定を.htaccessでできたのですが、それだと「ソースの表示」で
<a href="input.php"> のようにリンク部分で拡張子が表示されてしまうので、.php
を .html でも動作するように設定してphpファイルの拡張子を.htmlにしました。

以下、httpd.confの設定です。

AddHandler application/x-httpd-php .php .html

その後、html拡張子を省略する設定を.htaccessで行いました。

<FilesMatch "^$"> ForceType application/x-httpd-php </FilesMatch> RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME}.html -f RewriteRule ^(.*)$ $1.html

「 localhost/PROJECT1/index 」または「 localhost/PROJECT1 」

と拡張子を省略しても正しく表示されます。(index.htmlがサイトのホーム)

ここまではいいのですが... 前置きが長くなりました。

質問(1)

<a href="input.html"> のようなリンクをクリックし、別のhtmlファイルにアクセスすると、URLが

「 localhost/PROJECT1/input.html 」のように拡張子が表示されてしまいます。

「 localhost/PROJECT1/input 」または「 localhost/PROJECT1/input/ 」のように
リンクしても拡張子を非表示にするにはどうすれば良いでしょうか?

質問(2)

また、URLの localhost の部分は実際はドメイン名になると思うのですが、
http://localhost/PROJECT1/index.html 」を 本番環境で
http://○○.com」のみでアクセス可能にするにはどうすれば良いでしょうか?

つまり、本番環境ではルートフォルダ(PROJECT1)を非表示にしたいです。

また全てのhtmlファイルに対してもルートフォルダを省略可能にしたいです。
http://○○.com/input/ 」のようなイメージです。

以上が質問になります。読んでいただきありがとうございます。

ご回答いただければ幸いです。

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

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

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

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

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

guest

回答2

0

ベストアンサー

gsuiskさんがやりたいことをまとめるとこんな感じでしょうか。

  • URLに拡張子(.php)を表示したくない
  • ドメイン部分のみでアクセスできるようにしたい

これだけだったら単純な対応でokだと思いますよ。

質問(1)
拡張子を非表示にするにはどうすれば良いでしょうか?

aタグで拡張子を書かなければいいだけ。

html

1<a href="input">

質問(2)
http://○○.com」のみでアクセス可能にするにはどうすれば良いでしょうか?

ドキュメントルートを変える。

DocumentRoot "/project_path/PROJECT1"

もっと細かい設定をしたいならvirtualhostで出来ます。

投稿2017/11/05 06:15

ooeok

総合スコア469

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

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

gsuisk

2017/11/06 14:12

ありがとうございます。 htmlのリンクは拡張子を書かないといけないと思い込んでいました... ドキュメントルートも設定したらできました!httpd.confで設定したのですが、これはドメインごとに設定できるのでしょうか?現在はローカル環境なのでlocalhostの一つですが、いくつかのサイトをレンタルサーバーにアップロードした場合、当然サイトごとにルートフォルダ名は異なると思います。 ドメイン名ごとにhttpd.confを設定できるのでしょうか?
ooeok

2017/11/07 16:03

ドメイン毎に設定するのがvirtualhostです。 ローカルで同じ環境で違うサイトを同時に開発してるときなんか便利ですよ。
gsuisk

2017/11/08 15:46

そうなんですね!ありがとうございました!
guest

0

「ルーター」及び「コントローラー(MVCのC)」の概念を使います。

《流れ》
0. .htaccessで、アクセスが来たらすべてのアクセスを一つのファイルに転送します。
0. アクセスされたURLの文字列から、アクセスするべきファイルを確定します(例:/hoge/ならhoge.phpなど)
0. アクセスするべきファイルを読み出します

この流れを作ります。

作り方は「パーフェクトPHP」の218ページに載っております。

創るのが面倒なら、フレームワークを使いましょう。
簡易的なサイトならばsilex、本格的なサイトならLaravelやCakePHPなどが便利です。

その他参考
http://inside.pixiv.net/entry/2015/12/13/145741

投稿2017/11/05 04:04

nnahito

総合スコア2004

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

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

gsuisk

2017/11/06 14:06

ありがとうございます。フレームワークを勉強してみようと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問