• ベストアンサー

php拡張子を無くす

共用サーバーを利用している為、Apacheを触ることが出来ない為、.htaccessファイルに以下のように記述し設定をしています。 <Files *.php> ForceType application/x-httpd-php </Files> この設定では、「index」「index.php」どちらもアクセスするとPHPが動作してしまいます。 「index」は動作させて「index.php」は動作させないようにすることは可能でしょうか? もし可能であれば、方法を教えていただけないでしょうか? ちなみに、php.iniは触ることができます。

質問者が選んだベストアンサー

  • ベストアンサー
  • think49
  • ベストアンサー率59% (285/482)
回答No.5

何度か試行錯誤しました。 結論としては、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 ---------------------------

noname#152201
質問者

お礼

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

その他の回答 (5)

  • think49
  • ベストアンサー率59% (285/482)
回答No.6

#2,4,5 です。 今更ですが、気になったことが。 > http://www.***.com/index?aaa=1&bbb=2​ ←動作する > にするとPHPで書かれてることが分からないようになるかなと思いまして・・・ クエリを投げているので、動的処理が行われていることはわかります。 質問自体を覆すようですが、「PHPで書かれてることが分からないようにする」目的は何なのでしょうか? 目的がSEO対策だとしたら、mod_rewriteでクエリ自体をURLに埋め込むのが一般的かな、と思います。

  • think49
  • ベストアンサー率59% (285/482)
回答No.4

#2です。 > PHPで書かれてることが分からないようになるかなと思いまして・・・ #1さんの紹介されている mod_rewrite ではダメな理由が何かあるのでしょうか? Google検索: php 拡張子 mod_rewrite http://www.google.co.jp/search?q=php+%E6%8B%A1%E5%BC%B5%E5%AD%90+mod_rewrite&lr=lang_ja&ie=utf-8&aq=t&rls=org.mozilla:ja-JP:official&client=firefox-a mod_rewriteは .htaccess で指定できるので、質問者さんの環境で実現可能だと思います。

回答No.3

.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

noname#152201
質問者

お礼

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

  • think49
  • ベストアンサー率59% (285/482)
回答No.2

希望する動作が今ひとつ掴めませんが、 http://www.***.com/index は http://www.***.com/index/ と等価なので、/index/index.php にファイルを置けばいいのでは…。 /index.php にファイルを置かなければ、404 NotFound になります。

noname#152201
質問者

補足

例えば http://www.***.com/index?aaa=1&bbb=2 ←動作する http://www.***.com/index.php?aaa=1&bbb=2 ←動作しない にするとPHPで書かれてることが分からないようになるかなと思いまして・・・

  • mpx
  • ベストアンサー率71% (149/209)
回答No.1

>> 「index.php」は動作させないようにすることは可能でしょうか? いろいろな方法が考えられますが、 案1.不要なファイル(今回はindex.php)を削除する。もっとも確実でサーバーにも負荷にならない方法です。 案2..htaxxessで制限する <Files ~ "\.php$"> deny from all </Files> 案3.rewriteでエラーページに誘導する など

noname#152201
質問者

お礼

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

noname#152201
質問者

補足

mpxさん、説明不足ですみませんでした。 index.phpにはphpプログラムを記述しています。 ブラウザのアドレスで http://www.***.com/index にアクセスでPHPを動作させる。 http://www.***.com/index.php にアクセスはページが無いみたいに 出来ないのかなぁと思いまして・・・

関連するQ&A