ジメジメする梅雨のお悩み、一挙解決! >>

共用サーバーを利用している為、Apacheを触ることが出来ない為、.htaccessファイルに以下のように記述し設定をしています。

<Files *.php>
ForceType application/x-httpd-php
</Files>

この設定では、「index」「index.php」どちらもアクセスするとPHPが動作してしまいます。
「index」は動作させて「index.php」は動作させないようにすることは可能でしょうか?

もし可能であれば、方法を教えていただけないでしょうか?
ちなみに、php.iniは触ることができます。

このQ&Aに関連する最新のQ&A

A 回答 (6件)

何度か試行錯誤しました。


結論としては、DefaultTypeを変更するのが簡単かつスマートだと思います。

* コンテントネゴシエーション(Options +Multiviews)で拡張子無しのファイルをphpスクリプトとして実行させる
foo.php がないと動作せず、foo.php でも foo でもアクセスできてしまいます。
RewriteCond(%{REQUEST_URI})で拒否する手は有りそうですが、ちょっと面倒ですね。

----- .htaccessの記述 -----
Options +Multiviews
DirectoryIndex index
MultiviewsMatch Handlers
---------------------------

Multiviewsのススメ
http://blog.fuktommy.com/1216313223

* DefaultTypeを変更して、拡張子無しのファイルをphpスクリプトとして実行させる
foo.php を foo にリネームして期待通りの結果を得られました。

----- .htaccessの記述 -----
DefaultType application/x-httpd-php
---------------------------
    • good
    • 0
この回答へのお礼

大変参考になりました。ありがとうございました。

お礼日時:2009/05/24 15:38

#2,4,5 です。


今更ですが、気になったことが。

> http://www.***.com/index?aaa=1&bbb=2​ ←動作する
> にするとPHPで書かれてることが分からないようになるかなと思いまして・・・
クエリを投げているので、動的処理が行われていることはわかります。
質問自体を覆すようですが、「PHPで書かれてることが分からないようにする」目的は何なのでしょうか?

目的がSEO対策だとしたら、mod_rewriteでクエリ自体をURLに埋め込むのが一般的かな、と思います。
    • good
    • 0

#2です。



> PHPで書かれてることが分からないようになるかなと思いまして・・・
#1さんの紹介されている mod_rewrite ではダメな理由が何かあるのでしょうか?

Google検索: php 拡張子 mod_rewrite
http://www.google.co.jp/search?q=php+%E6%8B%A1%E …

mod_rewriteは .htaccess で指定できるので、質問者さんの環境で実現可能だと思います。
    • good
    • 0

.htaccess でしたいなら これでいいんじゃないの?



RewriteEngine on
#ファイル又はディレクトリがある場合は無効にする
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
#○○○.jp/hogehoge で動かす場合
RewriteBase /hogehoge
#来るものはindexに飛ばす
RewriteRule !.(js|ico|gif|jpg|png|css)$ index.php
    • good
    • 0
この回答へのお礼

大変参考になりました。ありがとうございます。

お礼日時:2009/05/24 15:39

希望する動作が今ひとつ掴めませんが、



http://www.***.com/index



http://www.***.com/index/

と等価なので、/index/index.php にファイルを置けばいいのでは…。
/index.php にファイルを置かなければ、404 NotFound になります。

この回答への補足

例えば

http://www.***.com/index?aaa=1&bbb=2 ←動作する

http://www.***.com/index.php?aaa=1&bbb=2 ←動作しない

にするとPHPで書かれてることが分からないようになるかなと思いまして・・・

補足日時:2009/05/23 16:41
    • good
    • 0

>> 「index.php」は動作させないようにすることは可能でしょうか?



いろいろな方法が考えられますが、
案1.不要なファイル(今回はindex.php)を削除する。もっとも確実でサーバーにも負荷にならない方法です。

案2..htaxxessで制限する
<Files ~ "\.php$">
deny from all
</Files>

案3.rewriteでエラーページに誘導する

など

この回答への補足

mpxさん、説明不足ですみませんでした。
index.phpにはphpプログラムを記述しています。

ブラウザのアドレスで
http://www.***.com/index にアクセスでPHPを動作させる。
http://www.***.com/index.php にアクセスはページが無いみたいに

出来ないのかなぁと思いまして・・・

補足日時:2009/05/23 16:15
    • good
    • 0
この回答へのお礼

大変参考になりました。ありがとうございます。

お礼日時:2009/05/24 15:39

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qapacheで拡張子を省略してアクセスする記述

Lampp環境にあるサーバ上で
.phpの拡張子なしでアクセスするには
httpd.confのどの部分をどのように記述すればよいでしょうか?
よろしくお願いいたします。

Aベストアンサー

httpd.confで該当スクリプトを置くディレクトリに対し Options MultiViews を設定する。
具体的には以下のような感じ。

<Directory /usr/local/apache/htdocs/hoge/>
        AllowOverride all
        Options MultiViews
    </Directory>


ただ、httpd.confに設定すると実行速度的には少々不利なのだったと記憶します。
.htaccessというファイルを作成してその中に

<FilesMatch "^$">
ForceType application/x-httpd-php
</FilesMatch>

といった記述を加える方が実行速度的には速いのだったような。。。違ったかな?
ちなみに.php以外のファイルは拡張子ありでよいならhttpd.confで

DefaultType application/x-httpd-php

とすればよいだけです。
なお、xxx.phpというファイルをxxxという拡張子無しのファイルへコピーしておくことをお忘れなく。

httpd.confで該当スクリプトを置くディレクトリに対し Options MultiViews を設定する。
具体的には以下のような感じ。

<Directory /usr/local/apache/htdocs/hoge/>
        AllowOverride all
        Options MultiViews
    </Directory>


ただ、httpd.confに設定すると実行速度的には少々不利なのだったと記憶します。
.htaccessというファイルを作成してその中に

<FilesMatch "^$">
ForceType application/x-httpd-php
</FilesMatch>

といった記述を加える方が実行速度的には速いのだったような。。。違...続きを読む


人気Q&Aランキング

おすすめ情報