人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

XAMPPで動作しているApacheについて教えてください。
WEBブラウザでlocal上のphpファイルにアクセスする時、拡張子のないURLにしたいのです。
たとえば"http://localhost/test.php?X=1"であるべきURLを"http://localhost/test?X=1"で表示するようにしたいのです。
この時の定石である.httaccessファイルに次の記述をしてもうまくいかなかったので質問いたしました。
"AddType application/x-httpd-php .php .html"←実際には改行を入れてあります。

環境は、Mac OS X(10.6.1)インストールしたXAMPP(1.7.2a)上のapacheです。
ご存じの方、よろしくご教授をお願いいたします。

●質問者: kka
●カテゴリ:インターネット ウェブ制作
✍キーワード:Apache application HTML httpd Mac OS X
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● easygoings
●15ポイント

拡張子を設定しても、ご希望の動作にはなりません。

http://localhost/testは、htmlファイルではななく、

testというディレクトリに対するアクセスとみなされますから。

ご希望の動作にするには、URLの書き換えが必要です。

http://webtech.akijapan.com/htaccess/rewrite.phtml

などを参考にしていただいて、mod_rewriteを有効にした上で、

.htaccessに以下のように記載すればよいかと。

<IfModule mod_rewrite.c>

RewriteEngine On

RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^test /test.php?%{QUERY_STRING} [L]

</IfModule>

【解説】

http://localhost/testにきたアクセスを、

getのパラメータをそのまま引き継いで

http://localhost/test.phpに移します。

つまり、以下左側のURLへアクセスすると、実際は、右側へのアクセスとみなされます。

http://localhost/test => http://localhost/test.php

http://localhost/test?X=1 => http://localhost/test.php?X=1

http://localhost/test?abc=1&def=2 => http://localhost/test.php?abc=1&def=2

になります。(URLはリダイレクトされません。)

動作の確認をしたければ、.htaccessの[L]の部分を[L,R]に書き換えれば

リダイレクトされますので、URLを見れば、どのように書き換えられたか

わかります。

ご参考になれば。

◎質問者からの返答

丁寧な解説ありがとうございます。

教えていただいたソースを.httaccessに書いてみたのですが状況はかわりせんでした。

別回答者kn1967さんの回答は機能したので、"mod_rewrite"は動作しているはずなのですが。

とりあえず問題は解決されたので、締め切りといたします m(_ _)m


2 ● kn1967
●55ポイント ベストアンサー

【1】ファイルの拡張子

(1).php

xamppのデフォルト設定で拡張子phpは使えるようになっているので不要。

(2).html

拡張子htmlのファイルもphpとして認識させたいのであれば下記だけが必要。

AddType application/x-httpd-php .html


【2】拡張子無しのアドレスの取り扱い

(1)パターンに当てはまれば転送する方法例 - Rewrite

RewriteEngine on
RewriteRule ^([a-zA-Z0-9]+)$ $1.php [QSA,L]

(2)拡張子がなければ強引にphpに結びつける方法例 - コンテントネゴシエーション

Options MultiViews
AddType text/html .php 

応用の広さから(1)を覚えておくと利用範囲が広がっていいと思うし、

レンタルサーバで使える場合も多いので(1)のみの回答ばかりしてきたのだけど、

公開サーバではなく個人的に使うサーバなら(2)が楽かな・・・。

◎質問者からの返答

見やすい解説ありがとうございます。

【2】の(1)の記述で、希望通りの動作をいたしました!

ちなみに

【2】の(2)の方法だとファイルは見つけたのですが、txtファイルとしてソースをそのまま表示するような状態が発生しました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ