Apache does not generate a 404

2020-05-01 05:32发布

问题:

if I have /faq.php on the server it can also be accessed via /faq.php/nonexistant.gif why? I have made sure MultiViews are disabled. Why does the contents of /faq.php get shown when I access the URI /faq.php/randomstuff.gif? FYI, I have no htaccess file in the same directory.

回答1:

That is called path_info. You can disable it using AcceptPathInfo Off in the apache config. People generally use it as a fake mod rewrite when mod rewrite is not availalble.

http://httpd.apache.org/docs/2.2/mod/core.html#acceptpathinfo



回答2:

/nonexistant.gif will be HTTP "PATH_INFO": http://www.ietf.org/rfc/rfc3875, section 4.1.5

Basically, the webserver will scan "down" a url until it hits an actual file. Anything after that file in the url becomes PATH_INFO.

http://example.com/some/path/leading/to/realfile.php/extra/stuff/that/becomes/path/info
                   ^^^^^^^^^^^^^^^^^^^^--- real directories
                                        ^^^^^^^^^^^^--actual file, scanning stops here
                                                    ^^-----onwards = path_info