Bug 66794 - Requesting a non-existent subdirectory is not rewritten correctly.
Summary: Requesting a non-existent subdirectory is not rewritten correctly.
Status: NEW
Alias: None
Product: Apache httpd-2
Classification: Unclassified
Component: mod_rewrite (show other bugs)
Version: 2.4.53
Hardware: PC Linux
: P2 normal with 3 votes (vote)
Target Milestone: ---
Assignee: Apache HTTPD Bugs Mailing List
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2023-07-25 10:47 UTC by ABTEN
Modified: 2023-07-26 05:25 UTC (History)
0 users



Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description ABTEN 2023-07-25 10:47:31 UTC
Requesting http://www.example.net/test.html will display the contents of /var/www/html/test.html.
Requesting http://www.example.net/test2 will display the contents of /var/www/html/test.html.

When I request http://www.example.net/test/test, I get 404 Not Found instead....

-----------------------------------------------------------------------

<VirtualHost *:80>
    ServerName www.example.net
    DocumentRoot /var/www/html
    <Directory "/var/www/html">
        AllowOverride All
        Require all granted
        Options -Indexes +FollowSymLinks
    </Directory>
</VirtualHost>

/var/www/html/.htaccess
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^test\.html$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /test.html [L]
</IfModule>

# httpd -M | grep rewrite
 rewrite_module (shared)

-----------------------------------------------------------------------
5.14.0-284.18.1.el9_2.x86_64
Server version: Apache/2.4.53 (AlmaLinux)
Server built:   Apr 28 2023 00:00:00
Installed Packages
Name         : httpd
Version      : 2.4.53
Release      : 11.el9_2.5
Architecture : x86_64
Size         : 59 k
Source       : httpd-2.4.53-11.el9_2.5.src.rpm
Repository   : @System
From repo    : appstream
Summary      : Apache HTTP Server
URL          : https://httpd.apache.org/
Comment 1 Eric Covener 2023-07-25 12:39:29 UTC
Can you show rewrite:trace8 logging?
Comment 2 ABTEN 2023-07-25 13:58:48 UTC
[Tue Jul 25 22:41:09.079795 2023] [ssl:debug] [pid 2252903:tid 2253086] ssl_engine_kernel.c(415): [client XXX.XXX.XXX.XXX:62814] AH02034: Initial (No.1) HTTPS request received for child 128 (server www.example.net:443)
[Tue Jul 25 22:41:09.080134 2023] [authz_core:debug] [pid 2252903:tid 2253086] mod_authz_core.c(815): [client XXX.XXX.XXX.XXX:62814] AH01626: authorization result of Require all granted: granted
[Tue Jul 25 22:41:09.080143 2023] [authz_core:debug] [pid 2252903:tid 2253086] mod_authz_core.c(815): [client XXX.XXX.XXX.XXX:62814] AH01626: authorization result of <RequireAny>: granted
[Tue Jul 25 22:41:09.080222 2023] [rewrite:trace3] [pid 2252903:tid 2253086] mod_rewrite.c(493): [client XXX.XXX.XXX.XXX:62814] XXX.XXX.XXX.XXX - - [www.example.net/sid#5568d2ede700][rid#7f2960051630/initial] [perdir /var/www/html/] strip per-dir prefix: /var/www/html/test.html -> test.html
[Tue Jul 25 22:41:09.080237 2023] [rewrite:trace3] [pid 2252903:tid 2253086] mod_rewrite.c(493): [client XXX.XXX.XXX.XXX:62814] XXX.XXX.XXX.XXX - - [www.example.net/sid#5568d2ede700][rid#7f2960051630/initial] [perdir /var/www/html/] applying pattern '^test\\.html$' to uri 'test.html'
[Tue Jul 25 22:41:09.080243 2023] [rewrite:trace1] [pid 2252903:tid 2253086] mod_rewrite.c(493): [client XXX.XXX.XXX.XXX:62814] XXX.XXX.XXX.XXX - - [www.example.net/sid#5568d2ede700][rid#7f2960051630/initial] [perdir /var/www/html/] pass through /var/www/html/test.html

==> /var/log/httpd/ssl_access_log <==
XXX.XXX.XXX.XXX - - [25/Jul/2023:22:41:09 +0900] "GET /test.html HTTP/1.1" 304 -

==> /var/log/httpd/ssl_request_log <==
[25/Jul/2023:22:41:09 +0900] XXX.XXX.XXX.XXX TLSv1.2 ECDHE-RSA-AES256-GCM-SHA384 "GET /test.html HTTP/1.1" -

==> /var/log/httpd/ssl_error_log <==
[Tue Jul 25 22:41:13.622317 2023] [ssl:debug] [pid 2252903:tid 2253088] ssl_engine_kernel.c(415): [client XXX.XXX.XXX.XXX:62814] AH02034: Subsequent (No.2) HTTPS request received for child 130 (server www.example.net:443)
[Tue Jul 25 22:41:13.622536 2023] [authz_core:debug] [pid 2252903:tid 2253088] mod_authz_core.c(815): [client XXX.XXX.XXX.XXX:62814] AH01626: authorization result of Require all granted: granted
[Tue Jul 25 22:41:13.622559 2023] [authz_core:debug] [pid 2252903:tid 2253088] mod_authz_core.c(815): [client XXX.XXX.XXX.XXX:62814] AH01626: authorization result of <RequireAny>: granted
[Tue Jul 25 22:41:13.622604 2023] [rewrite:trace3] [pid 2252903:tid 2253088] mod_rewrite.c(493): [client XXX.XXX.XXX.XXX:62814] XXX.XXX.XXX.XXX - - [www.example.net/sid#5568d2ede700][rid#7f2960057660/initial] [perdir /var/www/html/] strip per-dir prefix: /var/www/html/test2.html -> test2.html
[Tue Jul 25 22:41:13.622613 2023] [rewrite:trace3] [pid 2252903:tid 2253088] mod_rewrite.c(493): [client XXX.XXX.XXX.XXX:62814] XXX.XXX.XXX.XXX - - [www.example.net/sid#5568d2ede700][rid#7f2960057660/initial] [perdir /var/www/html/] applying pattern '^test\\.html$' to uri 'test2.html'
[Tue Jul 25 22:41:13.622620 2023] [rewrite:trace3] [pid 2252903:tid 2253088] mod_rewrite.c(493): [client XXX.XXX.XXX.XXX:62814] XXX.XXX.XXX.XXX - - [www.example.net/sid#5568d2ede700][rid#7f2960057660/initial] [perdir /var/www/html/] strip per-dir prefix: /var/www/html/test2.html -> test2.html
[Tue Jul 25 22:41:13.622624 2023] [rewrite:trace3] [pid 2252903:tid 2253088] mod_rewrite.c(493): [client XXX.XXX.XXX.XXX:62814] XXX.XXX.XXX.XXX - - [www.example.net/sid#5568d2ede700][rid#7f2960057660/initial] [perdir /var/www/html/] applying pattern '.' to uri 'test2.html'
[Tue Jul 25 22:41:13.622634 2023] [rewrite:trace4] [pid 2252903:tid 2253088] mod_rewrite.c(493): [client XXX.XXX.XXX.XXX:62814] XXX.XXX.XXX.XXX - - [www.example.net/sid#5568d2ede700][rid#7f2960057660/initial] [perdir /var/www/html/] RewriteCond: input='/var/www/html/test2.html' pattern='!-f' => matched
[Tue Jul 25 22:41:13.622649 2023] [rewrite:trace4] [pid 2252903:tid 2253088] mod_rewrite.c(493): [client XXX.XXX.XXX.XXX:62814] XXX.XXX.XXX.XXX - - [www.example.net/sid#5568d2ede700][rid#7f2960057660/initial] [perdir /var/www/html/] RewriteCond: input='/var/www/html/test2.html' pattern='!-d' => matched
[Tue Jul 25 22:41:13.622657 2023] [rewrite:trace2] [pid 2252903:tid 2253088] mod_rewrite.c(493): [client XXX.XXX.XXX.XXX:62814] XXX.XXX.XXX.XXX - - [www.example.net/sid#5568d2ede700][rid#7f2960057660/initial] [perdir /var/www/html/] rewrite 'test2.html' -> '/test.html'
[Tue Jul 25 22:41:13.622665 2023] [rewrite:trace2] [pid 2252903:tid 2253088] mod_rewrite.c(493): [client XXX.XXX.XXX.XXX:62814] XXX.XXX.XXX.XXX - - [www.example.net/sid#5568d2ede700][rid#7f2960057660/initial] [perdir /var/www/html/] trying to replace prefix /var/www/html/ with /
[Tue Jul 25 22:41:13.622673 2023] [rewrite:trace2] [pid 2252903:tid 2253088] mod_rewrite.c(493): [client XXX.XXX.XXX.XXX:62814] XXX.XXX.XXX.XXX - - [www.example.net/sid#5568d2ede700][rid#7f2960057660/initial] [perdir /var/www/html/] trying to replace context docroot /var/www/html with context prefix
[Tue Jul 25 22:41:13.622680 2023] [rewrite:trace1] [pid 2252903:tid 2253088] mod_rewrite.c(493): [client XXX.XXX.XXX.XXX:62814] XXX.XXX.XXX.XXX - - [www.example.net/sid#5568d2ede700][rid#7f2960057660/initial] [perdir /var/www/html/] internal redirect with /test.html [INTERNAL REDIRECT]
[Tue Jul 25 22:41:13.622746 2023] [rewrite:trace3] [pid 2252903:tid 2253088] mod_rewrite.c(493): [client XXX.XXX.XXX.XXX:62814] XXX.XXX.XXX.XXX - - [www.example.net/sid#5568d2ede700][rid#7f2960051cd0/initial/redir#1] [perdir /var/www/html/] strip per-dir prefix: /var/www/html/test.html -> test.html
[Tue Jul 25 22:41:13.622752 2023] [rewrite:trace3] [pid 2252903:tid 2253088] mod_rewrite.c(493): [client XXX.XXX.XXX.XXX:62814] XXX.XXX.XXX.XXX - - [www.example.net/sid#5568d2ede700][rid#7f2960051cd0/initial/redir#1] [perdir /var/www/html/] applying pattern '^test\\.html$' to uri 'test.html'
[Tue Jul 25 22:41:13.622758 2023] [rewrite:trace1] [pid 2252903:tid 2253088] mod_rewrite.c(493): [client XXX.XXX.XXX.XXX:62814] XXX.XXX.XXX.XXX - - [www.example.net/sid#5568d2ede700][rid#7f2960051cd0/initial/redir#1] [perdir /var/www/html/] pass through /var/www/html/test.html

==> /var/log/httpd/ssl_access_log <==
XXX.XXX.XXX.XXX - - [25/Jul/2023:22:41:13 +0900] "GET /test2.html HTTP/1.1" 304 -

==> /var/log/httpd/ssl_request_log <==
[25/Jul/2023:22:41:13 +0900] XXX.XXX.XXX.XXX TLSv1.2 ECDHE-RSA-AES256-GCM-SHA384 "GET /test2.html HTTP/1.1" -

==> /var/log/httpd/ssl_error_log <==
[Tue Jul 25 22:41:18.628447 2023] [ssl:debug] [pid 2252903:tid 2253089] ssl_engine_io.c(1151): [client XXX.XXX.XXX.XXX:62814] AH02001: Connection closed to child 131 with standard shutdown (server www.example.net:443)
[Tue Jul 25 22:41:20.992047 2023] [ssl:debug] [pid 2252903:tid 2253087] ssl_engine_kernel.c(415): [client XXX.XXX.XXX.XXX:60566] AH02034: Initial (No.1) HTTPS request received for child 129 (server www.example.net:443)
[Tue Jul 25 22:41:20.992258 2023] [authz_core:debug] [pid 2252903:tid 2253087] mod_authz_core.c(815): [client XXX.XXX.XXX.XXX:60566] AH01626: authorization result of Require all granted: granted
[Tue Jul 25 22:41:20.992278 2023] [authz_core:debug] [pid 2252903:tid 2253087] mod_authz_core.c(815): [client XXX.XXX.XXX.XXX:60566] AH01626: authorization result of <RequireAny>: granted
[Tue Jul 25 22:41:20.992342 2023] [rewrite:trace3] [pid 2252903:tid 2253087] mod_rewrite.c(493): [client XXX.XXX.XXX.XXX:60566] XXX.XXX.XXX.XXX - - [www.example.net/sid#5568d2ede700][rid#7f2950010e60/initial] [perdir /var/www/html/] add path info postfix: /var/www/html/test -> /var/www/html/test/test
[Tue Jul 25 22:41:20.992377 2023] [rewrite:trace3] [pid 2252903:tid 2253087] mod_rewrite.c(493): [client XXX.XXX.XXX.XXX:60566] XXX.XXX.XXX.XXX - - [www.example.net/sid#5568d2ede700][rid#7f2950010e60/initial] [perdir /var/www/html/] strip per-dir prefix: /var/www/html/test/test -> test/test
[Tue Jul 25 22:41:20.992385 2023] [rewrite:trace3] [pid 2252903:tid 2253087] mod_rewrite.c(493): [client XXX.XXX.XXX.XXX:60566] XXX.XXX.XXX.XXX - - [www.example.net/sid#5568d2ede700][rid#7f2950010e60/initial] [perdir /var/www/html/] applying pattern '^test\\.html$' to uri 'test/test'
[Tue Jul 25 22:41:20.992404 2023] [rewrite:trace3] [pid 2252903:tid 2253087] mod_rewrite.c(493): [client XXX.XXX.XXX.XXX:60566] XXX.XXX.XXX.XXX - - [www.example.net/sid#5568d2ede700][rid#7f2950010e60/initial] [perdir /var/www/html/] add path info postfix: /var/www/html/test -> /var/www/html/test/test
[Tue Jul 25 22:41:20.992412 2023] [rewrite:trace3] [pid 2252903:tid 2253087] mod_rewrite.c(493): [client XXX.XXX.XXX.XXX:60566] XXX.XXX.XXX.XXX - - [www.example.net/sid#5568d2ede700][rid#7f2950010e60/initial] [perdir /var/www/html/] strip per-dir prefix: /var/www/html/test/test -> test/test
[Tue Jul 25 22:41:20.992419 2023] [rewrite:trace3] [pid 2252903:tid 2253087] mod_rewrite.c(493): [client XXX.XXX.XXX.XXX:60566] XXX.XXX.XXX.XXX - - [www.example.net/sid#5568d2ede700][rid#7f2950010e60/initial] [perdir /var/www/html/] applying pattern '.' to uri 'test/test'
[Tue Jul 25 22:41:20.992434 2023] [rewrite:trace4] [pid 2252903:tid 2253087] mod_rewrite.c(493): [client XXX.XXX.XXX.XXX:60566] XXX.XXX.XXX.XXX - - [www.example.net/sid#5568d2ede700][rid#7f2950010e60/initial] [perdir /var/www/html/] RewriteCond: input='/var/www/html/test' pattern='!-f' => matched
[Tue Jul 25 22:41:20.992444 2023] [rewrite:trace4] [pid 2252903:tid 2253087] mod_rewrite.c(493): [client XXX.XXX.XXX.XXX:60566] XXX.XXX.XXX.XXX - - [www.example.net/sid#5568d2ede700][rid#7f2950010e60/initial] [perdir /var/www/html/] RewriteCond: input='/var/www/html/test' pattern='!-d' => matched
[Tue Jul 25 22:41:20.992456 2023] [rewrite:trace2] [pid 2252903:tid 2253087] mod_rewrite.c(493): [client XXX.XXX.XXX.XXX:60566] XXX.XXX.XXX.XXX - - [www.example.net/sid#5568d2ede700][rid#7f2950010e60/initial] [perdir /var/www/html/] rewrite 'test/test' -> '/test.html'
[Tue Jul 25 22:41:20.992465 2023] [rewrite:trace2] [pid 2252903:tid 2253087] mod_rewrite.c(493): [client XXX.XXX.XXX.XXX:60566] XXX.XXX.XXX.XXX - - [www.example.net/sid#5568d2ede700][rid#7f2950010e60/initial] [perdir /var/www/html/] trying to replace prefix /var/www/html/ with /
[Tue Jul 25 22:41:20.992473 2023] [rewrite:trace2] [pid 2252903:tid 2253087] mod_rewrite.c(493): [client XXX.XXX.XXX.XXX:60566] XXX.XXX.XXX.XXX - - [www.example.net/sid#5568d2ede700][rid#7f2950010e60/initial] [perdir /var/www/html/] trying to replace context docroot /var/www/html with context prefix
[Tue Jul 25 22:41:20.992480 2023] [rewrite:trace1] [pid 2252903:tid 2253087] mod_rewrite.c(493): [client XXX.XXX.XXX.XXX:60566] XXX.XXX.XXX.XXX - - [www.example.net/sid#5568d2ede700][rid#7f2950010e60/initial] [perdir /var/www/html/] internal redirect with /test.html [INTERNAL REDIRECT]
[Tue Jul 25 22:41:20.992512 2023] [headers:debug] [pid 2252903:tid 2253087] mod_headers.c(890): AH01503: headers: ap_headers_error_filter()
Comment 3 ABTEN 2023-07-25 14:37:01 UTC
==> /var/log/httpd/ssl_access_log <==
XXX.XXX.XXX.XXX - - [25/Jul/2023:22:41:20 +0900] "GET /test/test HTTP/1.1" 404 196