Hi, I regularly use php to generate all kinds of different XML.

This is what I do -

header('Content-Type: application/xml');
print($dom->saveXML());
exit();

Of course in that case $dom is a DOMDocument object - if you are using print or echo to create XML then you need the header at the beginning of the php, as it needs to be before any content is sent.

Using php to send the header avoids the need to set it with Apache.


On 12/27/2016 10:58 PM, Binyamin wrote:
בע"ה

Hi,

As I wrote in earlier example, `Header set Content-Type
"application/xml"` still returns 1 day expiration (not the one defined
in ExpiresByType).
The same result when switching configuration order of FilesMatch
before ExpiresDefault, or order of LoadModule's expires_module and
headers_module.

Also this example will return expiration only 1 day, while expected 1 year:

    <FilesMatch ^sitemap\.php$>
        Header set Content-Type "application/xml"
        ExpiresDefault "access plus 1 year"
    </FilesMatch>

it returns

    Content-Type: application/xml
    Date: Wed, 28 Dec 2016 06:38:09 GMT
    Expires: Thu, 29 Dec 2016 06:38:09 GMT


It seems to as a Apache bug. I don't know if ever it was working.

Any workaround (configuration fix) for it for now?
Do you know if it worked right in any Apache build/version?


Binyamin


On Wed, Dec 28, 2016 at 5:29 AM, Yehuda Katz <yeh...@ymkatz.net
<mailto:yeh...@ymkatz.net>> wrote:

    It might have something to do with the order the modules handle the
    request.
    What happens if you tell PHP to set the content type to application/xml?

    - Y

    On Tue, Dec 27, 2016 at 3:55 PM, Binyamin <7rai...@inbox.lv
    <mailto:7rai...@inbox.lv>> wrote:

        בע"ה


        Why ExpiresByType is ignored when has SetHandler
        application/x-httpd-php ?

        /sitemap.xml Response Headers shows 1 day expiration while
        expected to be 1 year (1 month)

            Content-Type: application/xml; charset=utf-8
            Date:         Tue, 27 Dec 2016 19:59:00 GMT
            Expires:      Wed, 28 Dec 2016 19:59:00 GMT

        seems SetHandler forces it to apply text/html expiration and
        doesn't allow to rewrite it

            ExpiresActive On
            ExpiresDefault                "access plus 1 month"
            ExpiresByType text/html       "access plus 1 day"
            ExpiresByType application/xml "access plus 1 week"

            <FilesMatch ^sitemap\.xml$>
                SetHandler application/x-httpd-php
                Header set Content-Type "application/xml"
                ExpiresDefault "access plus 1 year"
            </FilesMatch>

        tested on Apache 2.4.X builds.

        How to fix this issue?



        Binyamin





---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@httpd.apache.org
For additional commands, e-mail: users-h...@httpd.apache.org

Reply via email to