path_infoで動的ページの静的処理をしようとしています
path_infoをつかって
xxx.php?id=123
を
xxx.php/123
や
xxx.php/123.html
などの入力で動くようにはできたのですが、.phpをはずすべく
.htaccess内の設定でうまくいきません。
ネットで出てきた方法として2つ見つかったのですが、
<FilesMatch "^xxx$">
ForceType application/x-httpd-php
</FilesMatch>
とするとファイルが見つかりませんになります
<FilesMatch "^xxx$">
AddType application/x-httpd-php
</FilesMatch>
とするとInternal Server Error(500 error)になります
これは何が悪いのでしょうか。
どこをどうすれば拡張子なしで認識するようになるのでしょうか。
.htaccessの使用はサーバーで認められていて、以前からDirectoryIndexやErrorDocumentの設定をして使用しています
PHPは4と5の両方で試しましたが、どちらでも同じ結果でした
どうかお分かりの方ご教授ください。
よろしくお願いします。
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タイプメディアの件は関係ないと思います。
この回答への補足
ありがとうございます。
本来ならお礼の欄に書くべきところでしょうが、字数制限があるのでこちらでお許しください
早速教えて頂いたページのFilesMatchの欄も読みました
http://httpd.apache.org/docs/2.0/ja/mod/core.htm …
例題のところでは"(ダブルクォーテーション)はあるのですが・・・
それはさておき、早速結果報告です
<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になります
これを付けた場合と付けていない場合の両方を試したのですが、結果はどちらも同じです
この記述の中にどこか問題でもあるのでしょうか
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$"の間にスペース。
動かない場合、エラーはそのままペーストしてください。
この回答への補足
お礼の字数制限にかかったのでこちらで続きです。
ちなみに今レンタルサーバーのサポートページを見ていましたら
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などどれも載ってませんが
何度もおつきあいありがとうございます。
<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です。
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$"とするしかないんですかね?そのへんはどう実装してるのかわかりません。
今回の設定は確認しているわけではありません、あしからず。
度重なる回答ありがとうございます。
とりあえず稼働中のものとは別で、テスト用ディレクトリを作って実行してみたのですが、認識しませんでした
どうやらfilesmatch自体が認識されていないようです
単なる記述ミスを避けるため、ご記入頂いたものをコピペしても試しましたが動きません
.htaccessは既にDirectoryIndexやErrorDocumentで動かしているので、ファイル名の記述ミスや置く場所の間違いなどはないと思います
サーバー会社にForceTypeやAddTypeなどは使えるか念のため確認もしてみましたが、使えるとのことです。
.htaccessの最初に持って行ったり、最後に持って行ったり場所も動かしてみましたが、やはり動きません
この場合何が悪いのでしょうか。
記述が問題ないとすると私の知識では見当もつかないので可能性がある場所だけでも教えて頂けないでしょうか。
No.1
- 回答日時:
<FilesMatch "^$">
ForceType application/x-httpd-php
</FilesMatch>
で動くようです。つまり"xxx"を除く。
参考URL:http://kawama.jp/archives/2005/09/php_1.html
ありがとうございます。
1つ疑問なのですが、filematchに ~$とすると全部のファイルにphpファイルの適用が施されてしまう気がするのですが、問題ないのですか?
下層ディレクトリも入れるとphp以外にもhtmlやcgi,gif,jpg,plなどなどかなりいろんな種類のファイルがあるのですが
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- MySQL PHP 画像のアップロード Qiita 2 2022/11/28 04:44
- UNIX・Linux bash のファイルの読み込み方についてご質問 3 2023/05/15 20:40
- その他(プログラミング・Web制作) .htaccessファイルの修正がこれで問題ないかどうか 1 2022/04/21 08:42
- PHP $filePath = './user_img/' . $file['name'];? 1 2022/12/10 07:29
- PHP eclipse pleiades phpのインストールについて 1 2023/02/03 17:15
- その他(メールソフト・メールサービス) Thunderbirdのメール送信ができません 1 2022/10/28 16:54
- WordPress(ワードプレス) httpからhttpsへのリダイレクト設定について 2 2022/04/17 09:49
- PHP PHP ページング データベース 1 2022/06/16 10:30
- その他(IT・Webサービス) 301リダイレクトの使い方について 7 2022/04/05 17:50
- WordPress(ワードプレス) 投稿した文書の編集ができません。 1 2022/04/23 23:15
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
シェルスクリプトからphpファイ...
-
拡張子なしのファイルを稼働さ...
-
PHPの拡張子を見せない方法
-
#!/usr/local/bin/phpはどこに...
-
別ファイルの変数を呼び出した...
-
FPDFでPDFファイルが表示されない
-
MySQLの配置が変わったため、db...
-
3つ以上の論理積は利用可能なの...
-
PHPのif文でその処理を途中で抜...
-
Subversionのリポジトリの削除
-
エンコーディングについて
-
FTPコマンドでディレクトリごと...
-
「クラス関数」「メンバ関数」...
-
onedrive にexcelファイルをア...
-
CFileDialogの最初のディレクト...
-
VBSの「MsgBox」について
-
フォントの色を変えるには?
-
PHP8を使うと、大量のWarningが...
-
php文字列中のシングルクオート...
-
バッチを用いたフォルダの自動移動
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
別ファイルの変数を呼び出した...
-
include先でのinclude元の変数...
-
シェルスクリプトからphpファイ...
-
パスワード等が記述されているp...
-
別PHPファイルに変数を渡す
-
phpinfo.phpを開くとファイルの...
-
.forwardを利用した、メールを...
-
phpのソースコードが、そのまま...
-
1行目の#! "C:\\xampp\\php\\p...
-
CGI版PHPで「basuc認証」の...
-
JpGraphがうまく設定できない?
-
拡張子なしのファイルを稼働さ...
-
ローカルでは動くがサーバーで...
-
こちらはただの直列処理ですか?
-
fputcsvで保存せず、そのまま出...
-
.phpのファイルを開けない!
-
PHP Screw が動作しません。
-
エラーundefined function sqli...
-
MySQLの配置が変わったため、db...
-
phpの開始タグ及び終了タグ外で...
おすすめ情報