• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:拡張子なしのファイルを稼働させる.htaccessの設定)

拡張子なしのファイルを稼働させる.htaccessの設定

このQ&Aのポイント
  • 拡張子なしのファイルを.htaccessで稼働させるための設定方法を教えてください。
  • path_infoを使って動的ページの静的処理をしようとしていますが、.htaccessの設定でうまくいきません。どうすれば拡張子なしで認識するようになるのでしょうか。
  • ネットで見つかった方法として、ForceTypeとAddTypeを使用する方法がありますが、どちらもうまくいきません。原因は何でしょうか。

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

  • ベストアンサー
  • mimzy
  • ベストアンサー率33% (32/96)
回答No.4

apache2.0では正規表現の扱いが違うようです。そこで本家で確認、 http://httpd.apache.org/docs/2.0/ja/sections.html <FilesMatch>のセクションをみると"ダブルコーテーションを使ってません。 そこでこれを試してください、 <FilesMatch \.php$> ForceType application/x-httpd-php </FilesMatch> この設定を.htaccessの最後に追加する際、最終行の改行をお忘れなく、 それをわすれると同じく500 error Internal Server Errorとなります。 <FilesMatch>を記述しない限りphpは正常に動いてるんでですよね? それだとMIMEタイプメディアの件は関係ないと思います。

choei
質問者

補足

ありがとうございます。 本来ならお礼の欄に書くべきところでしょうが、字数制限があるのでこちらでお許しください 早速教えて頂いたページのFilesMatchの欄も読みました http://httpd.apache.org/docs/2.0/ja/mod/core.html#filesmatch 例題のところでは"(ダブルクォーテーション)はあるのですが・・・ それはさておき、早速結果報告です <FilesMatch>を記述してもしなくても基本的にphpは正常に稼働しています "(ダブルクォーテーション)を付けても付けなくても動作は同じでした <FilesMatch ^test$> AddType application/x-httpd-php </FilesMatch> <FilesMatch \.php$> ForceType application/x-httpd-php </FilesMatch> とするとphpだけでなく、htmlファイルなどを表示させようとしても500 error Internal Server Errorがでます。 AddType application/x-httpd-php を記述すると同一ディレクトリ内全てのファイル(試したのはphp,html,gif)が500 error Internarl Server Errorとなるようで、下層ディレクトリ内のgifファイルは正しく表示されたもののphpファイルは500 error Internal Server Errorでした が、サーバー会社曰くAddTypeは使用可能とのことです AddType application/x-httpd-php .php と後ろを追加して試したのですが、この場合404 errorになりました <FilesMatch ^test$> ForceType application/x-httpd-php </FilesMatch> <FilesMatch \.php$> ForceType application/x-httpd-php </FilesMatch> 上のようにForceTypeに書き換えてみたら404 errorになりました testをtest.phpにして表示させたら表示するのでphp側のミスはないと思います これ以外で考えられるのが.htaccessの記述ミスなどですが、改行や記述位置などに問題があるのでしょうか。 AddHandler php5-script .php DirectoryIndex index.php index.cgi index.shtml index.html index.htm index.hdml .ht ErrorDocument 404 /404.html <FilesMatch ^test$> AddType application/x-httpd-php .php </FilesMatch> <FilesMatch \.php$> ForceType application/x-httpd-php </FilesMatch> としています。 最初のAddHandler php5-script .phpはphpをバージョン5で動かすための記述で、これを抜けばバージョン4になります これを付けた場合と付けていない場合の両方を試したのですが、結果はどちらも同じです この記述の中にどこか問題でもあるのでしょうか

その他の回答 (3)

  • mimzy
  • ベストアンサー率33% (32/96)
回答No.3

<FilesMatch "^$">を使った場合動きましたか? お答えください。 下記の要領でテストしてみてください。 phpファイル名はtest.phpとする。 このファイルに拡張子なしのtestとしてアクセスするためには、 1 test.phpをtestにrenameまたはcopyしておく。 2 <FilesMatch "^test$"> AddType application/x-httpd-php </FilesMatch> しらべた結果これで動くはずです、但しApache 1.3.31 =< の場合、 このバージョン情報は不正確なのでとりあえず1.3xxなら、 2でだめだった場合<FilesMatch ~ "^test$">として試してみてください。 ~と"^test$"の間にスペース。 動かない場合、エラーはそのままペーストしてください。

choei
質問者

お礼

何度もおつきあいありがとうございます。 <FilesMatch "^$">は前回ご教授頂いた際に試しましたが動きませんでした 500 error Internal Server Error でした 次に今回ご教授頂いたtestで試す方法ですが、~を入れる形も入れない形もどちらも 500 error Internal Server Error とでました これの応用版でAddTypeではなくForceTypeも試しましたが <FilesMatch "^test$"> ForceType application/x-httpd-php </FilesMatch> の形でファイルが見つからない404Error、~を入れる形では500 error Internal Serve Errorとなりました テスト環境はphpはバージョン5、ApacheはApache 2.0.xxです。

choei
質問者

補足

お礼の字数制限にかかったのでこちらで続きです。 ちなみに今レンタルサーバーのサポートページを見ていましたら MIMEタイプメディア一覧が載っていました application/andrew-inset .ez application/mac-compactpro .cpt application/msword .doc application/octet-stream .bin .dms .lha .lzi .exe .class application/oda .oda application/pdf .pdf application/postscript .ai .eps .ps application/rtf .rtf application/smil .smi .smil application/vnd.mif .mif application/vnd.ms-powerpoint .ppt application/x-bcpio .bcpio application/x-cdlink .vcd application/x-chess-pgn .pgn application/x-cpio .cpio application/x-csh .csh application/x-director .dcr .dir .dxr application/x-dvi .dvi application/x-futuresplash .spl application/x-gtar .gtar application/x-hdf .hdf application/x-javascript .js application/x-koan .skp .skd .skt .skm application/x-latex .latex application/x-netcdf .nc .cdf application/x-sh .sh application/x-shar .shar application/x-shockwave-flash .swf application/x-stuffit .sit application/x-sv4cpio .sv4cpio application/x-sv4crc .sv4crc application/x-tar .tar application/x-tcl .tcl application/x-tex .tex application/x-texinfo .texinfo .texi application/x-troff .t .tr .roff application/x-troff-man .man application/x-troff-me .me application/x-troff-ms .ms application/x-ustar .ustar application/x-wais-source .src application/zip .zip audio/basic .au .snd audio/midi .mid .midi .kar audio/mpeg .mpga .mp2 .mp3 audio/x-aiff .aif .aiff .aifc audio/x-pn-realaudio .ram .rm audio/x-pn-realaudio-plugin .rpm audio/x-realaudio .ra audio/x-wav .wav chemical/x-pdb .pdb .xyz image/bmp .bmp image/gif .gif image/ief .ief image/tiff .tiff .tif image/x-cmu-raster .ras image/x-portable-anymap .pnm image/x-portable-bitmap .pbm image/x-portable-graymap .pgm image/x-portable-pixmap .ppm image/x-rgb .rgb image/x-xbitmap .xbm image/x-xpixmap .xpm image/x-xwindowdump .xwd model/iges .igs .iges model/mesh .msh .mesh .silo model/vrml .wrl .vrml text/css .css text/plain .asc .txt text/richtext .rtx text/rtf .rtf text/sgml .sgml .sgm text/tab-separated-values .tsv text/x-setext .etx text/xml .xml video/mpeg .mpeg .mpg .mpe video/quicktime .qt .mov video/x-msvideo .avi video/x-sgi-movie .movie x-conference/x-cooltalk .sice 今回のapplication/x-httpd-phpが見あたらないのですが、このサーバーでは利用不可ってことなのでしょうか .htmlとか.htm、.phpなどどれも載ってませんが

  • mimzy
  • ベストアンサー率33% (32/96)
回答No.2

リンクからの請負で何も考えてませんでした。ご指摘の通りリンクの設定ではすべての ファイルに適応されそうですね。それでその設定で動きましたか? 改めて<FilesMatch>をググって見ますと <FilesMatch 正規表現> </FilesMatch> となっているわけですから、 ファイル名がtest.phpで拡張子で判別するなら <FilesMatch "\.php$"> ForceType application/x-httpd-php </FilesMatch> ファイル名のtestで判別するなら <FilesMatch "^test"> ForceType application/x-httpd-php </FilesMatch> 注意:この場合testhogeというファイルがあればそれもマッチすると思う。 でうまくいきませんか? 正規表では"^"始まり"$"は終わりを意味するわけですから、試されたように"^test$"と するとそんなファイルがないということになったと思います。 では純粋にtestだけにマッチさせたい場合というと^test$が使えないわけですから、 "^test\.php$"とするしかないんですかね?そのへんはどう実装してるのかわかりません。 今回の設定は確認しているわけではありません、あしからず。

choei
質問者

お礼

度重なる回答ありがとうございます。 とりあえず稼働中のものとは別で、テスト用ディレクトリを作って実行してみたのですが、認識しませんでした どうやらfilesmatch自体が認識されていないようです 単なる記述ミスを避けるため、ご記入頂いたものをコピペしても試しましたが動きません .htaccessは既にDirectoryIndexやErrorDocumentで動かしているので、ファイル名の記述ミスや置く場所の間違いなどはないと思います サーバー会社にForceTypeやAddTypeなどは使えるか念のため確認もしてみましたが、使えるとのことです。 .htaccessの最初に持って行ったり、最後に持って行ったり場所も動かしてみましたが、やはり動きません この場合何が悪いのでしょうか。 記述が問題ないとすると私の知識では見当もつかないので可能性がある場所だけでも教えて頂けないでしょうか。

  • mimzy
  • ベストアンサー率33% (32/96)
回答No.1

<FilesMatch "^$"> ForceType application/x-httpd-php </FilesMatch> で動くようです。つまり"xxx"を除く。

参考URL:
http://kawama.jp/archives/2005/09/php_1.html
choei
質問者

お礼

ありがとうございます。 1つ疑問なのですが、filematchに ~$とすると全部のファイルにphpファイルの適用が施されてしまう気がするのですが、問題ないのですか? 下層ディレクトリも入れるとphp以外にもhtmlやcgi,gif,jpg,plなどなどかなりいろんな種類のファイルがあるのですが

関連するQ&A