質問: PHPの拡張子を隠蔽(拡張子自体を非表示)にしたいのですが、いくつか分からない点があります。WebサーバーはApacheを使用しています。 現在のディレクトリ構成は、大元となるルートフォルダ(PROJECT1)直下に直接、複数のphpファイルがあり、同じPROJECT1フォルダ直下にcssフォルダ、imageフォルダがあります。 PROJECT1フォルダー直下に.htaccessファイルを作成しました。 拡張子を省略する設定を.htaccessでできたのですが、それだと「ソースの表示」で のようにリンク部分で拡張子が表示されてしまうので、.php を .html でも動作するように設定してphpファイルの拡張子を.htmlにしました。 以下、httpd.confの設定です。 ``` AddHandler application/x-httpd-php .php .html ``` その後、html拡張子を省略する設定を.htaccessで行いました。 ``` ForceType application/x-httpd-php RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME}\.html -f RewriteRule ^(.*)$ $1.html ``` 「 localhost/PROJECT1/index 」または「 localhost/PROJECT1 」 と拡張子を省略しても正しく表示されます。(index.htmlがサイトのホーム) ここまではいいのですが... 前置きが長くなりました。 **質問(1)** のようなリンクをクリックし、別の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/ 」のようなイメージです。 以上が質問になります。読んでいただきありがとうございます。 ご回答いただければ幸いです。
回答: gsuiskさんがやりたいことをまとめるとこんな感じでしょうか。 * URLに拡張子(.php)を表示したくない * ドメイン部分のみでアクセスできるようにしたい これだけだったら単純な対応でokだと思いますよ。 > > 質問(1) > > 拡張子を非表示にするにはどうすれば良いでしょうか? > > > aタグで拡張子を書かなければいいだけ。 ``` ``` > > 質問(2) > > 「http://○○.com」のみでアクセス可能にするにはどうすれば良いでしょうか? > > > ドキュメントルートを変える。 ``` DocumentRoot "/project_path/PROJECT1" ``` もっと細かい設定をしたいならvirtualhostで出来ます。