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

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

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

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

.htaccess

Apacheウェブサーバーにおいて、ディレクトリ単位で設置及び設定を行う設定ファイルを指します。

Q&A

解決済

3回答

1851閲覧

htaccessを使って拡張子.phpのファイルにアクセスした時に、.phpをとってページを表示させたい。

k_tora

総合スコア17

PHP

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

.htaccess

Apacheウェブサーバーにおいて、ディレクトリ単位で設置及び設定を行う設定ファイルを指します。

0グッド

0クリップ

投稿2018/12/13 03:51

前提・実現したいこと

サイトの公開に合わせて、リダイレクトの処理をhtaccessにて行っております。
サイトはルートディレクトリにファイルがいくつかあるシンプルな構成となっており、下層ページもindexと同一階層にあります。
ファイルはphpにて作成しているのですが、クライアントの要望により、拡張子をとった形のURLにしたいとのことです。
希望例) http://〇〇○.jp/test/
※下層ページのhttp://〇〇○.jp/test.phpの場合

サーバーはGMOのレンタルサーバーでプランはSD-11です。
希望の形としては、 http://〇〇○.jp/test.phpでアクセスすると
http://〇〇○.jp/test/で表示されることです。

よくある処理だと思うのですが、うまくいきません。
ご回答よろしくお願いします。

発生している問題・エラーメッセージ

エラーは特になく、何も変わらない状態です。

該当のソースコード

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)$ $1.php

試したこと

他に
RewriteEngine On
RewriteCond %{REQUEST_FILENAME}%{PATH_INFO}.php -f
RewriteRule ^(.*)$ $1.php [NC,L]

 等ネットで検索して色々試しましたがうまくいきませんでした。

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

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

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

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

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

guest

回答3

0

サイトはルートディレクトリにファイルがいくつかあるシンプルな構成となっており、下層ページもindexと同一階層にあります。

この前提なら単純に PHP ファイルごとに

RewriteRule ^test/$ test.php [L]

みたいな設定を羅列した方がよくないですか?
将来的にディレクトリを作成する方針になったりするかもしれないですし、できれば全体に影響してしまうような設定は極力行わない方が無難だと個人的には考えます。

投稿2018/12/13 04:02

編集2018/12/13 04:04
ssasaki

総合スコア1167

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

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

k_tora

2018/12/13 04:27

ご回答ありがとうございます。 ご提案の通り、シンプルな構成で小さくまとめる方がよいと思います。 >RewriteRule ^test/$ test.php [L] この記述だけでは表示されませんでした。 根本的に作り方を変えないと無理な気がしています。 ソースありがとうございました。
ssasaki

2018/12/13 05:22

あ、記載例は適当なのでうまく動かないかもしれませんが、1URLずつ正しく設定すれば良いだけですよ。
guest

0

直接の回答ではありませんし、もしかしたら大きく作り直すことになるかもしれません。

よくある「.php拡張子を出さない」はフレームワークやCMSでよく採用されていますが、
仕組みとしては hogehoge.php → hogehoge/ ではなく、index.phpに全てのアクセスを集めて
URLを分解してその内容により表示するページ(使う機能)を振り分けています。

つまり、流れはこう

/testとアクセスがきた ↓ index.phpでいったん受け取りURL解析 ↓ testというパラメータだ ↓ testの機能へ

ざっくりこんな感じ。

teratailのこの質問のURLとかを見てみると良いですね。

/questions/163720 とアクセスがきた ↓ index.phpでいったん受け取りURL解析 ↓ questions と 163720 というパラメータだ ↓ questionsの機能へ163720という情報(質問IDと思います)を渡す

この「index.php にすべてのアクセスを集める」も.htaccessで可能ですが
結構やりつくされたやり方なので調べればすぐに出てきます。(書き方は1つではないですが)

参考まで。

投稿2018/12/13 04:02

m.ts10806

総合スコア80850

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

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

k_tora

2018/12/13 04:10

ご回答ありがとうございます。 このような仕組みを恥かしながら初めてしりました。 今回のサイトはほぼ静的なサイトですので、indexにアクセスを集めるというのは少々大げさかもしれません。 後学の為に調べてみます。 ご指摘ありがとうございました。
m.ts10806

2018/12/13 04:15

まあ、index.phpにすべて集めた上で testというパラメータだ ↓ test.php をinclude とすれば現在の作りから変更は少ないかなと思いました。 htaccessとindex.phpの変更だけで済むので。
guest

0

ベストアンサー

まず、リダイレクトで[/test.php]を[/test/]にしたとしても、[/test/]でアクセスした時に正常にページが表示できる環境になっていなければ表示出来ませんが、そちらは問題ないですか?

次に、ご提示のリダイレクト設定だと、「+++.php」で来たら「+++.php」にリダイレクトせよ!みたいになってるので、全く意味がないです。

RewriteRule ^(.*)$ $1/

投稿2018/12/13 03:56

kunai

総合スコア5405

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

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

k_tora

2018/12/13 04:04

ご回答ありがとうございます。 >まず、リダイレクトで[/test.php]を[/test/]にしたとしても、[/test/]でアクセスした時に >正常にページが表示できる環境になっていなければ表示出来ませんが、そちらは問題ないですか? はい。サーバーにtest.phpはアップされております。 >次に、ご提示のリダイレクト設定だと、「+++.php」で来たら「+++.php」にリダイレクトせよ! >みたいになってるので、全く意味がないです。 すみません。勉強不足で気づいておりませんでした。 添付のコードは RewriteRule ^(.*)$ $1.php ↓ RewriteRule ^(.*)$ $1/ に変更したらどうかということでしょうか。
kunai

2018/12/13 04:12

>サーバーにtest.phpはアップされております。 いや、test.phpが存在するか、ではなく、/test/でアクセスした時にtest.phpが実行されるか、ということです。
k_tora

2018/12/13 04:16

>いや、test.phpが存在するか、ではなく、/test/でアクセスした時にtest.phpが実行されるか、ということです。 すみません。確認したところ、 表示されませんでした。404になります。
kunai

2018/12/13 04:19

ですよね。 リダイレクトと言うのは表示されるURLを書き換えるだけでなく、実際にそのURLで再度アクセスされる形になる為、まずもって/test/でアクセス出来なければ実現は不可能です。 「よくある処理」なのは、フレームワークではよく行われている形であるということで、コレをいちいち実装するのは結構面倒だと思います。
k_tora

2018/12/13 04:30

すみません。ようやく気づきました。 色々と調べていまして、わかりました。 ディレクトリを作成してファイル名をindexにリネームするやり方で切り抜けたいと思います。 折をみてきちんと自身でも勉強します。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問