The following works fine for allowing PHP to be executed on two XML files:
<FilesMatch ^(opensearch|sitemap)\.xml$>
AddHandler application/x-httpd-php5 .xml
</FilesMatch>
However unfortunately this rule would allow this to happen in any child directory as well.
- /opensearch.xml, working/desired match
- /henchman24/opensearch.xml, working/NOT desired match
How do we force Apache to only match the files in the current directory and not child directories?
I'd really like to:
- Avoid adding a child
.htaccessfile in every possible child directory. - Avoid using an absolute server path.
Ifdirective can be used to provide a condition for the handler to be added only for files matching the pattern in the current folder.The following example will add the handler for only files in the document root, such as
/sitemap.xmland/opensearch.xmlbut not for/folder/sitemap.xmland/folder/opensearch.xmlIn the above example, the condition is checking that the
REQUEST_URImatches the regex pattern delimited inm##. The~=comparison operator checks that a string match a regular expression.The pattern
^\/(opensearch|sitemap)\.xml$matchesREQUEST_URIvariable (the path component of the requested URI) such as/opensearch.xmlor/sitemap.xml