Bug 62613

Summary: AcceptPathInfo is ignored when using type maps
Product: Apache httpd-2 Reporter: Jose Kahan <jose>
Component: mod_negotiationAssignee: Apache HTTPD Bugs Mailing List <bugs>
Status: NEW ---    
Severity: normal    
Priority: P2    
Version: 2.4.34   
Target Milestone: ---   
Hardware: PC   
OS: Linux   
Attachments: files for duplicating the issue (includes .htaccess)

Description Jose Kahan 2018-08-09 13:59:13 UTC
Created attachment 36081 [details]
files for duplicating the issue  (includes .htaccess)

Given the following structure (sent as a .zip file):

  hello.txt.var
  .htaccess
  files/hello.txt.en
  files/hello.txt.fr

with the .htaccess content as follows:
[[
AddHandler type-map .var
MultiviewsMatch any
AcceptPathInfo Off
]]

and the type map content (hello.txt.var) as follows:
[[
URI: hello.txt

Content-Language: en
Content-Type: text/plain
URI: files/hello.en.txt

Content-Language: fr
Content-Type: text/plain
URI: files/hello.fr.txt
]]

The following URLs work as expected:

GET '-H Accept-Language: en'  http://localhost/apache_test/hello.txt
GET '-H Accept-Language: fr'  http://localhost/apache_test/hello.txt
GET '-H Accept-Language: fr'  http://localhost/apache_test/hello
GET '-H Accept-Language: fr'  http://localhost/apache_test/files/hello

However, even though AcceptPathInfo is disabled, the following URLs
surprisingly also work although expected to fail:

GET '-H Accept-Language: en'  http://localhost/apache_test/hello.txt/foo
GET '-H Accept-Language: en'  http://localhost/apache_test/hello/foo
GET '-H Accept-Language: fr'  http://localhost/apache_test/hello/foo/bar
GET '-H Accept-Language: fr'  http://localhost/apache_test/hello/jose/foo/bar/mon/day/

This issue happens regardless of the value of AcceptPathInfo.

In contrast, the following one, which doesn't depend on the type map fails as
expected:

GET '-H Accept-Language: fr'  http://localhost/apache_test/files/hello/foo

It semss that somewhere in the pile, the request path info
Comment 1 Jose Kahan 2018-08-09 14:02:12 UTC
My last sentence is incomplete: it seems that somewhere during the handling of the request between multiviews and the type map either the acceptpath info config variable is not checked or the internal request structure is changed in a way that doesn't allow to detect it further on along, maybe something related to the internal redirect.