Hi

I have the following setup in my httpd.conf inside the <Directory
"/usr/local/apache2/htdocs">:
----
    RewriteEngine on
    RewriteRule ^nonexists.php$ /target.php?nonexists
    RewriteRule ^exists.php$ /target.php?exists

    <If "%{HTTP_COOKIE} != 'pear'" >
        Header always set x-request-first-if "YES"
        <If "%{HTTP_USER_AGENT} != 'apple'" >
            Header always set x-request-second-if "YES"
        </If>
        <Else>
            Header always set x-request-second-if "NO"
        </Else>
    </If>
----

The document root has the following files:
exists.php
target.php


Requesting these URL gives the following result:
GET nonexists.php:
x-request-first-if: YES

GET exists.php:
x-request-first-if: YES

GET target.php:
x-request-first-if: YES
x-request-second-if: YES

Expected result: Nested if also gets evaluated even for rewritten requests.


It even gets a little "spookier". Added a "dummy if" on the
REDIRECT_STATUS and now its working:
----
    RewriteEngine on
    RewriteRule ^nonexists.php$ /target.php?nonexists
    RewriteRule ^exists.php$ /target.php?exists

    <If "%{ENV:REDIRECT_STATUS} == 200">
    </If>
    <If "%{HTTP_COOKIE} != 'pear'" >
        Header always set x-request-first-if "YES"
        <If "%{HTTP_USER_AGENT} != 'apple'" >
            Header always set x-request-second-if "YES"
        </If>
        <Else>
            Header always set x-request-second-if "NO"
        </Else>
    </If>
----

GET nonexists.php:
x-request-first-if: YES
x-request-second-if: YES

GET exists.php:
x-request-first-if: YES
x-request-second-if: YES

GET target.php
x-request-first-if: YES
x-request-second-if: YES


Could someone explain to me what this behavior is exactly?

I get the same behavior for FreeBSD apache 2.4.62 and the httpd:2.4.62
docker image. I could easily provide my containerized test-setup if
needed.

Thanks for your help.
- Pascal

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

Reply via email to