PHPで.htaccessを設定するとエラーになってしまいます

このQ&Aのポイント
  • PHPの初心者がXディレクトリに.htaccessを設定すると、Method Not Allowedエラーが発生します。
  • Xディレクトリに.htaccessを設定すると、POSTメソッドが許可されていないというエラーメッセージが表示されます。
  • 対処法として、PHPファイルにmetaタグやmb_internal_encodingを設定するなどの試みがありますが、うまくいかない場合は.htaccessを編集することが考えられます。
回答を見る
  • ベストアンサー

PHPで.htaccessを設定するとエラーになってしまいます。

PHPの初心者です。 Xというディレクトリにフォーム記入をするphpファイル(仮にa.php)があります。 このa.phpからpostでb.phpに値を送信して表示させています。 このときにどうしても文字化けが起こってしまうのでこのXディレクトリに.htaccessを設定して置いたところ、 Method Not Allowed The requested method POST is not allowed for the URL ~~ というエラーメッセージが出てきてしまいます。 様々なサイトで掲載されている対処法を確認し、 metaタグや、define('Charset', 'EUC-JP'); while (@ob_end_clean()); mb_http_output(Charset); mb_internal_encoding(Charset); ini_set("default_charset", Charset); ob_start('mb_output_handler'); header ("Content-Type: text/html;charset=EUC-JP"); などをPHPファイルに記入していろいろ試してもうまくいかず 結局.htaccessに行き着いたのですがエラーメッセージ…という具合です。 サーバーはレンタルでシーサイドネットの共有です。phpは使用可能です。php.iniはおそらくいじることはできません。 なぜ.htaccessでエラーになるのかわかりません。 お教え頂ければ幸いです。よろしくお願いします。

  • PHP
  • 回答数1
  • ありがとう数1

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

  • ベストアンサー
  • la_pure
  • ベストアンサー率72% (18/25)
回答No.1

こんにちわ。 えーと、多分ですが、 Method Not Allowedと文字化け問題は関係ないかと・・・ Method Not Allowed(の405エラーですよね?)調べたところ、ファイルは存在するけどPOSTができないというエラーなので。 文字化けの問題としては ○ファイル自体の文字コードが統一されていない(Smartyなどのテンプレートエンジンを使ってる場合はtemplateの文字コード統一が必要) 可能性があります。 あと.htaccessはApacheの設定で「AllowOverride」が有効になっていないと使用できません。 そのあたりも含めて一度確認してみてはいかがでしょうか?

ttt777ttt
質問者

お礼

丁寧な回答ありがとうございます。 分かりづらい質問で申し訳ございませんでした。 やはり.htaccessは使用できないようですね…。 アクセス制限などはレンタル元のコントロールパネルで設定できるのですが、初心者なのでPOSTなどで値を送ることができないということは制限されているということは知りませんでした。 関連ファイルの文字コードはすべてEUC-JPで統一しているのですがどうも上手くいきません。応急処置的に全角スペースなどを用いてどうにかなりました。 ありがとうございました。

関連するQ&A

  • PHPのParse errorについて質問

    昨日より、特に変更はしていないのに、 Parse errorとしてエラーになります。 エラーが発生するPHPは、EUC_JPで記述したもののみです。 例)php.iniで記述 mbstring.internal_encoding = SJIS と設定しており、EUCで記述したスクリプトのある ディレクトリには.htaccessで php_value mbstring.internal_encoding EUC と設定。

    • ベストアンサー
    • PHP
  • PHPの文字コード (php.iniの設定)

    php.iniを以下のように設定した場合について教えてください。 (PHPの参考書に載っていたWindows環境での設定例です) output_buffering = On output_handler = mb_output_handler default_charset = Shift_JIS extension=php_mbstring.dll mbstring.language = Japanese mbstring.internal_encoding = EUC-JP mbstring.http_input = auto mbstring.http_output = SJIS mbstring.encoding_translation = On mbstring.detect_order = auto mbstring.substitute_character = auto mbstring.script_encoding = EUC-JP 1. この設定は「PHPの記述されたファイルはEUC-JPで、 ブラウザに表示される時点でShift-JISに変換される」 ということですか? 2. PHPの参考書(PHP5対応)に、 「PHPアプリケーションを構築する場合、文字コードを Shift-JISにすると、PHPのバージョンやphp.iniの設定に よっては文字化けの原因になることがあるので、 Windows環境でもEUC-JPで保存することを強くお勧めする」 というようなことが書かれていました。 素人考えで、すべて同じ文字コード(EUC-JP)のほうが 楽なのではないかと思ったのですが、上記のように 設定するのはどういう理由からでしょうか? 3. CSSファイルやテンプレートファイル(Smarty)の 文字コードは、Shift-JISとEUC-JPのどちらで保存 すればいいのですか? 4. metaタグのcharsetはShift-JISであっていますか?

    • ベストアンサー
    • PHP
  • PHP+MySQLで携帯サイトを開発しています。

    PHP+MySQLで携帯サイトを開発しています。 文字コードはSJISが望ましいということなので、 mb_http_output('SJIS'); mb_internal_encoding('EUC-JP'); ob_start('mb_output_handler'); を入れることで出力をSJISにしたのですが、ドコモでCSSを使用するために header("Content-type:application/xhtml+xml;"); を入れたところ、文字化けしてしまいます。 場所を変えたり、charsetを入れたりしても上手く動きません。 アドバイスいただければ助かります。 よろしくお願いいたします。

    • 締切済み
    • PHP
  • FORMからの文字入力文字化け

    「.htaccess」で設定した場合、正常に動作するのですが、「自作スクリプト内」でPHP環境を設定すると文字化けします。 フリーの掲示板が「.htaccess」で設定した場合、文字化けしますので、自作スクリプトも今回からスクリプト内部からPHP環境を設定し動作確認をしています。 FORMからの文字入力だけが文字化けしてしまうのですが、解決方法が見出せずに困っています。 また、「mbstring.encoding_translation」の設定方法がわからずに設定していないため、入力文字化けするのでしょうか。 表示だけは、文字化けせずに表示されます。FORMからの入力文字だけが文字化けします。 解決方法をご存知の方がいらっしゃいましたらご教授のほど宜しくお願いします。 # .htaccessで設定する場合 php_flag output_buffering "On" php_value output_handler "mb_output_handler" php_value default_charset "Shift_JIS" php_value mbstring.language "Japanese" php_value mbstring.internal_encoding "EUC-JP" php_value mbstring.http_input "auto" php_value mbstring.http_output "SJIS" php_value mbstring.detect_order "auto" php_flag mbstring.substitute_character "none" php_flag mbstring.encoding_translation "On" # 自作スクリプト内で設定する場合 ini_set("output_buffering", "On"); ini_set("output_handler", "mb_output_handler"); ini_set("default_charset", "Shift_JIS"); mb_language("Japanese"); mb_internal_encoding ("EUC-JP"); mb_http_input("auto"); mb_http_output("SJIS"); mb_detect_order("auto"); mb_substitute_character("none"); ob_start("mb_output_handler");

    • 締切済み
    • PHP
  • .htaccessにphp_valueが使用できな

    .htaccess: Invalid command 'php_value', perhaps misspelled or defined by a module not included in the server configuration, referer: 上記のエラーが表示されます。 .htaccessに記述している内容は以下の通りです。 php_value include_path '/var/www/vhosts/ドメイン' php_value mbstring.language Japanese php_flag mbstring.encoding_translation On php_value mbstring.http_input auto php_value mbstring.internal_encoding EUC-JP php_value mbstring.script_encoding EUC-JP php_value mbstring.substitute_character none php_value を使用するにはどうすればよいでしょうか? 宜しくお願い居します。

    • ベストアンサー
    • PHP
  • php.iniのおき場所を変えたい

    php.iniのおき場所についてです。 感覚的には.htaccessのような使い方ですが、 たとえば本家のphp.iniを/etcに置いたとします。 で、別のとあるディレクトリに、もうひとつphp.iniを置いて、 そのディレクトリだけは、そこにあるphp.iniを読んでほしいということです。 やりたいことは、あるディレクトリだけmb_internal_encodingを変えたいのです。ソースをいじらずに変更したいので、上記の設定をしたいのですが、そういったことは可能でしょうか。 サーバー周りの話をソフト側で聞いてしまって申し訳ないんですが、どなたかわかるかたお願いします。

    • ベストアンサー
    • PHP
  • PHP4.3でapplication/x-javascript

    内部コードEUC-JPで、 mb_http_output('SJIS'); ob_start('mb_output_handler'); として、利用していたのですが、 PHP4.3から、header()で、text/***以外を使うと、 mt_http_outputが自動的にpassになってしまいます。 JavaScriptを動的に生成するときに、 自前のバッファ変数にためて、 変換するみたいなことをしないといけないのですが、 もうちょっと、スマートな方法あるでしょうか?

    • ベストアンサー
    • PHP
  • htaccessでの文字コード設定について

    現在[PHP4 + MySql4.0.17]を利用したWebシステムを構築しています。 携帯での閲覧にも対応するため、携帯ページの文字コードをShift_JISにしたいと思っているのですが、MySqlのデータ文字コードはEUC-JPのため、ページ表示の際に文字化けしてしまいます。 現在、携帯用ページのトップディレクトリのhtaccessにて以下の設定を記述していますが、表示される文字コードはEUC-JPのままです。 ------------------------------------------------ AddDefaultCharset SHIFT_JIS php_value mbstring.http_input "auto" php_value mbstring.http_output "SHIFT_JIS" php_value mbstring.internal_encoding "SHIFT_JIS" ------------------------------------------------- もし上記の設定に間違いなどがあれば、ご指摘いただけないでしょうか。 宜しくお願い致します。

    • ベストアンサー
    • PHP
  • .htaccessもmetaもEUC-JPなのにブラウザから自動判別されない。

    PHPで .htaccessもinternal_encoding, http_outputをEUC-JP としたし、metaタグも書いてEUC-JPとしたのに、 ブラウザから文字のエンコードが正しく自動判別されず、 Unicodeになってしまって、文字化けしてしまいます。 なぜなのでしょうか? どうしたら正しく判別されるようにできるのでしょうか? よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • postの引渡しで文字化け

    海外の投稿ソフト(掲示板のようなもの)をダウンロードして使ってみました。 マルチバイト対応で、通常の画面(php)には日本語が表示されました。 しかし、文章を書いて、それを確認する画面に移動すると、その書いた文章のみ文字化けしてしまいます。 *テキストエリアに記入した日本語のみ文字化けしてしまいます。 対策として 1、メタタグ <meta http-equiv="Content-Type" content="text/html; charset=EUC-JP" /> 2、accept-charset <form method="post" accept-charset="EUC-JP" action="・・・> 3、.htaccess php_value AddDefaultCharset EUC-JP php_flag output_buffering Off php_value default_charset EUC-JP php_value mbstring.language Japanese php_flag mbstring.encoding_translation On php_value mbstring.http_input EUC-JP php_value mbstring.http_output EUC-JP php_value mbstring.internal_encoding EUC-JP php_flag mbstring.substitute_character none php_value mbstring.detect_order EUC-JP,ASCII,JIS,UTF-8,SJIS とすべて、EUC-JPにそろえましたが、文字化けしてしまいます。 文字化けの種類から察するに、EUC-JPで書いた日本語が、確認画面では、ISO-8859-1に変えられているようです。 何が原因で、どうすればいいのか教えていただけると嬉しいです。 よろしくお願いいたします。 php は4.3.11 Apacheは 1.3.34です。

    • ベストアンサー
    • PHP