特定のXMLファイルだけをPHPとして動かして、それ以外のXMLファイルは通常のXMLファイルとして運用したいことってありませんか?
一度PHPとして動かしているXMLファイルをXMLとして再認識させるためのあれこれ
公開時はサイトにXMLファイルがsitemap.xmlだけだったので、よく見かける.htaccessのコードをサイトのルートディレクトリに設置しているだけで良かったのですが、更新を楽にするために普通のXMLファイルを「news」ディレクトリにアップしたところ、XMLファイルがPHPとして動いてしまいHTTPヘッダーがtext/htmlとなってしまう問題が出てきました。
AddType application/x-httpd-php .xml
原因がXMLファイルをPHPとして動かしていることはすぐに分かり、つたない.htaccessの知識で、
AddType application/xml .xml
のみを書いた.htaccessを問題の出ている「news」ディレクトリにアップしたのですが、相変わらずXMLファイルとして認識せずPHPとして動いていました。
調べること数十分・・・必要だったのはRemoveHandlerでした。
下記コードでちゃんと動きました。
RemoveHandler .xml AddType application/xml .xml
お恥ずかしながら、初めて知りましたRemoveHandler。
上位階層でXMLはPHPと関連付けされているので、下層で違うファイルタイプにしたい場合はRemoveHandlerしろということなんでしょう。
特定のファイルのみPHPとして動かす方法
特定の拡張子自体を指定するのではなく、特定のファイルだけをPHPとして動かせばいいと思い調べてみたところ、こっちのコードのほうがしっくりきたので載せておきます。
<Files sitemap.xml> ForceType application/x-httpd-php </Files>
今はこの.htaccessをサイトのルートディレクトリに設置しています。
sitemap.xmlというファイル名だけをPHPとして動かす設定です。
まだ知らないだけで、もっといい設定方法があるかもしれませんね。
もっと.htaccessの事調べなきゃなと痛感させられた出来事でした。