.htaccess:XMLファイルをPHPとして動かす

.htaccess:XMLファイルをPHPとして動かす

author : koki

publish date :

特定の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の事調べなきゃなと痛感させられた出来事でした。

参考させてもらったサイト

ありがとうございます!!!