Version in base suite: 2.4.68-1~deb13u1 Base version: apache2_2.4.68-1~deb13u1 Target version: apache2_2.4.69-1~deb13u1 Base file: /srv/ftp-master.debian.org/ftp/pool/main/a/apache2/apache2_2.4.68-1~deb13u1.dsc Target file: /srv/ftp-master.debian.org/policy/pool/main/a/apache2/apache2_2.4.69-1~deb13u1.dsc /srv/release.debian.org/tmp/IjglZ5i9op/apache2-2.4.69/docs/icons/tar.gif |binary /srv/release.debian.org/tmp/IjglZ5i9op/apache2-2.4.69/docs/icons/tar.png |binary /srv/release.debian.org/tmp/IjglZ5i9op/apache2-2.4.69/docs/manual/images/rewrite_l_flag_looping.png |binary /srv/release.debian.org/tmp/IjglZ5i9op/apache2-2.4.69/docs/manual/images/rewrite_module_order.png |binary /srv/release.debian.org/tmp/IjglZ5i9op/apache2-2.4.69/docs/manual/images/rewrite_path_stripping.png |binary /srv/release.debian.org/tmp/IjglZ5i9op/apache2-2.4.69/docs/manual/images/rewrite_simplified_overview.png |binary /srv/release.debian.org/tmp/IjglZ5i9op/apache2-2.4.69/test/pytest_suite/t/htdocs/modules/data/SupportApache-small.png |binary /srv/release.debian.org/tmp/IjglZ5i9op/apache2-2.4.69/test/pytest_suite/t/htdocs/modules/deflate/apache_pb.gif |binary /srv/release.debian.org/tmp/IjglZ5i9op/apache2-2.4.69/test/pytest_suite/t/htdocs/modules/deflate/asf_logo_wide.jpg |binary /srv/release.debian.org/tmp/IjglZ5i9op/apache2-2.4.69/test/pytest_suite/t/htdocs/modules/rewrite/foo bar.html | 1 /srv/release.debian.org/tmp/IjglZ5i9op/apache2-2.4.69/test/pytest_suite/t/htdocs/modules/rewrite/numbers.dbm.db |binary apache2-2.4.69/.github/workflows/linux.yml | 60 apache2-2.4.69/.github/workflows/windows.yml | 8 apache2-2.4.69/CHANGES | 164 + apache2-2.4.69/CMakeLists.txt | 70 apache2-2.4.69/README | 16 apache2-2.4.69/README.CHANGES | 54 apache2-2.4.69/build/ltmain.sh | 325 +- apache2-2.4.69/configure | 30 apache2-2.4.69/debian/changelog | 12 apache2-2.4.69/debian/patches/fhs_compliance.patch | 2 apache2-2.4.69/docs/manual/convenience.map | 6 apache2-2.4.69/docs/manual/env.html.en | 8 apache2-2.4.69/docs/manual/env.html.fr.utf8 | 36 apache2-2.4.69/docs/manual/glossary.html.fr.utf8 | 30 apache2-2.4.69/docs/manual/howto/access.html.en | 67 apache2-2.4.69/docs/manual/howto/access.html.fr.utf8 | 87 apache2-2.4.69/docs/manual/howto/auth.html.en | 158 apache2-2.4.69/docs/manual/howto/auth.html.fr.utf8 | 189 - apache2-2.4.69/docs/manual/howto/cgi.html.en | 190 - apache2-2.4.69/docs/manual/howto/cgi.html.fr.utf8 | 179 - apache2-2.4.69/docs/manual/howto/htaccess.html.en | 121 apache2-2.4.69/docs/manual/howto/htaccess.html.fr.utf8 | 130 apache2-2.4.69/docs/manual/howto/htaccess.html.pt-br.utf8 | 2 apache2-2.4.69/docs/manual/howto/http2.html.en | 206 - apache2-2.4.69/docs/manual/howto/http2.html.fr.utf8 | 212 - apache2-2.4.69/docs/manual/howto/public_html.html.en | 62 apache2-2.4.69/docs/manual/howto/public_html.html.es | 4 apache2-2.4.69/docs/manual/howto/public_html.html.fr.utf8 | 62 apache2-2.4.69/docs/manual/howto/public_html.html.tr.utf8 | 1 apache2-2.4.69/docs/manual/howto/reverse_proxy.html.en | 184 - apache2-2.4.69/docs/manual/howto/reverse_proxy.html.fr.utf8 | 202 - apache2-2.4.69/docs/manual/howto/ssi.html.en | 557 +-- apache2-2.4.69/docs/manual/howto/ssi.html.es | 4 apache2-2.4.69/docs/manual/howto/ssi.html.fr.utf8 | 574 +-- apache2-2.4.69/docs/manual/images/README.md | 97 apache2-2.4.69/docs/manual/images/rewrite_l_flag_looping.svg | 153 apache2-2.4.69/docs/manual/images/rewrite_module_order.svg | 110 apache2-2.4.69/docs/manual/images/rewrite_path_stripping.svg | 142 apache2-2.4.69/docs/manual/images/rewrite_simplified_overview.svg | 113 apache2-2.4.69/docs/manual/install.html.en | 223 - apache2-2.4.69/docs/manual/install.html.fr.utf8 | 334 -- apache2-2.4.69/docs/manual/logs.html.en | 233 - apache2-2.4.69/docs/manual/logs.html.fr.utf8 | 270 - apache2-2.4.69/docs/manual/misc/relevant_standards.html.en | 299 + apache2-2.4.69/docs/manual/misc/relevant_standards.html.fr.utf8 | 322 +- apache2-2.4.69/docs/manual/misc/relevant_standards.html.ko.euc-kr | 2 apache2-2.4.69/docs/manual/misc/security_tips.html.en | 6 apache2-2.4.69/docs/manual/misc/security_tips.html.fr.utf8 | 4 apache2-2.4.69/docs/manual/mod/core.html.fr.utf8 | 40 apache2-2.4.69/docs/manual/mod/directive-dict.html.fr.utf8 | 23 apache2-2.4.69/docs/manual/mod/event.html.en | 7 apache2-2.4.69/docs/manual/mod/event.html.fr.utf8 | 9 apache2-2.4.69/docs/manual/mod/mod_access_compat.html.en | 10 apache2-2.4.69/docs/manual/mod/mod_access_compat.html.fr.utf8 | 10 apache2-2.4.69/docs/manual/mod/mod_actions.html.fr.utf8 | 24 apache2-2.4.69/docs/manual/mod/mod_brotli.html.fr.utf8 | 52 apache2-2.4.69/docs/manual/mod/mod_cern_meta.html.en | 8 apache2-2.4.69/docs/manual/mod/mod_cern_meta.html.fr.utf8 | 8 apache2-2.4.69/docs/manual/mod/mod_data.html.fr.utf8 | 5 apache2-2.4.69/docs/manual/mod/mod_dbd.html.fr.utf8 | 2 apache2-2.4.69/docs/manual/mod/mod_deflate.html.fr.utf8 | 76 apache2-2.4.69/docs/manual/mod/mod_heartmonitor.html.fr.utf8 | 10 apache2-2.4.69/docs/manual/mod/mod_imagemap.html.en | 8 apache2-2.4.69/docs/manual/mod/mod_imagemap.html.fr.utf8 | 8 apache2-2.4.69/docs/manual/mod/mod_log_config.html.fr.utf8 | 6 apache2-2.4.69/docs/manual/mod/mod_macro.html.fr.utf8 | 11 apache2-2.4.69/docs/manual/mod/mod_md.html.en | 68 apache2-2.4.69/docs/manual/mod/mod_md.html.fr.utf8 | 96 apache2-2.4.69/docs/manual/mod/mod_mime.html.fr.utf8 | 3 apache2-2.4.69/docs/manual/mod/mod_privileges.html.en | 18 apache2-2.4.69/docs/manual/mod/mod_privileges.html.fr.utf8 | 18 apache2-2.4.69/docs/manual/mod/mod_proxy.html.en | 28 apache2-2.4.69/docs/manual/mod/mod_proxy.html.fr.utf8 | 31 apache2-2.4.69/docs/manual/mod/mod_proxy_scgi.html.fr.utf8 | 2 apache2-2.4.69/docs/manual/mod/mod_proxy_wstunnel.html.en | 4 apache2-2.4.69/docs/manual/mod/mod_proxy_wstunnel.html.fr.utf8 | 4 apache2-2.4.69/docs/manual/mod/mod_rewrite.html.en | 344 +- apache2-2.4.69/docs/manual/mod/mod_rewrite.html.fr.utf8 | 805 ++--- apache2-2.4.69/docs/manual/mod/mod_socache_redis.html.fr.utf8 | 8 apache2-2.4.69/docs/manual/mod/mod_ssl.html.en | 28 apache2-2.4.69/docs/manual/mod/mod_ssl.html.fr.utf8 | 29 apache2-2.4.69/docs/manual/mod/mod_unique_id.html.fr.utf8 | 76 apache2-2.4.69/docs/manual/mod/module-dict.html.en | 7 apache2-2.4.69/docs/manual/mod/module-dict.html.fr.utf8 | 7 apache2-2.4.69/docs/manual/mod/module-dict.html.ja.utf8 | 4 apache2-2.4.69/docs/manual/mod/module-dict.html.ko.euc-kr | 2 apache2-2.4.69/docs/manual/mod/module-dict.html.tr.utf8 | 1 apache2-2.4.69/docs/manual/mod/mpm_netware.html.en | 2 apache2-2.4.69/docs/manual/mod/mpm_netware.html.fr.utf8 | 1 apache2-2.4.69/docs/manual/mod/mpm_winnt.html.en | 2 apache2-2.4.69/docs/manual/mod/mpm_winnt.html.fr.utf8 | 1 apache2-2.4.69/docs/manual/mod/mpmt_os2.html.en | 2 apache2-2.4.69/docs/manual/mod/mpmt_os2.html.fr.utf8 | 1 apache2-2.4.69/docs/manual/mod/overrides.html.fr.utf8 | 163 - apache2-2.4.69/docs/manual/mod/prefork.html.en | 7 apache2-2.4.69/docs/manual/mod/prefork.html.fr.utf8 | 8 apache2-2.4.69/docs/manual/mod/prefork.html.tr.utf8 | 1 apache2-2.4.69/docs/manual/mod/quickreference.html.de | 40 apache2-2.4.69/docs/manual/mod/quickreference.html.en | 40 apache2-2.4.69/docs/manual/mod/quickreference.html.es | 40 apache2-2.4.69/docs/manual/mod/quickreference.html.fr.utf8 | 50 apache2-2.4.69/docs/manual/mod/quickreference.html.ja.utf8 | 32 apache2-2.4.69/docs/manual/mod/quickreference.html.ko.euc-kr | 28 apache2-2.4.69/docs/manual/mod/quickreference.html.tr.utf8 | 40 apache2-2.4.69/docs/manual/mod/quickreference.html.zh-cn.utf8 | 40 apache2-2.4.69/docs/manual/mod/worker.html.en | 7 apache2-2.4.69/docs/manual/mod/worker.html.fr.utf8 | 8 apache2-2.4.69/docs/manual/mod/worker.html.tr.utf8 | 1 apache2-2.4.69/docs/manual/mpm.html.en | 2 apache2-2.4.69/docs/manual/mpm.html.es | 4 apache2-2.4.69/docs/manual/mpm.html.fr.utf8 | 2 apache2-2.4.69/docs/manual/mpm.html.tr.utf8 | 1 apache2-2.4.69/docs/manual/platform/netware.html.fr.utf8 | 84 apache2-2.4.69/docs/manual/platform/win_compiling.html.en | 4 apache2-2.4.69/docs/manual/platform/win_compiling.html.fr.utf8 | 4 apache2-2.4.69/docs/manual/programs/htcacheclean.html.fr.utf8 | 16 apache2-2.4.69/docs/manual/programs/htdbm.html.fr.utf8 | 17 apache2-2.4.69/docs/manual/programs/httpd.html.fr.utf8 | 27 apache2-2.4.69/docs/manual/rewrite/access.html.fr.utf8 | 292 - apache2-2.4.69/docs/manual/rewrite/advanced.html.fr.utf8 | 357 -- apache2-2.4.69/docs/manual/rewrite/avoid.html.fr.utf8 | 433 ++ apache2-2.4.69/docs/manual/rewrite/flags.html.en | 138 apache2-2.4.69/docs/manual/rewrite/flags.html.fr.utf8 | 500 ++- apache2-2.4.69/docs/manual/rewrite/htaccess.html.en | 10 apache2-2.4.69/docs/manual/rewrite/htaccess.html.fr.utf8 | 411 ++ apache2-2.4.69/docs/manual/rewrite/index.html.fr.utf8 | 100 apache2-2.4.69/docs/manual/rewrite/intro.html.en | 14 apache2-2.4.69/docs/manual/rewrite/intro.html.fr.utf8 | 188 - apache2-2.4.69/docs/manual/rewrite/proxy.html.fr.utf8 | 74 apache2-2.4.69/docs/manual/rewrite/remapping.html.fr.utf8 | 648 ++-- apache2-2.4.69/docs/manual/rewrite/rewritemap.html.fr.utf8 | 136 apache2-2.4.69/docs/manual/rewrite/tech.html.en | 7 apache2-2.4.69/docs/manual/rewrite/tech.html.fr.utf8 | 263 + apache2-2.4.69/docs/manual/rewrite/vhosts.html.fr.utf8 | 24 apache2-2.4.69/docs/manual/style/css/manual.css | 5 apache2-2.4.69/docs/manual/style/version.ent | 2 apache2-2.4.69/docs/manual/suexec.html.fr.utf8 | 2 apache2-2.4.69/docs/manual/urlmapping.html.en | 8 apache2-2.4.69/docs/manual/urlmapping.html.fr.utf8 | 16 apache2-2.4.69/httpd.spec | 2 apache2-2.4.69/include/ap_release.h | 2 apache2-2.4.69/include/httpd.h | 3 apache2-2.4.69/modules/aaa/config.m4 | 6 apache2-2.4.69/modules/aaa/mod_auth_digest.c | 810 ++--- apache2-2.4.69/modules/aaa/mod_authn_socache.c | 2 apache2-2.4.69/modules/aaa/mod_authnz_ldap.c | 494 +-- apache2-2.4.69/modules/cache/mod_cache.c | 8 apache2-2.4.69/modules/cluster/mod_heartmonitor.c | 67 apache2-2.4.69/modules/dav/fs/dbm.c | 26 apache2-2.4.69/modules/dav/fs/mod_dav_fs.c | 41 apache2-2.4.69/modules/dav/fs/repos.c | 58 apache2-2.4.69/modules/dav/fs/repos.h | 6 apache2-2.4.69/modules/dav/main/mod_dav.c | 2 apache2-2.4.69/modules/dav/main/mod_dav.h | 5 apache2-2.4.69/modules/dav/main/props.c | 6 apache2-2.4.69/modules/dav/main/util.c | 9 apache2-2.4.69/modules/filters/mod_charset_lite.c | 5 apache2-2.4.69/modules/filters/mod_filter.c | 2 apache2-2.4.69/modules/filters/mod_proxy_html.c | 3 apache2-2.4.69/modules/filters/mod_substitute.c | 10 apache2-2.4.69/modules/filters/mod_xml2enc.c | 19 apache2-2.4.69/modules/generators/cgi_common.h | 6 apache2-2.4.69/modules/generators/mod_cgid.c | 79 apache2-2.4.69/modules/http/http_filters.c | 2 apache2-2.4.69/modules/http/http_protocol.c | 9 apache2-2.4.69/modules/http/http_request.c | 8 apache2-2.4.69/modules/http2/h2_c1_io.c | 8 apache2-2.4.69/modules/http2/h2_c2.c | 4 apache2-2.4.69/modules/http2/h2_c2_filter.c | 6 apache2-2.4.69/modules/http2/h2_headers.c | 4 apache2-2.4.69/modules/http2/h2_mplx.c | 24 apache2-2.4.69/modules/http2/h2_mplx.h | 1 apache2-2.4.69/modules/http2/h2_protocol.c | 4 apache2-2.4.69/modules/http2/h2_proxy_session.c | 18 apache2-2.4.69/modules/http2/h2_proxy_util.c | 2 apache2-2.4.69/modules/http2/h2_session.c | 101 apache2-2.4.69/modules/http2/h2_session.h | 15 apache2-2.4.69/modules/http2/h2_stream.c | 26 apache2-2.4.69/modules/http2/h2_stream.h | 1 apache2-2.4.69/modules/http2/h2_ws.c | 4 apache2-2.4.69/modules/loggers/mod_logio.c | 2 apache2-2.4.69/modules/lua/lua_request.c | 8 apache2-2.4.69/modules/mappers/mod_dir.c | 4 apache2-2.4.69/modules/mappers/mod_rewrite.c | 10 apache2-2.4.69/modules/mappers/mod_speling.c | 2 apache2-2.4.69/modules/mappers/mod_userdir.c | 9 apache2-2.4.69/modules/mappers/mod_vhost_alias.c | 38 apache2-2.4.69/modules/md/md_acme.c | 24 apache2-2.4.69/modules/md/md_crypt.c | 6 apache2-2.4.69/modules/md/md_curl.c | 8 apache2-2.4.69/modules/md/md_log.c | 2 apache2-2.4.69/modules/md/md_ocsp.c | 16 apache2-2.4.69/modules/md/md_store.c | 2 apache2-2.4.69/modules/md/mod_md_config.c | 2 apache2-2.4.69/modules/metadata/mod_cern_meta.c | 12 apache2-2.4.69/modules/proxy/ajp_header.c | 2 apache2-2.4.69/modules/proxy/balancers/mod_lbmethod_heartbeat.c | 62 apache2-2.4.69/modules/proxy/mod_proxy_ajp.c | 2 apache2-2.4.69/modules/proxy/mod_proxy_ftp.c | 30 apache2-2.4.69/modules/proxy/mod_proxy_hcheck.c | 23 apache2-2.4.69/modules/proxy/mod_proxy_http.c | 6 apache2-2.4.69/modules/proxy/mod_proxy_uwsgi.c | 34 apache2-2.4.69/modules/session/mod_session_cookie.c | 9 apache2-2.4.69/modules/ssl/mod_ssl.c | 4 apache2-2.4.69/modules/ssl/ssl_engine_config.c | 3 apache2-2.4.69/modules/ssl/ssl_engine_kernel.c | 2 apache2-2.4.69/modules/ssl/ssl_engine_ocsp.c | 2 apache2-2.4.69/modules/ssl/ssl_engine_vars.c | 2 apache2-2.4.69/modules/ssl/ssl_private.h | 5 apache2-2.4.69/modules/ssl/ssl_util.c | 6 apache2-2.4.69/server/mpm_unix.c | 28 apache2-2.4.69/server/protocol.c | 6 apache2-2.4.69/server/request.c | 18 apache2-2.4.69/server/util_cookies.c | 6 apache2-2.4.69/server/util_expr_eval.c | 4 apache2-2.4.69/test/Makefile.in | 3 apache2-2.4.69/test/README | 97 apache2-2.4.69/test/README.pytest | 16 apache2-2.4.69/test/clients/Makefile.in | 6 apache2-2.4.69/test/conftest.py | 16 apache2-2.4.69/test/make_sni.sh | 2 apache2-2.4.69/test/modules/dav/conftest.py | 36 apache2-2.4.69/test/modules/dav/env.py | 25 apache2-2.4.69/test/modules/dav/test_001_propdb_ns_limit.py | 72 apache2-2.4.69/test/modules/http1/mod_h1test/mod_h1test.c | 2 apache2-2.4.69/test/modules/http2/mod_h2test/mod_h2test.c | 8 apache2-2.4.69/test/modules/http2/test_106_shutdown.py | 11 apache2-2.4.69/test/modules/http2/test_203_rfc9113.py | 12 apache2-2.4.69/test/modules/proxy/env.py | 67 apache2-2.4.69/test/modules/proxy/test_03_response.py | 124 apache2-2.4.69/test/modules/proxy/test_03_uwsgi.py | 175 + apache2-2.4.69/test/modules/proxy/test_06_interim_resp.py | 184 + apache2-2.4.69/test/modules/proxy/uwsgi_faker.py | 292 + apache2-2.4.69/test/pyhttpd/conf.py | 7 apache2-2.4.69/test/pyhttpd/env.py | 43 apache2-2.4.69/test/pyhttpd/log.py | 10 apache2-2.4.69/test/pyhttpd/pyproject.toml | 16 apache2-2.4.69/test/pyhttpd/runtests.sh | 87 apache2-2.4.69/test/pyhttpd/uv.lock | 679 ++++ apache2-2.4.69/test/pytest_suite/.gitignore | 72 apache2-2.4.69/test/pytest_suite/README.md | 335 ++ apache2-2.4.69/test/pytest_suite/apache_pytest/__init__.py | 37 apache2-2.4.69/test/pytest_suite/apache_pytest/client.py | 358 ++ apache2-2.4.69/test/pytest_suite/apache_pytest/cmodules.py | 258 + apache2-2.4.69/test/pytest_suite/apache_pytest/config.py | 911 +++++ apache2-2.4.69/test/pytest_suite/apache_pytest/fpm.py | 115 apache2-2.4.69/test/pytest_suite/apache_pytest/probe.py | 249 + apache2-2.4.69/test/pytest_suite/apache_pytest/rawsocket.py | 125 apache2-2.4.69/test/pytest_suite/apache_pytest/scripts.py | 63 apache2-2.4.69/test/pytest_suite/apache_pytest/server.py | 241 + apache2-2.4.69/test/pytest_suite/apache_pytest/sslca.py | 262 + apache2-2.4.69/test/pytest_suite/apache_pytest/testapi.py | 95 apache2-2.4.69/test/pytest_suite/c-modules/authany/mod_authany.c | 172 + apache2-2.4.69/test/pytest_suite/c-modules/client_add_filter/mod_client_add_filter.c | 54 apache2-2.4.69/test/pytest_suite/c-modules/eat_post/mod_eat_post.c | 61 apache2-2.4.69/test/pytest_suite/c-modules/echo_post/mod_echo_post.c | 102 apache2-2.4.69/test/pytest_suite/c-modules/echo_post_chunk/mod_echo_post_chunk.c | 93 apache2-2.4.69/test/pytest_suite/c-modules/fold/mod_fold.c | 33 apache2-2.4.69/test/pytest_suite/c-modules/httpd_test_util.c | 44 apache2-2.4.69/test/pytest_suite/c-modules/input_body_filter/mod_input_body_filter.c | 184 + apache2-2.4.69/test/pytest_suite/c-modules/list_modules/mod_list_modules.c | 38 apache2-2.4.69/test/pytest_suite/c-modules/memory_track/mod_memory_track.c | 45 apache2-2.4.69/test/pytest_suite/c-modules/nntp_like/mod_nntp_like.c | 181 + apache2-2.4.69/test/pytest_suite/c-modules/random_chunk/mod_random_chunk.c | 182 + apache2-2.4.69/test/pytest_suite/c-modules/test_apr_uri/mod_test_apr_uri.c | 354 ++ apache2-2.4.69/test/pytest_suite/c-modules/test_pass_brigade/mod_test_pass_brigade.c | 102 apache2-2.4.69/test/pytest_suite/c-modules/test_rwrite/mod_test_rwrite.c | 66 apache2-2.4.69/test/pytest_suite/c-modules/test_session/mod_test_session.c | 348 ++ apache2-2.4.69/test/pytest_suite/c-modules/test_ssl/mod_test_ssl.c | 171 + apache2-2.4.69/test/pytest_suite/c-modules/test_utilities/mod_test_utilities.c | 48 apache2-2.4.69/test/pytest_suite/conftest.py | 336 ++ apache2-2.4.69/test/pytest_suite/gen_test_header.py | 33 apache2-2.4.69/test/pytest_suite/pyproject.toml | 29 apache2-2.4.69/test/pytest_suite/runtests.bat | 164 + apache2-2.4.69/test/pytest_suite/runtests.sh | 104 apache2-2.4.69/test/pytest_suite/t/conf/cache.conf.in | 25 apache2-2.4.69/test/pytest_suite/t/conf/core.conf.in | 55 apache2-2.4.69/test/pytest_suite/t/conf/extra.conf.in | 1595 ++++++++++ apache2-2.4.69/test/pytest_suite/t/conf/include-ssi-exec.conf.in | 499 +++ apache2-2.4.69/test/pytest_suite/t/conf/include.conf.in | 82 apache2-2.4.69/test/pytest_suite/t/conf/proxy.conf.in | 375 ++ apache2-2.4.69/test/pytest_suite/t/conf/proxy_beacon.conf.in | 115 apache2-2.4.69/test/pytest_suite/t/conf/ssl/README | 17 apache2-2.4.69/test/pytest_suite/t/conf/ssl/ca-bundle-duplicates.crt | 114 apache2-2.4.69/test/pytest_suite/t/conf/ssl/ca-bundle-sample.crt | 393 ++ apache2-2.4.69/test/pytest_suite/t/conf/ssl/httpd-passphrase.pl.PL | 2 apache2-2.4.69/test/pytest_suite/t/conf/ssl/proxyssl.conf.in | 125 apache2-2.4.69/test/pytest_suite/t/conf/ssl/ssl.conf.in | 301 + apache2-2.4.69/test/pytest_suite/t/conf/vhost_alias.conf.in | 9 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/acceptpathinfo/index.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/acceptpathinfo/info.php | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/acceptpathinfo/off/index.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/acceptpathinfo/off/info.php | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/acceptpathinfo/off/test.sh | 8 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/acceptpathinfo/on/index.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/acceptpathinfo/on/info.php | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/acceptpathinfo/on/test.sh | 8 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/acceptpathinfo/test.sh | 8 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/cfg_getline/index.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/chunked/flush.html | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/chunked/flushheap0.html | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/all/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/all/i/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/all/i/test.txt | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/all/inherit/test.txt | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/all/is/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/all/is/test.txt | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/all/m/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/all/m/test.txt | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/all/mi/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/all/mi/test.txt | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/all/minus-i/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/all/minus-i/test.txt | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/all/minus-is/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/all/minus-is/test.txt | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/all/minus-m/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/all/minus-m/test.txt | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/all/minus-mi/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/all/minus-mi/test.txt | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/all/minus-mis/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/all/minus-mis/test.txt | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/all/minus-ms/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/all/minus-ms/test.txt | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/all/minus-s/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/all/minus-s/test.txt | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/all/mis/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/all/mis/test.txt | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/all/ms/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/all/ms/test.txt | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/all/s/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/all/s/test.txt | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/all/test.txt | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/default/test.txt | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/i/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/i/test.txt | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/is/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/is/test.txt | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/m/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/m/minus-i/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/m/minus-i/test.txt | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/m/minus-is/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/m/minus-is/test.txt | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/m/minus-m/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/m/minus-m/test.txt | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/m/minus-mi/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/m/minus-mi/test.txt | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/m/minus-mis/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/m/minus-mis/test.txt | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/m/minus-ms/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/m/minus-ms/test.txt | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/m/minus-s/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/m/minus-s/test.txt | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/m/plus-i/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/m/plus-i/test.txt | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/m/plus-is/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/m/plus-is/test.txt | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/m/plus-m/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/m/plus-m/test.txt | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/m/plus-mi/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/m/plus-mi/test.txt | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/m/plus-mis/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/m/plus-mis/test.txt | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/m/plus-ms/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/m/plus-ms/test.txt | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/m/plus-s/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/m/plus-s/test.txt | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/m/test.txt | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/mi/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/mi/test.txt | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/mis/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/mis/test.txt | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/ms/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/ms/test.txt | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/none/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/none/i/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/none/i/test.txt | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/none/inherit/test.txt | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/none/is/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/none/is/test.txt | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/none/m/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/none/m/test.txt | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/none/mi/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/none/mi/test.txt | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/none/mis/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/none/mis/test.txt | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/none/ms/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/none/ms/test.txt | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/none/plus-i/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/none/plus-i/test.txt | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/none/plus-is/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/none/plus-is/test.txt | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/none/plus-m/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/none/plus-m/test.txt | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/none/plus-mi/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/none/plus-mi/test.txt | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/none/plus-mis/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/none/plus-mis/minus-i/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/none/plus-mis/minus-i/test.txt | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/none/plus-mis/minus-is/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/none/plus-mis/minus-is/test.txt | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/none/plus-mis/minus-m/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/none/plus-mis/minus-m/test.txt | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/none/plus-mis/minus-mi/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/none/plus-mis/minus-mi/test.txt | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/none/plus-mis/minus-mis/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/none/plus-mis/minus-mis/test.txt | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/none/plus-mis/minus-ms/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/none/plus-mis/minus-ms/test.txt | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/none/plus-mis/minus-s/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/none/plus-mis/minus-s/test.txt | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/none/plus-mis/test.txt | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/none/plus-ms/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/none/plus-ms/test.txt | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/none/plus-s/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/none/plus-s/test.txt | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/none/s/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/none/s/test.txt | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/none/test.txt | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/s/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/s/test.txt | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/etags/test.txt | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/expr/index.html | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/htaccess/override/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/htaccess/override/hello.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/http_strict/send_hdr.pl.PL | 10 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/iffile/document | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/limits/index.html | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/loglevel/core_crit/info.html | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/loglevel/core_info/info.html | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/loglevel/crit/core_info/crit/info.html | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/apache/loglevel/info/core_crit/info/info.html | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/authz/login.html | 9 apache2-2.4.69/test/pytest_suite/t/htdocs/authz_core/a/b/c/index.html | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/authz_core/a/b/index.html | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/authz_core/a/index.html | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/echo_post.html | 11 apache2-2.4.69/test/pytest_suite/t/htdocs/expr/index.html | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/foobar.html | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/if_sec/dir/foo.txt | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/if_sec/dir/index.html | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/if_sec/foo.if_test | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/if_sec/index.html | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/if_sec/loc/foo.if_test | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/if_sec/loc/foo.txt | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/if_sec/loc/index.html | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/alias/0.html | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/alias/1.html | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/alias/2.html | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/alias/3.html | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/alias/4.html | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/alias/5.html | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/alias/6.html | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/alias/7.html | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/alias/8.html | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/alias/9.html | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/alias/index.html | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/allowmethods/Get/foo.txt | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/allowmethods/Get/post/foo.txt | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/allowmethods/Head/foo.txt | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/allowmethods/Post/foo.txt | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/asis/foo.asis | 4 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/asis/forbid.asis | 4 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/asis/notfound.asis | 4 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/cache/cache/index.html | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/cgi/acceptpathinfodefault.sh | 4 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/cgi/acceptpathinfooff.sh | 4 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/cgi/acceptpathinfoon.sh | 4 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/cgi/action.pl.PL | 10 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/cgi/action.sh | 9 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/cgi/big.pl.PL | 22 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/cgi/bogus-perl.pl.PL | 2 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/cgi/bogus-sh.sh | 2 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/cgi/bogus-te.sh | 10 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/cgi/bogus1k.pl.PL | 2 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/cgi/empty.pl.PL | 6 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/cgi/env.pl.PL | 7 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/cgi/not-modified.pl.PL | 4 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/cgi/nph-102.pl.PL | 9 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/cgi/nph-dripfeed.pl.PL | 17 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/cgi/nph-foldhdr.pl.PL | 13 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/cgi/nph-interim1.pl.PL | 16 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/cgi/nph-interim2.pl.PL | 16 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/cgi/nph-stderr.pl.PL | 12 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/cgi/nph-test.pl.PL | 9 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/cgi/ocsp.pl.PL | 78 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/cgi/perl.pl.PL | 3 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/cgi/perl_echo.pl.PL | 14 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/cgi/perl_post.pl.PL | 23 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/cgi/pr37166.pl.PL | 8 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/cgi/ranged.pl.PL | 11 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/cgi/redirect.pl.PL | 5 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/cgi/sh.sh | 4 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/cgi/stderr1.pl.PL | 7 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/cgi/stderr2.pl.PL | 9 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/cgi/stderr3.pl.PL | 8 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/cgi/unique-id.pl.PL | 3 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/cgi/xother.pl.PL | 6 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/deflate/bucketeer/BB.txt | 3 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/deflate/bucketeer/BBF.txt | 3 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/deflate/bucketeer/BFB.txt | 3 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/deflate/bucketeer/F.txt | 3 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/deflate/bucketeer/FBP.txt | 3 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/deflate/bucketeer/FP.txt | 3 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/deflate/bucketeer/P.txt | 3 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/deflate/index.html | 2 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/deflate/ssi/default.html | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/deflate/ssi/ssi.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/deflate/ssi/ssi2.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/dir/fallback/fallback.magictype | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/dir/fallback/index.html | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/dir/htaccess/0.html | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/dir/htaccess/1.html | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/dir/htaccess/2.html | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/dir/htaccess/3.html | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/dir/htaccess/4.html | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/dir/htaccess/5.html | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/dir/htaccess/6.html | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/dir/htaccess/7.html | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/dir/htaccess/8.html | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/dir/htaccess/9.html | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/dir/htaccess/index.html | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/dir/htaccess/sub1/index.html | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/env/host.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/env/nothere.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/env/set.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/env/setempty.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/env/type.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/env/unset.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/expires/expire.html | 4 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/expires/htaccess/expire.html | 4 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/expires/htaccess/index.html | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/expires/index.html | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/ext_filter/eval-cmd.pl.PL | 6 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/ext_filter/sleepycat.pl.PL | 3 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/filter/byterange/pr61860/test.html | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/filter/bytype/test.css | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/filter/bytype/test.html | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/filter/bytype/test.txt | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/filter/bytype/test.xml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/filter/pr49328/included.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/filter/pr49328/pr49328.shtml | 3 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/headers/ssl/.htaccess | 3 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/headers/ssl/index.html | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/abs-path.shtml | 2 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/apexpr/err.shtml | 3 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/apexpr/if1.shtml | 6 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/apexpr/lazyvar.shtml | 5 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/apexpr/restrict.shtml | 3 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/apexpr/var.shtml | 16 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/big.shtml | 18 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/bucketeer/retagged3.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/bucketeer/retagged4.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/bucketeer/y.shtml | 16 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/bucketeer/y0.shtml | 16 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/bucketeer/y1.shtml | 16 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/bucketeer/y10.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/bucketeer/y2.shtml | 17 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/bucketeer/y3.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/bucketeer/y4.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/bucketeer/y5.shtml | 9 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/bucketeer/y6.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/bucketeer/y7.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/bucketeer/y8.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/bucketeer/y9.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/comment.shtml | 5 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/echo.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/echo1.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/echo2.shtml | 9 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/echo3.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/encode.shtml | 3 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/errmsg1.shtml | 2 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/errmsg2.shtml | 2 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/errmsg3.shtml | 2 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/errmsg4.shtml | 5 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/errmsg5.shtml | 2 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/exec/off/cgi.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/exec/off/cmd.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/exec/on/cgi.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/exec/on/cmd.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/extra/inc-bogus.shtml | 2 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/extra/inc-extra1.shtml | 2 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/extra/inc-extra2.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/file.shtml | 6 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/foo.shtml | 2 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/foo1.shtml | 2 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/foo2.shtml | 2 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/footer.shtml | 2 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/header.shtml | 7 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/if1.shtml | 6 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/if10.shtml | 10 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/if10a.shtml | 10 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/if11.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/if2.shtml | 10 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/if3.shtml | 21 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/if4.shtml | 15 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/if5.shtml | 21 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/if6.shtml | 3 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/if7.shtml | 3 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/if8.shtml | 9 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/if8a.shtml | 9 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/if9.shtml | 11 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/if9a.shtml | 11 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/inc-nego.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/inc-one.shtml | 2 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/inc-rfile.shtml | 2 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/inc-rvirtual.shtml | 2 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/inc-three.shtml | 2 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/inc-two.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/include1.shtml | 2 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/include2.shtml | 2 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/include3.shtml | 2 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/include4.shtml | 2 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/include5.shtml | 2 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/include6.shtml | 2 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/malformed.shtml | 6 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/mod_request/echo.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/mod_request/post.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/newline.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/notreal.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/parse1.shtml | 2 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/parse2.shtml | 2 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/printenv.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ranged-virtual.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/regex.shtml | 5 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/retagged1.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/retagged2.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/set.shtml | 2 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/size.shtml | 17 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/1/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/1/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/10/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/10/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/100/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/100/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/101/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/101/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/102/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/102/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/103/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/103/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/104/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/104/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/105/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/105/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/106/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/106/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/107/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/107/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/108/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/108/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/109/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/109/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/11/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/11/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/110/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/110/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/111/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/111/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/112/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/112/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/113/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/113/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/114/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/114/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/115/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/115/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/116/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/116/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/117/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/117/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/118/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/118/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/119/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/119/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/12/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/12/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/120/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/120/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/121/subdir/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/13/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/13/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/14/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/14/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/15/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/15/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/16/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/16/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/17/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/17/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/18/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/18/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/19/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/19/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/2/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/2/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/20/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/20/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/21/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/21/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/22/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/22/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/23/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/23/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/24/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/24/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/25/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/25/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/26/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/26/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/27/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/27/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/28/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/28/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/29/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/29/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/3/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/3/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/30/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/30/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/31/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/31/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/32/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/32/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/33/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/33/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/34/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/34/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/35/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/35/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/36/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/36/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/37/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/37/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/38/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/38/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/39/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/39/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/4/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/4/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/40/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/40/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/41/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/41/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/42/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/42/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/43/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/43/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/44/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/44/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/45/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/45/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/46/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/46/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/47/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/47/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/48/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/48/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/49/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/49/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/5/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/5/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/50/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/50/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/51/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/51/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/52/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/52/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/53/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/53/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/54/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/54/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/55/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/55/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/56/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/56/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/57/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/57/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/58/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/58/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/59/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/59/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/6/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/6/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/60/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/60/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/61/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/61/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/62/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/62/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/63/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/63/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/64/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/64/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/65/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/65/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/66/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/66/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/67/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/67/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/68/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/68/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/69/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/69/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/7/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/7/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/70/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/70/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/71/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/71/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/72/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/72/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/73/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/73/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/74/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/74/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/75/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/75/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/76/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/76/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/77/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/77/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/78/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/78/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/79/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/79/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/8/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/8/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/80/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/80/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/81/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/81/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/82/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/82/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/83/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/83/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/84/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/84/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/85/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/85/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/86/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/86/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/87/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/87/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/88/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/88/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/89/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/89/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/9/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/9/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/90/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/90/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/91/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/91/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/92/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/92/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/93/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/93/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/94/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/94/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/95/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/95/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/96/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/96/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/97/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/97/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/98/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/98/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/99/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/ssi-exec/99/exec.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/var128.shtml | 4 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/virtual.shtml | 7 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/virtualq.shtml | 4 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/xbithack/both/timefmt.shtml | 2 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/xbithack/full/test.html | 3 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/xbithack/off/test.html | 3 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/include/xbithack/on/test.html | 3 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/lua/201.lua | 3 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/lua/filters.lua | 16 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/lua/hello.lua | 4 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/lua/hello2.lua | 4 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/lua/https.lua | 7 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/lua/method.lua | 3 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/lua/setheaderfromparam.lua | 10 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/lua/setheaders.lua | 4 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/lua/translate.lua | 28 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/lua/version.lua | 3 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/lua/websockets.lua | 18 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/negotiation/content-type/test.var | 26 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/negotiation/de/compressed/index.html.de | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/negotiation/de/compressed/index.html.en | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/negotiation/de/compressed/index.html.fr | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/negotiation/de/compressed/index.html.fu | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/negotiation/de/compressed/index.html.zh-TW | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/negotiation/de/index.html.de | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/negotiation/de/index.html.en | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/negotiation/de/index.html.fr | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/negotiation/de/index.html.fu | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/negotiation/de/index.html.zh-TW | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/negotiation/de/two/index.de.html | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/negotiation/de/two/index.en.html | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/negotiation/de/two/index.fr.html | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/negotiation/de/two/index.fu.html | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/negotiation/de/two/index.zh-TW.html | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/negotiation/de/two/map.var | 21 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/negotiation/en/compressed/index.html.de | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/negotiation/en/compressed/index.html.en | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/negotiation/en/compressed/index.html.fr | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/negotiation/en/compressed/index.html.fu | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/negotiation/en/compressed/index.html.zh-TW | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/negotiation/en/index.html.de | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/negotiation/en/index.html.en | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/negotiation/en/index.html.fr | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/negotiation/en/index.html.fu | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/negotiation/en/index.html.zh-TW | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/negotiation/en/two/index.de.html | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/negotiation/en/two/index.en.html | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/negotiation/en/two/index.fr.html | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/negotiation/en/two/index.fu.html | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/negotiation/en/two/index.zh-TW.html | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/negotiation/en/two/map.var | 21 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/negotiation/fr/compressed/index.html.de | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/negotiation/fr/compressed/index.html.en | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/negotiation/fr/compressed/index.html.fr | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/negotiation/fr/compressed/index.html.fu | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/negotiation/fr/compressed/index.html.zh-TW | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/negotiation/fr/index.html.de | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/negotiation/fr/index.html.en | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/negotiation/fr/index.html.fr | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/negotiation/fr/index.html.fu | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/negotiation/fr/index.html.zh-TW | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/negotiation/fr/two/index.de.html | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/negotiation/fr/two/index.en.html | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/negotiation/fr/two/index.fr.html | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/negotiation/fr/two/index.fu.html | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/negotiation/fr/two/index.zh-TW.html | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/negotiation/fr/two/map.var | 21 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/negotiation/fu/compressed/index.html.de | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/negotiation/fu/compressed/index.html.en | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/negotiation/fu/compressed/index.html.fr | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/negotiation/fu/compressed/index.html.fu | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/negotiation/fu/compressed/index.html.zh-TW | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/negotiation/fu/index.html.de | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/negotiation/fu/index.html.en | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/negotiation/fu/index.html.fr | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/negotiation/fu/index.html.fu | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/negotiation/fu/index.html.zh-TW | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/negotiation/fu/two/index.de.html | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/negotiation/fu/two/index.en.html | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/negotiation/fu/two/index.fr.html | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/negotiation/fu/two/index.fu.html | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/negotiation/fu/two/index.zh-TW.html | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/negotiation/fu/two/map.var | 21 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/negotiation/query/test.html | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/negotiation/query/test.pl.PL | 8 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/negotiation/query/test.var | 7 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/negotiation/zh-TW/compressed/index.html.de | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/negotiation/zh-TW/compressed/index.html.en | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/negotiation/zh-TW/compressed/index.html.fr | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/negotiation/zh-TW/compressed/index.html.fu | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/negotiation/zh-TW/compressed/index.html.zh-TW | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/negotiation/zh-TW/index.html.de | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/negotiation/zh-TW/index.html.en | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/negotiation/zh-TW/index.html.fr | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/negotiation/zh-TW/index.html.fu | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/negotiation/zh-TW/index.html.zh-TW | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/negotiation/zh-TW/two/index.de.html | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/negotiation/zh-TW/two/index.en.html | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/negotiation/zh-TW/two/index.fr.html | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/negotiation/zh-TW/two/index.fu.html | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/negotiation/zh-TW/two/index.zh-TW.html | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/negotiation/zh-TW/two/map.var | 21 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/proxy/fcgi-action/index.php | 3 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/proxy/fcgi-generic-rewrite/index.php | 3 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/proxy/fcgi-generic/index.php | 3 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/proxy/fcgi-rewrite-path-info/index.php | 3 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/proxy/fcgi/index.php | 3 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/proxy/reverse/notproxy/local.html | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/proxy/rewrite/.htaccess | 2 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/proxy_html/case_insensitive.html | 11 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/proxy_html/comments.html | 16 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/proxy_html/doctype.html | 9 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/proxy_html/equiv.html | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/proxy_html/fixups_case.html | 10 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/proxy_html/fixups_dospath.html | 10 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/proxy_html/inline_script.html | 16 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/proxy_html/links_elements.html | 15 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/proxy_html/meta_contenttype.html | 11 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/proxy_html/meta_edge_cases.html | 11 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/proxy_html/meta_malformed.html | 14 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/proxy_html/meta_multiple.html | 14 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/proxy_html/meta_quotes.html | 12 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/proxy_html/meta_simple.html | 10 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/proxy_html/meta_special_chars.html | 12 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/proxy_html/meta_whitespace.html | 11 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/proxy_html/multi_subst.html | 20 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/proxy_html/multi_subst_rx.html | 20 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/proxy_html/multiple_maps.html | 11 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/proxy_html/regex_rewrite.html | 11 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/proxy_html/url_rewrite.html | 12 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/remoteip/index.html | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/rewrite/barfoo.html | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/rewrite/big.html | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/rewrite/db.pl.PL | 10 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/rewrite/five.html | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/rewrite/four.html | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/rewrite/lucky13.html | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/rewrite/numbers.pl.PL | 26 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/rewrite/numbers.rnd | 10 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/rewrite/numbers.txt | 10 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/rewrite/numbers2.pl.PL | 9 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/rewrite/one.html | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/rewrite/six.html | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/rewrite/test.blah | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/rewrite/three.html | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/rewrite/two.html | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/rewrite/vary1.html | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/rewrite/vary2.html | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/rewrite/vary3.html | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/rewrite/vary4.html | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/rewrite/zero.html | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/session/env.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/session_cookie/test | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/setenvif/htaccess/setenvif.shtml | 3 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/speling/caseonly/good.html | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/speling/caseonly/several1.html | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/speling/caseonly/several2.html | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/speling/nocase/good.html | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/speling/nocase/several1.html | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/speling/nocase/several2.html | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/usertrack/bar.html | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/usertrack/foo.html | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/xml2enc/doc.fooxml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/xml2enc/doc.isohtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/xml2enc/doc.notxml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/modules/xml2enc/doc.xml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/php/add.php | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/php/arg.php | 5 apache2-2.4.69/test/pytest_suite/t/htdocs/php/cfunctions.php | 55 apache2-2.4.69/test/pytest_suite/t/htdocs/php/classes.php | 46 apache2-2.4.69/test/pytest_suite/t/htdocs/php/dirname.php | 17 apache2-2.4.69/test/pytest_suite/t/htdocs/php/divide.php | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/php/do-while.php | 7 apache2-2.4.69/test/pytest_suite/t/htdocs/php/else.php | 7 apache2-2.4.69/test/pytest_suite/t/htdocs/php/elseif.php | 9 apache2-2.4.69/test/pytest_suite/t/htdocs/php/eval.php | 5 apache2-2.4.69/test/pytest_suite/t/htdocs/php/eval3.php | 10 apache2-2.4.69/test/pytest_suite/t/htdocs/php/eval4.php | 13 apache2-2.4.69/test/pytest_suite/t/htdocs/php/fpm/action/sub2/test.php | 4 apache2-2.4.69/test/pytest_suite/t/htdocs/php/fpm/pp/sub1/test.php | 4 apache2-2.4.69/test/pytest_suite/t/htdocs/php/fpm/test.php | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/php/func1.php | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/php/func5.php | 25 apache2-2.4.69/test/pytest_suite/t/htdocs/php/func6.php | 18 apache2-2.4.69/test/pytest_suite/t/htdocs/php/getenv.php | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/php/getlastmod.php | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/php/globals.php | 19 apache2-2.4.69/test/pytest_suite/t/htdocs/php/hello.php | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/php/if.php | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/php/include.inc | 3 apache2-2.4.69/test/pytest_suite/t/htdocs/php/include.php | 3 apache2-2.4.69/test/pytest_suite/t/htdocs/php/inheritance.php | 43 apache2-2.4.69/test/pytest_suite/t/htdocs/php/lookup.php | 5 apache2-2.4.69/test/pytest_suite/t/htdocs/php/lookup2.php | 8 apache2-2.4.69/test/pytest_suite/t/htdocs/php/multiply.php | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/php/multiviews/file.html | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/php/nestif.php | 15 apache2-2.4.69/test/pytest_suite/t/htdocs/php/ops.php | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/php/recurse.php | 10 apache2-2.4.69/test/pytest_suite/t/htdocs/php/regression.php | 22 apache2-2.4.69/test/pytest_suite/t/htdocs/php/regression1.inc | 356 ++ apache2-2.4.69/test/pytest_suite/t/htdocs/php/regression2.inc | 6 apache2-2.4.69/test/pytest_suite/t/htdocs/php/regression2.php | 369 ++ apache2-2.4.69/test/pytest_suite/t/htdocs/php/safemode/badenv.php | 2 apache2-2.4.69/test/pytest_suite/t/htdocs/php/safemode/error/mail.php | 9 apache2-2.4.69/test/pytest_suite/t/htdocs/php/safemode/hello.txt | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/php/safemode/noexec/system.php | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/php/safemode/nofile/readfile.php | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/php/safemode/protected.php | 2 apache2-2.4.69/test/pytest_suite/t/htdocs/php/safemode/putenv.php | 2 apache2-2.4.69/test/pytest_suite/t/htdocs/php/safemode/readfile.php | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/php/safemode/readpass.php | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/php/safemode/system.php | 2 apache2-2.4.69/test/pytest_suite/t/htdocs/php/status.php | 5 apache2-2.4.69/test/pytest_suite/t/htdocs/php/strings.php | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/php/strings2.php | 187 + apache2-2.4.69/test/pytest_suite/t/htdocs/php/strings3.php | 37 apache2-2.4.69/test/pytest_suite/t/htdocs/php/strings4.php | 5 apache2-2.4.69/test/pytest_suite/t/htdocs/php/subtract.php | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/php/switch.php | 13 apache2-2.4.69/test/pytest_suite/t/htdocs/php/switch2.php | 42 apache2-2.4.69/test/pytest_suite/t/htdocs/php/switch3.php | 29 apache2-2.4.69/test/pytest_suite/t/htdocs/php/switch4.php | 29 apache2-2.4.69/test/pytest_suite/t/htdocs/php/target.php | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/php/test-fpm.php | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/php/umask.php | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/php/var1.php | 12 apache2-2.4.69/test/pytest_suite/t/htdocs/php/var2.php | 14 apache2-2.4.69/test/pytest_suite/t/htdocs/php/var3.php | 16 apache2-2.4.69/test/pytest_suite/t/htdocs/php/var3u.php | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/php/virtual.php | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/php/while.php | 5 apache2-2.4.69/test/pytest_suite/t/htdocs/security/CAN-2003-0542/.htaccess | 3 apache2-2.4.69/test/pytest_suite/t/htdocs/security/CAN-2004-0747/.htaccess | 2 apache2-2.4.69/test/pytest_suite/t/htdocs/security/CAN-2004-0747/index.html | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/security/CAN-2004-0811/.htaccess | 3 apache2-2.4.69/test/pytest_suite/t/htdocs/security/CAN-2004-0811/index.html | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/security/CAN-2004-0811/sub/index.html | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/security/CAN-2004-0940.shtml | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/security/CAN-2005-2491/one/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/security/CAN-2005-2491/two/.htaccess | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/security/CVE-2005-3352.map | 1 apache2-2.4.69/test/pytest_suite/t/htdocs/servlet/mapping.html | 1 apache2-2.4.69/test/pytest_suite/t/php-fpm/etc/php-fpm.conf | 19 apache2-2.4.69/test/pytest_suite/t/php-fpm/etc/php-fpm.d/www.conf | 7 apache2-2.4.69/test/pytest_suite/t/php-fpm/fcgi.pl | 25 apache2-2.4.69/test/pytest_suite/tests/t/ab/test_base.py | 62 apache2-2.4.69/test/pytest_suite/tests/t/apache/test_404.py | 22 apache2-2.4.69/test/pytest_suite/tests/t/apache/test_acceptpathinfo.py | 76 apache2-2.4.69/test/pytest_suite/tests/t/apache/test_byterange.py | 54 apache2-2.4.69/test/pytest_suite/tests/t/apache/test_byterange2.py | 16 apache2-2.4.69/test/pytest_suite/tests/t/apache/test_byterange3.py | 58 apache2-2.4.69/test/pytest_suite/tests/t/apache/test_byterange4.py | 54 apache2-2.4.69/test/pytest_suite/tests/t/apache/test_byterange5.py | 93 apache2-2.4.69/test/pytest_suite/tests/t/apache/test_byterange6.py | 142 apache2-2.4.69/test/pytest_suite/tests/t/apache/test_byterange7.py | 72 apache2-2.4.69/test/pytest_suite/tests/t/apache/test_byterange8.py | 36 apache2-2.4.69/test/pytest_suite/tests/t/apache/test_cfg_getline.py | 34 apache2-2.4.69/test/pytest_suite/tests/t/apache/test_chunkinput.py | 105 apache2-2.4.69/test/pytest_suite/tests/t/apache/test_contentlength.py | 75 apache2-2.4.69/test/pytest_suite/tests/t/apache/test_errordoc.py | 77 apache2-2.4.69/test/pytest_suite/tests/t/apache/test_etags.py | 98 apache2-2.4.69/test/pytest_suite/tests/t/apache/test_expr.py | 286 + apache2-2.4.69/test/pytest_suite/tests/t/apache/test_expr_string.py | 125 apache2-2.4.69/test/pytest_suite/tests/t/apache/test_getfile.py | 35 apache2-2.4.69/test/pytest_suite/tests/t/apache/test_headers.py | 82 apache2-2.4.69/test/pytest_suite/tests/t/apache/test_hostcheck.py | 72 apache2-2.4.69/test/pytest_suite/tests/t/apache/test_http_strict.py | 229 + apache2-2.4.69/test/pytest_suite/tests/t/apache/test_if_sections.py | 63 apache2-2.4.69/test/pytest_suite/tests/t/apache/test_iffile.py | 18 apache2-2.4.69/test/pytest_suite/tests/t/apache/test_leaks.py | 41 apache2-2.4.69/test/pytest_suite/tests/t/apache/test_limits.py | 93 apache2-2.4.69/test/pytest_suite/tests/t/apache/test_loglevel.py | 59 apache2-2.4.69/test/pytest_suite/tests/t/apache/test_maxranges.py | 72 apache2-2.4.69/test/pytest_suite/tests/t/apache/test_mergeslashes.py | 106 apache2-2.4.69/test/pytest_suite/tests/t/apache/test_mmn.py | 43 apache2-2.4.69/test/pytest_suite/tests/t/apache/test_options.py | 26 apache2-2.4.69/test/pytest_suite/tests/t/apache/test_passbrigade.py | 21 apache2-2.4.69/test/pytest_suite/tests/t/apache/test_post.py | 21 apache2-2.4.69/test/pytest_suite/tests/t/apache/test_pr17629.py | 35 apache2-2.4.69/test/pytest_suite/tests/t/apache/test_pr18757.py | 59 apache2-2.4.69/test/pytest_suite/tests/t/apache/test_pr35292.py | 44 apache2-2.4.69/test/pytest_suite/tests/t/apache/test_pr35330.py | 19 apache2-2.4.69/test/pytest_suite/tests/t/apache/test_pr37166.py | 25 apache2-2.4.69/test/pytest_suite/tests/t/apache/test_pr43939.py | 35 apache2-2.4.69/test/pytest_suite/tests/t/apache/test_pr49328.py | 23 apache2-2.4.69/test/pytest_suite/tests/t/apache/test_pr64339.py | 50 apache2-2.4.69/test/pytest_suite/tests/t/apache/test_rwrite.py | 24 apache2-2.4.69/test/pytest_suite/tests/t/apache/test_server_name_port.py | 117 apache2-2.4.69/test/pytest_suite/tests/t/apache/test_snihostcheck.py | 25 apache2-2.4.69/test/pytest_suite/tests/t/apache/test_teclchunk.py | 72 apache2-2.4.69/test/pytest_suite/tests/t/apr/test_uri.py | 18 apache2-2.4.69/test/pytest_suite/tests/t/filter/test_byterange.py | 27 apache2-2.4.69/test/pytest_suite/tests/t/filter/test_case.py | 53 apache2-2.4.69/test/pytest_suite/tests/t/filter/test_case_in.py | 50 apache2-2.4.69/test/pytest_suite/tests/t/filter/test_input_body.py | 27 apache2-2.4.69/test/pytest_suite/tests/t/http11/test_all.py | 12 apache2-2.4.69/test/pytest_suite/tests/t/http11/test_basicauth.py | 27 apache2-2.4.69/test/pytest_suite/tests/t/http11/test_chunked.py | 57 apache2-2.4.69/test/pytest_suite/tests/t/http11/test_chunked2.py | 19 apache2-2.4.69/test/pytest_suite/tests/t/http11/test_clength.py | 32 apache2-2.4.69/test/pytest_suite/tests/t/http11/test_post.py | 20 apache2-2.4.69/test/pytest_suite/tests/t/modules/conftest.py | 16 apache2-2.4.69/test/pytest_suite/tests/t/modules/data_expected.txt | 1 apache2-2.4.69/test/pytest_suite/tests/t/modules/test_aaa.py | 144 apache2-2.4.69/test/pytest_suite/tests/t/modules/test_access.py | 112 apache2-2.4.69/test/pytest_suite/tests/t/modules/test_actions.py | 64 apache2-2.4.69/test/pytest_suite/tests/t/modules/test_alias.py | 171 + apache2-2.4.69/test/pytest_suite/tests/t/modules/test_allowmethods.py | 64 apache2-2.4.69/test/pytest_suite/tests/t/modules/test_asis.py | 28 apache2-2.4.69/test/pytest_suite/tests/t/modules/test_authz_core.py | 319 ++ apache2-2.4.69/test/pytest_suite/tests/t/modules/test_autoindex.py | 239 + apache2-2.4.69/test/pytest_suite/tests/t/modules/test_autoindex2.py | 58 apache2-2.4.69/test/pytest_suite/tests/t/modules/test_brotli.py | 78 apache2-2.4.69/test/pytest_suite/tests/t/modules/test_buffer.py | 34 apache2-2.4.69/test/pytest_suite/tests/t/modules/test_cache.py | 31 apache2-2.4.69/test/pytest_suite/tests/t/modules/test_cgi.py | 140 apache2-2.4.69/test/pytest_suite/tests/t/modules/test_data.py | 28 apache2-2.4.69/test/pytest_suite/tests/t/modules/test_dav.py | 209 + apache2-2.4.69/test/pytest_suite/tests/t/modules/test_deflate.py | 123 apache2-2.4.69/test/pytest_suite/tests/t/modules/test_digest.py | 114 apache2-2.4.69/test/pytest_suite/tests/t/modules/test_dir.py | 112 apache2-2.4.69/test/pytest_suite/tests/t/modules/test_directorymatch.py | 23 apache2-2.4.69/test/pytest_suite/tests/t/modules/test_env.py | 34 apache2-2.4.69/test/pytest_suite/tests/t/modules/test_expires.py | 231 + apache2-2.4.69/test/pytest_suite/tests/t/modules/test_ext_filter.py | 61 apache2-2.4.69/test/pytest_suite/tests/t/modules/test_filter.py | 27 apache2-2.4.69/test/pytest_suite/tests/t/modules/test_headers.py | 234 + apache2-2.4.69/test/pytest_suite/tests/t/modules/test_heartbeat.py | 44 apache2-2.4.69/test/pytest_suite/tests/t/modules/test_include.py | 331 ++ apache2-2.4.69/test/pytest_suite/tests/t/modules/test_info.py | 41 apache2-2.4.69/test/pytest_suite/tests/t/modules/test_ldap.py | 48 apache2-2.4.69/test/pytest_suite/tests/t/modules/test_lua.py | 70 apache2-2.4.69/test/pytest_suite/tests/t/modules/test_negotiation.py | 155 apache2-2.4.69/test/pytest_suite/tests/t/modules/test_proxy.py | 257 + apache2-2.4.69/test/pytest_suite/tests/t/modules/test_proxy_balancer.py | 90 apache2-2.4.69/test/pytest_suite/tests/t/modules/test_proxy_beacon.py | 141 apache2-2.4.69/test/pytest_suite/tests/t/modules/test_proxy_fcgi.py | 340 ++ apache2-2.4.69/test/pytest_suite/tests/t/modules/test_proxy_html.py | 237 + apache2-2.4.69/test/pytest_suite/tests/t/modules/test_proxy_websockets.py | 30 apache2-2.4.69/test/pytest_suite/tests/t/modules/test_proxy_websockets_ssl.py | 26 apache2-2.4.69/test/pytest_suite/tests/t/modules/test_ratelimit.py | 31 apache2-2.4.69/test/pytest_suite/tests/t/modules/test_reflector.py | 55 apache2-2.4.69/test/pytest_suite/tests/t/modules/test_remoteip.py | 100 apache2-2.4.69/test/pytest_suite/tests/t/modules/test_rewrite.py | 316 + apache2-2.4.69/test/pytest_suite/tests/t/modules/test_sed.py | 41 apache2-2.4.69/test/pytest_suite/tests/t/modules/test_session.py | 198 + apache2-2.4.69/test/pytest_suite/tests/t/modules/test_session_cookie.py | 33 apache2-2.4.69/test/pytest_suite/tests/t/modules/test_setenvif.py | 171 + apache2-2.4.69/test/pytest_suite/tests/t/modules/test_speling.py | 61 apache2-2.4.69/test/pytest_suite/tests/t/modules/test_status.py | 21 apache2-2.4.69/test/pytest_suite/tests/t/modules/test_substitute.py | 194 + apache2-2.4.69/test/pytest_suite/tests/t/modules/test_unique_id.py | 25 apache2-2.4.69/test/pytest_suite/tests/t/modules/test_usertrack.py | 68 apache2-2.4.69/test/pytest_suite/tests/t/modules/test_vhost_alias.py | 103 apache2-2.4.69/test/pytest_suite/tests/t/php/test_add.py | 9 apache2-2.4.69/test/pytest_suite/tests/t/php/test_all.py | 12 apache2-2.4.69/test/pytest_suite/tests/t/php/test_arg.py | 21 apache2-2.4.69/test/pytest_suite/tests/t/php/test_cfunctions.py | 15 apache2-2.4.69/test/pytest_suite/tests/t/php/test_classes.py | 19 apache2-2.4.69/test/pytest_suite/tests/t/php/test_dirname.py | 25 apache2-2.4.69/test/pytest_suite/tests/t/php/test_divide.py | 9 apache2-2.4.69/test/pytest_suite/tests/t/php/test_do_while.py | 9 apache2-2.4.69/test/pytest_suite/tests/t/php/test_else.py | 9 apache2-2.4.69/test/pytest_suite/tests/t/php/test_elseif.py | 9 apache2-2.4.69/test/pytest_suite/tests/t/php/test_eval.py | 9 apache2-2.4.69/test/pytest_suite/tests/t/php/test_eval3.py | 11 apache2-2.4.69/test/pytest_suite/tests/t/php/test_eval4.py | 11 apache2-2.4.69/test/pytest_suite/tests/t/php/test_func1.py | 9 apache2-2.4.69/test/pytest_suite/tests/t/php/test_func5.py | 31 apache2-2.4.69/test/pytest_suite/tests/t/php/test_func6.py | 9 apache2-2.4.69/test/pytest_suite/tests/t/php/test_getenv.py | 12 apache2-2.4.69/test/pytest_suite/tests/t/php/test_getlastmod.py | 18 apache2-2.4.69/test/pytest_suite/tests/t/php/test_globals.py | 9 apache2-2.4.69/test/pytest_suite/tests/t/php/test_hello.py | 9 apache2-2.4.69/test/pytest_suite/tests/t/php/test_if.py | 9 apache2-2.4.69/test/pytest_suite/tests/t/php/test_ifmodsince.py | 27 apache2-2.4.69/test/pytest_suite/tests/t/php/test_include.py | 9 apache2-2.4.69/test/pytest_suite/tests/t/php/test_inheritance.py | 11 apache2-2.4.69/test/pytest_suite/tests/t/php/test_lookup.py | 19 apache2-2.4.69/test/pytest_suite/tests/t/php/test_multiply.py | 9 apache2-2.4.69/test/pytest_suite/tests/t/php/test_nestif.py | 9 apache2-2.4.69/test/pytest_suite/tests/t/php/test_ops.py | 9 apache2-2.4.69/test/pytest_suite/tests/t/php/test_pathinfo.py | 29 apache2-2.4.69/test/pytest_suite/tests/t/php/test_recurse.py | 9 apache2-2.4.69/test/pytest_suite/tests/t/php/test_regression.py | 15 apache2-2.4.69/test/pytest_suite/tests/t/php/test_regression2.py | 15 apache2-2.4.69/test/pytest_suite/tests/t/php/test_status.py | 19 apache2-2.4.69/test/pytest_suite/tests/t/php/test_strings.py | 20 apache2-2.4.69/test/pytest_suite/tests/t/php/test_strings2.py | 11 apache2-2.4.69/test/pytest_suite/tests/t/php/test_strings3.py | 29 apache2-2.4.69/test/pytest_suite/tests/t/php/test_strings4.py | 19 apache2-2.4.69/test/pytest_suite/tests/t/php/test_subtract.py | 9 apache2-2.4.69/test/pytest_suite/tests/t/php/test_switch.py | 9 apache2-2.4.69/test/pytest_suite/tests/t/php/test_switch2.py | 11 apache2-2.4.69/test/pytest_suite/tests/t/php/test_switch3.py | 11 apache2-2.4.69/test/pytest_suite/tests/t/php/test_switch4.py | 11 apache2-2.4.69/test/pytest_suite/tests/t/php/test_umask.py | 15 apache2-2.4.69/test/pytest_suite/tests/t/php/test_var1.py | 32 apache2-2.4.69/test/pytest_suite/tests/t/php/test_var2.py | 32 apache2-2.4.69/test/pytest_suite/tests/t/php/test_var3.py | 33 apache2-2.4.69/test/pytest_suite/tests/t/php/test_virtual.py | 23 apache2-2.4.69/test/pytest_suite/tests/t/php/test_while.py | 9 apache2-2.4.69/test/pytest_suite/tests/t/protocol/test_echo.py | 50 apache2-2.4.69/test/pytest_suite/tests/t/protocol/test_nntp_like.py | 71 apache2-2.4.69/test/pytest_suite/tests/t/security/test_CVE_2003_0542.py | 15 apache2-2.4.69/test/pytest_suite/tests/t/security/test_CVE_2004_0747.py | 28 apache2-2.4.69/test/pytest_suite/tests/t/security/test_CVE_2004_0811.py | 28 apache2-2.4.69/test/pytest_suite/tests/t/security/test_CVE_2004_0940.py | 13 apache2-2.4.69/test/pytest_suite/tests/t/security/test_CVE_2004_0942.py | 39 apache2-2.4.69/test/pytest_suite/tests/t/security/test_CVE_2005_2491.py | 24 apache2-2.4.69/test/pytest_suite/tests/t/security/test_CVE_2005_2700.py | 20 apache2-2.4.69/test/pytest_suite/tests/t/security/test_CVE_2005_3352.py | 32 apache2-2.4.69/test/pytest_suite/tests/t/security/test_CVE_2005_3357.py | 28 apache2-2.4.69/test/pytest_suite/tests/t/security/test_CVE_2006_5752.py | 20 apache2-2.4.69/test/pytest_suite/tests/t/security/test_CVE_2007_5000.py | 24 apache2-2.4.69/test/pytest_suite/tests/t/security/test_CVE_2007_6388.py | 17 apache2-2.4.69/test/pytest_suite/tests/t/security/test_CVE_2008_2364.py | 42 apache2-2.4.69/test/pytest_suite/tests/t/security/test_CVE_2009_1195.py | 161 + apache2-2.4.69/test/pytest_suite/tests/t/security/test_CVE_2009_1890.py | 63 apache2-2.4.69/test/pytest_suite/tests/t/security/test_CVE_2009_3555.py | 41 apache2-2.4.69/test/pytest_suite/tests/t/security/test_CVE_2011_3368.py | 39 apache2-2.4.69/test/pytest_suite/tests/t/security/test_CVE_2011_3368_rewrite.py | 38 apache2-2.4.69/test/pytest_suite/tests/t/security/test_CVE_2017_7659.py | 40 apache2-2.4.69/test/pytest_suite/tests/t/security/test_CVE_2019_0215.py | 26 apache2-2.4.69/test/pytest_suite/tests/t/security/test_CVE_2020_1927.py | 49 apache2-2.4.69/test/pytest_suite/tests/t/ssl/conftest.py | 74 apache2-2.4.69/test/pytest_suite/tests/t/ssl/test_all.py | 13 apache2-2.4.69/test/pytest_suite/tests/t/ssl/test_basicauth.py | 43 apache2-2.4.69/test/pytest_suite/tests/t/ssl/test_env.py | 92 apache2-2.4.69/test/pytest_suite/tests/t/ssl/test_extlookup.py | 28 apache2-2.4.69/test/pytest_suite/tests/t/ssl/test_fakeauth.py | 34 apache2-2.4.69/test/pytest_suite/tests/t/ssl/test_headers.py | 40 apache2-2.4.69/test/pytest_suite/tests/t/ssl/test_http.py | 34 apache2-2.4.69/test/pytest_suite/tests/t/ssl/test_ocsp.py | 54 apache2-2.4.69/test/pytest_suite/tests/t/ssl/test_pha.py | 41 apache2-2.4.69/test/pytest_suite/tests/t/ssl/test_pr12355.py | 54 apache2-2.4.69/test/pytest_suite/tests/t/ssl/test_pr43738.py | 26 apache2-2.4.69/test/pytest_suite/tests/t/ssl/test_proxy.py | 91 apache2-2.4.69/test/pytest_suite/tests/t/ssl/test_require.py | 38 apache2-2.4.69/test/pytest_suite/tests/t/ssl/test_v2.py | 22 apache2-2.4.69/test/pytest_suite/tests/t/ssl/test_varlookup.py | 177 + apache2-2.4.69/test/pytest_suite/tests/t/ssl/test_verify.py | 19 apache2-2.4.69/test/pytest_suite/tests/test_config_parity.py | 958 ++++++ apache2-2.4.69/test/pytest_suite/tests/test_framework_smoke.py | 59 apache2-2.4.69/test/pytest_suite/uv.lock | 156 apache2-2.4.69/test/run-all-tests.sh | 196 + apache2-2.4.69/test/run-one-test.sh | 109 apache2-2.4.69/test/travis_before_linux.sh | 15 apache2-2.4.69/test/travis_run_linux.sh | 5 1330 files changed, 37468 insertions(+), 6014 deletions(-) dpkg-source: warning: cannot verify inline signature for /srv/release.debian.org/tmp/tmpte_g3ic4/apache2_2.4.68-1~deb13u1.dsc: no acceptable signature found dpkg-source: warning: cannot verify inline signature for /srv/release.debian.org/tmp/tmpte_g3ic4/apache2_2.4.69-1~deb13u1.dsc: no acceptable signature found diff -Nru apache2-2.4.68/.github/workflows/linux.yml apache2-2.4.69/.github/workflows/linux.yml --- apache2-2.4.68/.github/workflows/linux.yml 2026-06-04 08:50:44.000000000 +0000 +++ apache2-2.4.69/.github/workflows/linux.yml 2026-08-10 13:52:29.000000000 +0000 @@ -7,6 +7,8 @@ - 'docs/**' - STATUS - CHANGES + - README* + - '**.md' - changes-entries/* tags: - 2.* @@ -16,13 +18,19 @@ - 'docs/**' - STATUS - CHANGES + - README* + - '**.md' - changes-entries/* env: MARGS: "-j2" CFLAGS: "-g" # This will need updating as the ubuntu-latest image changes: - PHP_FPM: "/usr/sbin/php-fpm8.1" + PHP_FPM: "/usr/sbin/php-fpm8.3" + +concurrency: + group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} + cancel-in-progress: ${{ github.event_name == 'pull_request' }} jobs: build: @@ -80,18 +88,18 @@ TEST_INSTALL=1 SKIP_TESTING=1 # ------------------------------------------------------------------------- - - name: All-modules, APR 1.7.4, APR-util 1.6.3 + - name: All-modules, APR 1.7.6, APR-util 1.6.5 config: --enable-mods-shared=reallyall env: | - APR_VERSION=1.7.4 - APU_VERSION=1.6.3 + APR_VERSION=1.7.6 + APU_VERSION=1.6.5 APU_CONFIG="--with-crypto --with-ldap" # ------------------------------------------------------------------------- - - name: All-modules, APR 1.7.4, APR-util 1.6.3 (no APU crypto/LDAP) + - name: APR 1.7.6, APR-util 1.6.5 (no APU crypto/LDAP) config: --enable-mods-shared=reallyall env: | - APR_VERSION=1.7.4 - APU_VERSION=1.6.3 + APR_VERSION=1.7.6 + APU_VERSION=1.6.5 APU_CONFIG="--without-crypto --without-ldap" # ------------------------------------------------------------------------- - name: APR 1.8.x, APR-util 1.7.x @@ -161,11 +169,11 @@ TESTS="t/modules/dav.t" pkgs: litmus # ------------------------------------------------------------------------- - - name: APR 1.7.4, APR-util 1.6.3, LDAP + - name: APR 1.7.6, APR-util 1.6.3, LDAP config: --enable-mods-shared=reallyall pkgs: ldap-utils env: | - APR_VERSION=1.7.4 + APR_VERSION=1.7.6 APU_VERSION=1.6.3 APU_CONFIG="--with-crypto --with-ldap" TEST_MALLOC=1 @@ -218,8 +226,8 @@ config: --enable-mods-shared=reallyall --with-mpm=event --enable-mpms-shared=all pkgs: curl python3-pytest nghttp2-client python3-cryptography python3-requests python3-multipart python3-filelock python3-websockets env: | - APR_VERSION=1.7.4 - APU_VERSION=1.6.3 + APR_VERSION=1.7.6 + APU_VERSION=1.6.5 APU_CONFIG="--with-crypto" NO_TEST_FRAMEWORK=1 TEST_INSTALL=1 @@ -235,7 +243,7 @@ # python3-pytest nghttp2-client python3-cryptography python3-requests python3-filelock # golang-1.17 curl # env: | - # APR_VERSION=1.7.4 + # APR_VERSION=1.7.6 # APU_VERSION=1.6.3 # APU_CONFIG="--with-crypto" # GOROOT=/usr/lib/go-1.17 @@ -258,15 +266,15 @@ # NOTEST_CFLAGS="-Werror" # CC="gcc -m32" # APR_VERSION=1.7.3 - # APU_VERSION=1.6.3 + # APU_VERSION=1.6.5 # APU_CONFIG="--with-crypto --with-ldap" # ------------------------------------------------------------------------- - name: OpenSSL 3.0 LTS config: --enable-mods-shared=most --enable-maintainer-mode --disable-md --disable-http2 --disable-ldap --disable-crypto env: | - TEST_OPENSSL3=3.0.18 + TEST_OPENSSL3=3.0.21 APR_VERSION=1.7.6 - APU_VERSION=1.6.3 + APU_VERSION=1.6.5 APU_CONFIG="--without-crypto" pkgs: subversion # ------------------------------------------------------------------------- @@ -274,19 +282,19 @@ config: --enable-mods-shared=most --enable-maintainer-mode --disable-md --disable-http2 --disable-ldap --disable-crypto notest-cflags: -Werror -O2 env: | - TEST_OPENSSL3=3.4.4 + TEST_OPENSSL3=3.4.6 APR_VERSION=1.7.6 - APU_VERSION=1.6.3 + APU_VERSION=1.6.5 APU_CONFIG="--without-crypto" pkgs: subversion # ------------------------------------------------------------------------- - name: OpenSSL 3.4 no-engine config: --enable-mods-shared=most --enable-maintainer-mode --disable-md --disable-http2 --disable-ldap --disable-crypto env: | - TEST_OPENSSL3=3.4.4 + TEST_OPENSSL3=3.4.6 OPENSSL_CONFIG=no-engine APR_VERSION=1.7.6 - APU_VERSION=1.6.3 + APU_VERSION=1.6.5 APU_CONFIG="--without-crypto" pkgs: subversion # ------------------------------------------------------------------------- @@ -294,10 +302,10 @@ config: --enable-mods-shared=most --enable-maintainer-mode --disable-md --disable-http2 --disable-ldap --disable-crypto notest-cflags: -Werror -O2 env: | - TEST_OPENSSL3=3.5.5 + TEST_OPENSSL3=3.5.7 OPENSSL_CONFIG=no-engine APR_VERSION=1.7.6 - APU_VERSION=1.6.3 + APU_VERSION=1.6.5 APU_CONFIG="--without-crypto" pkgs: subversion # ------------------------------------------------------------------------- @@ -305,10 +313,10 @@ config: --enable-mods-shared=most --enable-maintainer-mode --disable-md --disable-http2 --disable-ldap --disable-crypto notest-cflags: -Werror -O2 env: | - TEST_OPENSSL3=4.0.0 + TEST_OPENSSL3=4.0.1 OPENSSL_CONFIG= APR_VERSION=1.7.6 - APU_VERSION=1.6.3 + APU_VERSION=1.6.5 APU_CONFIG="--without-crypto" pkgs: subversion # ------------------------------------------------------------------------- @@ -336,6 +344,12 @@ libnghttp2-dev libjansson-dev libpcre2-dev gdb perl-doc libsasl2-dev ${{ matrix.pkgs }} - uses: actions/checkout@v4 + - uses: actions/checkout@v6 + with: + repository: apache/httpd-tests + path: test/perl-framework + submodules: true + if: ${{ ! ( env.SKIP_TESTING || env.NO_TEST_FRAMEWORK ) }} - name: Cache installed libraries uses: actions/cache@v4 with: diff -Nru apache2-2.4.68/.github/workflows/windows.yml apache2-2.4.69/.github/workflows/windows.yml --- apache2-2.4.68/.github/workflows/windows.yml 2026-06-03 16:47:03.000000000 +0000 +++ apache2-2.4.69/.github/workflows/windows.yml 2026-07-17 08:23:35.000000000 +0000 @@ -7,6 +7,8 @@ - 'docs/**' - STATUS - CHANGES + - README* + - '**.md' - changes-entries/* tags: - 2.* @@ -16,8 +18,14 @@ - 'docs/**' - STATUS - CHANGES + - README* + - '**.md' - changes-entries/* +concurrency: + group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} + cancel-in-progress: ${{ github.event_name == 'pull_request' }} + jobs: build: strategy: diff -Nru apache2-2.4.68/CHANGES apache2-2.4.69/CHANGES --- apache2-2.4.68/CHANGES 2026-06-04 08:50:44.000000000 +0000 +++ apache2-2.4.69/CHANGES 2026-09-28 13:14:11.000000000 +0000 @@ -1,6 +1,170 @@ -*- coding: utf-8 -*- +Changes with Apache 2.4.69 + + *) Fix the tar icon in the documentation so that its background is + transparent. PR 70238. [Jeffery To ] + + *) mod_ssl: Fix OpenSSL compatibility macros for X509_get0_notBefore, + X509_get0_notAfter, and X509_get0_serialNumber with OpenSSL < 1.1. + PR 70205. [Craig Lorentzen ] + + *) mod_cgid, mod_ssl, mod_md: Various hardening fixes. [Various authors] + + *) mod_md: MDServerStatus is now disabled by default. [Joe Orton] + + *) mod_auth_digest: Fix compatibility with expression-based AuthName. + PR 59039. [Eric Covener] + + *) mod_auth_digest.c: Drop RFC 2069 support; rewrite shared memory + handling and client nonce handling; "authdigest-opaque" mutex is + now longer needed. [Joe Orton] + + *) mod_lbmethod_heartbeat: Use safe integer parsing with range + validation, replacing atoi(). [Sayed Kaif ] + + *) core: Reject control characters in the reason phrase of interim + responses. Only accept space as status-code separator. [Joe Orton] + + *) mod_substitute: Fix SubstituteMaxLineLength to reject values too + large for the K/M/G suffix. [Joe Orton] + + *) mod_substitute: Fix crash or misbehaviour when loading a Substitute + directive with a missing closing delimiter. [Joe Orton] + + *) mod_dir: Fix a crash in fixup_dir for a request not mapped to any type. + PR68527. [Eric Covener] + + *) mod_http2: Do not drop an in-flight response when a client sends a + graceful GOAWAY (error code 0) while streams it opened are still + being processed. The session now drains open streams instead of + tearing down immediately, which async MPMs hit far more than event. + Fixes a silently dropped response; RFC 9113 compliant. [Jim Jagielski] + + *) mod_md: OpenSSL 4 compatibility. + + *) pytest_suite: Port of the old PERL test framework to Python + and pytest. Now included in the source tree under ./test + [Jim Jagielski] + Changes with Apache 2.4.68 + *) SECURITY: CVE-2026-49975: mod_http2 denial of service + (cve.mitre.org) + Memory Allocation with Excessive Size Value vulnerability in + Apache HTTP Server's mod_http leads to denial of service via + malicious HTTP requests. + This issue affects Apache HTTP Server: from 2.4.17 through + 2.4.67. + Credits: Quang Luong of Calif.IO in collaboration with OpenAI + Codex + + *) SECURITY: CVE-2026-48913: mod_http2 memory corruption when file + handles exhausted (cve.mitre.org) + Use After Free vulnerability in Apache HTTP Server module + mod_http2 when file handles are already exhausted. + This issue affects Apache HTTP Server: from 2.4.55 through + 2.4.67. + Credits: Sam Lovejoy, IBM X-Force Offensive Research (XOR) + + *) SECURITY: CVE-2026-44631: Heap Underflow in `ap_regname` via + Signed Char Overflow (cve.mitre.org) + Buffer Underwrite vulnerability in Apache HTTP Server on crafted + regular expressions in the configuration. + This issue affects Apache HTTP Server: from 2.4.0 through 2.4.67. + Users are recommended to upgrade to version 2.4.68, which fixes + the issue. + Credits: Zhenpeng (Leo) Lin at depthfirst + + *) SECURITY: CVE-2026-44186: Loop in `proxy_ftp_handler` in + mod_proxy_ftp (cve.mitre.org) + Loop with Unreachable Exit Condition ('Infinite Loop') + vulnerability in the mod_proxy_ftp module in Apache HTTP Server + with an attacker controlled backend FTP server. + This issue affects undefined: from 2.4.0 through 2.4.67. + Users are recommended to upgrade to version 2.4.68, which fixes + the issue. + Credits: Zhenpeng (Leo) Lin at depthfirst + + *) SECURITY: CVE-2026-44185: Stack Buffer Over-Read in mod_ssl OCSP + `send_request` (cve.mitre.org) + Buffer Over-read vulnerability in Apache HTTP Server via + outbound OCSP requests to an attacker controlled OCSP server + This issue affects Apache HTTP Server: from 2.4.0 through 2.4.67. + Users are recommended to upgrade to version 2.4.68, which fixes + the issue. + Credits: Zhenpeng (Leo) Lin at depthfirst + + *) SECURITY: CVE-2026-44119: escalation of privilege through + expressions in .htaccess in multiple modules (cve.mitre.org) + Improper Privilege Management vulnerability in Apache HTTP + Server 2.4.67 and earlier allows local .htaccess authors to read + files with the privileges of the httpd user. + This issue affects Apache HTTP Server: from through 2.4.67. + Users are recommended to upgrade to version 2.4.68, which fixes + the issue. + Credits: Lucian Nitescu + + *) SECURITY: CVE-2026-43951: OOB Read in `merge_response_headers` + can cause crash (cve.mitre.org) + Out-of-bounds Read vulnerability in Apache HTTP Server with + mod_headers and mod_mime and multiple response languages. + This issue affects Apache HTTP Server: from 2.4.0 through 2.4.67. + Credits: Zhenpeng (Leo) Lin at depthfirst + + *) SECURITY: CVE-2026-42536: mod_xml2enc heap overflow + (cve.mitre.org) + Heap-based Buffer Overflow vulnerability in Apache HTTP Server + with mod_xml2enc, xml2StartParse, and untrusted content + This issue affects Apache HTTP Server: from 2.4.0 through 2.4.67. + Users are recommended to upgrade to version 2.4.68, which fixes + the issue. + Credits: Zhenpeng (Leo) Lin at depthfirst + + *) SECURITY: CVE-2026-42535: mod_dav_fs protected directory access + (cve.mitre.org) + A path handling issue in mod_dav_fs in Apache 2.4.67 and + earlier allows a WebDAV content author to directly manipulate + trusted DAV property databases, potentially causing child + process crashes. + Users are recommended to upgrade to version 2.4.68, which fixes + this issue. + Credits: Zhenpeng (Leo) Lin at depthfirst + + *) SECURITY: CVE-2026-34356: ProxyPassReverseCookieMap buffer + overflow (cve.mitre.org) + Heap-based Buffer Overflow vulnerability in Apache HTTP Server + with malicious backend servers and ProxyPassReverseCookie* + This issue affects Apache HTTP Server: from 2.4.0 through 2.4.67. + Users are recommended to upgrade to version 2.4.68, which fixes + the issue. + Credits: Arkadi Vainbrand + + *) SECURITY: CVE-2026-34355: mod_proxy_html buffer overflow + (cve.mitre.org) + A buffer overflow in mod_proxy_html in Apache HTTP Server 2.4.67 + and earlier allows an attack by an untrusted backend. + Users are recommended to upgrade to version 2.4.68, which fixes + this issue. + Credits: Elhanan Haenel + + *) SECURITY: CVE-2026-29170: mod_proxy_ftp XSS (cve.mitre.org) + A cross-site scripting vulnerability exists in mod_proxy_ftp's + HTML directory list generation in Apache HTTP Server 2.4.67 and + earlier when listing FTP directory contents either via forward + or reverse proxy configuration. + Users are recommended to upgrade to version 2.4.68, which fixes + this issue. + Credits: Pavel Kohout, Aisle Research, Aisle.com + + *) SECURITY: CVE-2026-29167: mod_ldap per-dir use-after-free + (cve.mitre.org) + Use After Free vulnerability in Apache HTTP Server with mod_ldap + in per-directory configuration + This issue affects Apache HTTP Server: from 2.4.0 through 2.4.67. + Users are recommended to upgrade to version 2.4.68, which fixes + the issue. + Credits: Pavel Kohout, Aisle Research, Aisle.com + *) mod_ssl, ab: Add support for OpenSSL 4.0. [Joe Orton] *) mod_ssl: Add SerialNumber as a recognized attribute type for SSL diff -Nru apache2-2.4.68/CMakeLists.txt apache2-2.4.69/CMakeLists.txt --- apache2-2.4.68/CMakeLists.txt 2026-06-03 16:47:03.000000000 +0000 +++ apache2-2.4.69/CMakeLists.txt 2026-09-28 16:36:07.000000000 +0000 @@ -408,6 +408,66 @@ "modules/test/mod_optional_hook_import+O+example optional hook importer" ) +IF(BUILD_TEST_MODULES) + LIST(APPEND MODULE_LIST + "test/pyhttpd/mod_aptest/mod_aptest+A+Test module. Useful only for developers and testing purposes." + "test/modules/http1/mod_h1test/mod_h1test+A+Http/1 Test module. Useful only for developers and testing purposes." + "test/modules/http2/mod_h2test/mod_h2test+A+Http/2 Test module. Useful only for developers and testing purposes." + "test/pytest_suite/c-modules/authany/mod_authany+A+Test module. Useful only for developers and testing purposes." + "test/pytest_suite/c-modules/client_add_filter/mod_client_add_filter+A+Test module. Useful only for developers and testing purposes." + "test/pytest_suite/c-modules/eat_post/mod_eat_post+A+Test module. Useful only for developers and testing purposes." + "test/pytest_suite/c-modules/echo_post/mod_echo_post+A+Test module. Useful only for developers and testing purposes." + "test/pytest_suite/c-modules/echo_post_chunk/mod_echo_post_chunk+A+Test module. Useful only for developers and testing purposes." + "test/pytest_suite/c-modules/fold/mod_fold+A+Test module. Useful only for developers and testing purposes." + "test/pytest_suite/c-modules/input_body_filter/mod_input_body_filter+A+Test module. Useful only for developers and testing purposes." + "test/pytest_suite/c-modules/list_modules/mod_list_modules+A+Test module. Useful only for developers and testing purposes." + "test/pytest_suite/c-modules/memory_track/mod_memory_track+A+Test module. Useful only for developers and testing purposes." + "test/pytest_suite/c-modules/nntp_like/mod_nntp_like+A+Test module. Useful only for developers and testing purposes." + "test/pytest_suite/c-modules/random_chunk/mod_random_chunk+A+Test module. Useful only for developers and testing purposes." + "test/pytest_suite/c-modules/test_apr_uri/mod_test_apr_uri+A+Test module. Useful only for developers and testing purposes." + "test/pytest_suite/c-modules/test_pass_brigade/mod_test_pass_brigade+A+Test module. Useful only for developers and testing purposes." + "test/pytest_suite/c-modules/test_rwrite/mod_test_rwrite+A+Test module. Useful only for developers and testing purposes." + "test/pytest_suite/c-modules/test_session/mod_test_session+A+Test module. Useful only for developers and testing purposes." + "test/pytest_suite/c-modules/test_utilities/mod_test_utilities+A+Test module. Useful only for developers and testing purposes." + ) +ENDIF() +IF(BUILD_TEST_MODULES AND OPENSSL_FOUND) + LIST(APPEND MODULE_LIST + "test/pytest_suite/c-modules/test_ssl/mod_test_ssl+A+Test module. Useful only for developers and testing purposes." + ) +ENDIF() + +IF(BUILD_TEST_MODULES) + SET(PYTEST_CMODULES_DIR "${CMAKE_SOURCE_DIR}/test/pytest_suite/c-modules") + IF(WIN32) + file(GLOB _python_hints "$ENV{LOCALAPPDATA}/Programs/Python/Python3*" + "$ENV{PROGRAMFILES}/Python3*") + find_program(PYTHON_EXE NAMES py python3 python + HINTS ${_python_hints} + ) + IF(NOT PYTHON_EXE) + MESSAGE(FATAL_ERROR "Python interpreter not found, required for BUILD_TEST_MODULES") + ENDIF() + execute_process( + COMMAND "${PYTHON_EXE}" "${CMAKE_SOURCE_DIR}/test/pytest_suite/gen_test_header.py" "${PYTEST_CMODULES_DIR}/apache_httpd_test.h" + RESULT_VARIABLE _gen_header_rc + ) + IF(NOT _gen_header_rc EQUAL 0) + MESSAGE(FATAL_ERROR "Failed to generate apache_httpd_test.h (exit ${_gen_header_rc})") + ENDIF() + ENDIF() + SET(PYTEST_CMODULE_DEFINES APACHE2 APACHE2_4) + FOREACH(pytest_mod + mod_authany mod_client_add_filter mod_eat_post mod_echo_post + mod_echo_post_chunk mod_fold mod_input_body_filter mod_list_modules + mod_memory_track mod_nntp_like mod_random_chunk mod_test_apr_uri + mod_test_pass_brigade mod_test_rwrite mod_test_session + mod_test_utilities mod_test_ssl) + SET(${pytest_mod}_extra_defines ${PYTEST_CMODULE_DEFINES}) + ENDFOREACH() + SET(mod_test_session_extra_libs mod_session) +ENDIF() + # Track which modules actually built have APIs to link against. SET(installed_mod_libs_exps) @@ -722,6 +782,12 @@ ${PCRE_INCLUDE_DIR} ) +IF(BUILD_TEST_MODULES) + LIST(APPEND HTTPD_INCLUDE_DIRECTORIES + ${CMAKE_CURRENT_SOURCE_DIR}/test/pytest_suite/c-modules + ) +ENDIF() + # The .h files we install from outside the main include directory # largely parallel the include directories above. SET(other_installed_h @@ -842,8 +908,8 @@ # Extra defines? SET(mod_extra_defines "${mod_name}_extra_defines") - IF(NOT ${${mod_extra_defines}} STREQUAL "") - SET_TARGET_PROPERTIES(${mod_name} PROPERTIES COMPILE_DEFINITIONS ${${mod_extra_defines}}) + IF(NOT "${${mod_extra_defines}}" STREQUAL "") + TARGET_COMPILE_DEFINITIONS(${mod_name} PRIVATE ${${mod_extra_defines}}) ENDIF() # Extra includes? diff -Nru apache2-2.4.68/README apache2-2.4.69/README --- apache2-2.4.68/README 2023-02-16 19:25:27.000000000 +0000 +++ apache2-2.4.69/README 2026-06-17 21:04:00.000000000 +0000 @@ -4,13 +4,13 @@ What is it? ----------- - The Apache HTTP Server is a powerful and flexible HTTP/1.1 compliant - web server. Originally designed as a replacement for the NCSA HTTP - Server, it has grown to be the most popular web server on the - Internet. As a project of the Apache Software Foundation, the - developers aim to collaboratively develop and maintain a robust, - commercial-grade, standards-based server with freely available - source code. + The Apache HTTP Server is a powerful, flexible, HTTP/1.1 and HTTP/2 + compliant, and widely deployed web server. Originally designed as a + replacement for the NCSA HTTP Server, it has been in continuous + development since 1995 and remains one of the foundational projects + of the Apache Software Foundation. The developers aim to + collaboratively develop and maintain a robust, commercial-grade, + standards-based server with freely available source code. The Latest Version ------------------ @@ -95,7 +95,7 @@ o If you want to be informed about new code releases, bug fixes, security fixes, general news and information about the Apache server - subscribe to the apache-announce mailing list as described under + subscribe to the announce@httpd.apache.org mailing list as described under o If you want freely available support for running Apache please see the diff -Nru apache2-2.4.68/README.CHANGES apache2-2.4.69/README.CHANGES --- apache2-2.4.68/README.CHANGES 2023-07-17 20:33:05.000000000 +0000 +++ apache2-2.4.69/README.CHANGES 2026-07-17 08:23:35.000000000 +0000 @@ -1,19 +1,49 @@ -Changes can be documented in two ways now: Either by directly editing the -CHANGES file like it was done until now or by storing each entry for the -CHANGES file correctly formated in a separate file in the changes-entries + +# Documenting User-Visible Changes + +User-visible changes can be documented in two ways: either by directly +editing the CHANGES file, or by storing each entry for the CHANGES +file correctly formatted in a separate file in the changes-entries directory. -The benefit of the single file per change approach is that it eases backporting -the CHANGES entry to a stable branch as it avoids the frequent merge conflicts -as changes are merged in different orders or not at all in the stable branch. +This covers any developer-visible changes such as a new module API, +but e.g. code cleanups which don't have any externally-visible effect +do not need to be documented in CHANGES. + +Changes should be documented by creating a file in changes-entries/ +with the .txt suffix, using the following template: + +``` + *) mod_foo: Fix bug in blah blah. + PR . [Name of Person
, + Other Person , ...] +``` + +Changes to server/*.[ch] use a "core:" prefix rather than "mod_foo:". + +The description should be as concise as possible, a maximum of three +lines but ideally one or two. The credit for the change goes to the +original patch author(s) and will usually match the "Submitted by: " +tag in the commit message. For current committers, use only the +name and not the e-mail address in the credit. Replace "@" in any +e-mail addresses with a space to prevent address harvesting. + +Use a Bugzilla bug number in the PR reference. + +# Generating CHANGES from changes-entries/*.txt + +The benefit of the single file per change approach is that it eases +backporting the CHANGES entry to a stable branch as it avoids the +frequent merge conflicts as changes are merged in different orders or +not at all in the stable branch. -In order to keep the current CHANGES file for the users as is there is a new +In order to keep the current CHANGES file for the users as-is, there is a new make target called 'update-changes'. It merges all change files in the changes-entries directory to the top of the CHANGES file and removes them afterwards. -This make target can be seen in a similar way as the scripts to update the -documentation files from its xml sources. It can be executed immediately -after the new file in the changes-entries directory has been created / merged -and committed or it can be executed later. It should be executed at least before -a release gets tagged. +This make target can be seen in a similar way as the scripts to update +the documentation files from the XML sources. It can be executed +immediately after the new file in the changes-entries directory has +been created / merged and committed or it can be executed later. It +should be executed at least before a release gets tagged. diff -Nru apache2-2.4.68/build/ltmain.sh apache2-2.4.69/build/ltmain.sh --- apache2-2.4.68/build/ltmain.sh 2026-06-05 12:52:41.000000000 +0000 +++ apache2-2.4.69/build/ltmain.sh 2026-09-29 12:44:23.000000000 +0000 @@ -2,11 +2,11 @@ ## DO NOT EDIT - This file generated from ./build-aux/ltmain.in ## by inline-source v2019-02-19.15 -# libtool (GNU libtool) 2.5.4 +# libtool (GNU libtool) 2.6.2 # Provide generalized library-building support services. # Written by Gordon Matzigkeit , 1996 -# Copyright (C) 1996-2019, 2021-2024 Free Software Foundation, Inc. +# Copyright (C) 1996-2019, 2021-2026 Free Software Foundation, Inc. # This is free software; see the source for copying conditions. There is NO # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. @@ -26,13 +26,13 @@ # General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program. If not, see . +# along with this program. If not, see . PROGRAM=libtool PACKAGE=libtool -VERSION=2.5.4 -package_revision=2.5.4 +VERSION=2.6.2 +package_revision=2.6.2 ## ------ ## @@ -2215,7 +2215,7 @@ # End: # Set a version string. -scriptversion='(GNU libtool) 2.5.4' +scriptversion='(GNU libtool) 2.6.2' # func_version # ------------ @@ -2299,6 +2299,22 @@ func_usage_message $ECHO "$long_help_message +If a TAG is supplied, it must use one of the tag names below: + + Tag Name Language Name + CC C + CXX C++ + OBJC Objective-C + OBJCXX Objective-C++ + GCJ Java + F77 Fortran 77 + FC Fortran + GO Go + RC Windows Resource + +If you do not see a tag name associated with your programming language, then +you are using a compiler that $progname does not support. + MODE must be one of the following: clean remove files from the build directory @@ -2721,9 +2737,9 @@ test : = "$debug_cmd" || func_append preserve_args " --debug" case $host_os in - # Solaris2 added to fix http://debbugs.gnu.org/cgi/bugreport.cgi?bug=16452 - # see also: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59788 - cygwin* | mingw* | windows* | pw32* | cegcc* | solaris2* | os2*) + # Solaris2 added to fix https://debbugs.gnu.org/cgi/bugreport.cgi?bug=16452 + # see also: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=59788 + cygwin* | mingw* | windows* | pw32* | cegcc* | solaris2* | os2* | *linux*) # don't eliminate duplications in $postdeps and $predeps opt_duplicate_compiler_generated_deps=: ;; @@ -2999,8 +3015,9 @@ # was found and let the user know that the "--tag" command # line option must be used. if test -z "$tagname"; then - func_echo "unable to infer tagged configuration" - func_fatal_error "specify a tag with '--tag'" + func_echo "unable to infer tagged configuration with compiler." + func_echo "Possible use of unsupported compiler." + func_fatal_error "specify a tag with '--tag'. For more information, try '$progname --help'." # else # func_verbose "using $tagname tagged configuration" fi @@ -3162,13 +3179,41 @@ { $debug_cmd - # awkward: cmd appends spaces to result + # Compatibility for original MSYS + if test "Xone" = "X$lt_cv_cmd_slashes"; then + func_convert_core_msys_to_w32_result=`( cmd /c echo "$1" ) 2>/dev/null | + $SED -e 's/[ ]*$//' -e "$sed_naive_backslashify"` + else # Assume 'lt_cv_cmd_slashes = "two"' func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null | $SED -e 's/[ ]*$//' -e "$sed_naive_backslashify"` + fi + if test "$?" -ne 0; then + # on failure, ensure result is empty + func_convert_core_msys_to_w32_result= + fi } #end: func_convert_core_msys_to_w32 +# func_convert_core_msys_to_w32_with_cygpath ARG +# Convert file name or path ARG with cygpath from MSYS format to w32 +# format. Return result in func_convert_core_msys_to_w32_with_cygpath_result. +func_convert_core_msys_to_w32_with_cygpath () +{ + $debug_cmd + + # Since MSYS2 is packaged with cygpath, call cygpath in $PATH; no need + # to use LT_CYGPATH in this case. + func_convert_core_msys_to_w32_with_cygpath_result=`cygpath "$@" 2>/dev/null | + $SED -e 's/[ ]*$//' -e "$sed_naive_backslashify"` + if test "$?" -ne 0; then + # on failure, ensure result is empty + func_convert_core_msys_to_w32_with_cygpath_result= + fi +} +#end: func_convert_core_msys_to_w32_with_cygpath + + # func_convert_file_check ARG1 ARG2 # Verify that ARG1 (a file name in $build format) was converted to $host # format in ARG2. Otherwise, emit an error message, but continue (resetting @@ -3303,8 +3348,13 @@ func_to_host_file_result=$1 if test -n "$1"; then - func_convert_core_msys_to_w32 "$1" - func_to_host_file_result=$func_convert_core_msys_to_w32_result + if test "Xyes" = "X$cygpath_installed"; then + func_convert_core_msys_to_w32_with_cygpath -w "$1" + func_to_host_file_result=$func_convert_core_msys_to_w32_with_cygpath_result + else + func_convert_core_msys_to_w32 "$1" + func_to_host_file_result=$func_convert_core_msys_to_w32_result + fi fi func_convert_file_check "$1" "$func_to_host_file_result" } @@ -3355,8 +3405,13 @@ func_to_host_file_result=$1 if test -n "$1"; then - func_convert_core_msys_to_w32 "$1" - func_cygpath -u "$func_convert_core_msys_to_w32_result" + if test "Xyes" = "X$cygpath_installed"; then + func_convert_core_msys_to_w32_with_cygpath -w "$1" + func_cygpath -u "$func_convert_core_msys_to_w32_with_cygpath_result" + else + func_convert_core_msys_to_w32 "$1" + func_cygpath -u "$func_convert_core_msys_to_w32_result" + fi func_to_host_file_result=$func_cygpath_result fi func_convert_file_check "$1" "$func_to_host_file_result" @@ -3457,8 +3512,13 @@ # and winepath ignores them completely. func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result - func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" - func_to_host_path_result=$func_convert_core_msys_to_w32_result + if test "Xyes" = "X$cygpath_installed"; then + func_convert_core_msys_to_w32_with_cygpath -w -p "$func_to_host_path_tmp1" + func_to_host_path_result=$func_convert_core_msys_to_w32_with_cygpath_result + else + func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" + func_to_host_path_result=$func_convert_core_msys_to_w32_result + fi func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" @@ -3522,8 +3582,13 @@ # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result - func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" - func_cygpath -u -p "$func_convert_core_msys_to_w32_result" + if test "Xyes" = "X$cygpath_installed"; then + func_convert_core_msys_to_w32_with_cygpath -w -p "$func_to_host_path_tmp1" + func_cygpath -u -p "$func_convert_core_msys_to_w32_with_cygpath_result" + else + func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" + func_cygpath -u -p "$func_convert_core_msys_to_w32_result" + fi func_to_host_path_result=$func_cygpath_result func_convert_path_check : : \ "$func_to_host_path_tmp1" "$func_to_host_path_result" @@ -4455,6 +4520,14 @@ fi echo + echo "After a 'make install' for many GNU/Linux systems, 'ldconfig LIBDIR'" + echo "may need to be executed to help locate newly installed libraries," + echo "but you should consult with a system administrator before updating" + echo "the shared library cache as this should be done with great care" + echo "and consideration. (See the 'Platform-specific configuration notes'" + echo "section of the documentation for more information.)" + echo + echo "See any operating system documentation about shared libraries for" case $host in solaris2.[6789]|solaris2.1[0-9]) @@ -4529,7 +4602,7 @@ prev=$arg fi ;; - -g | -m | -o) + -g | -m | -o | -S | -t) prev=$arg ;; -s) @@ -5045,7 +5118,7 @@ # Prepare the list of exported symbols if test -z "$export_symbols"; then - export_symbols=$output_objdir/$outputname.exp + export_symbols=$output_objdir/$outputname.expsym $opt_dry_run || { $RM $export_symbols eval "$SED -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' @@ -5058,8 +5131,8 @@ } else $opt_dry_run || { - eval "$SED -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' - eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' + eval "$SED -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.expsym"' + eval '$GREP -f "$output_objdir/$outputname.expsym" < "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' case $host in *cygwin* | *mingw* | *windows* | *cegcc* ) @@ -5582,7 +5655,7 @@ $RM -rf unfat-$$ cd "$darwin_orig_dir" else - cd $darwin_orig_dir + cd "$darwin_orig_dir" func_extract_an_archive "$my_xdir" "$my_xabs" fi # $darwin_arches } # !$opt_dry_run @@ -5979,6 +6052,7 @@ # define getcwd _getcwd # define putenv _putenv # define S_IXUSR _S_IEXEC +# define MSVC_ISDIR(m)(((m) & S_IFMT) == S_IFDIR) #elif defined __MINGW32__ # define setmode _setmode # define stat _stat @@ -6374,8 +6448,13 @@ if ((!path) || (!*path)) return 0; - if ((stat (path, &st) >= 0) +#ifdef _MSC_VER + if ((stat (path, &st) >= 0) && !MSVC_ISDIR (st.st_mode) + && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) +#else + if ((stat (path, &st) >= 0) && !S_ISDIR (st.st_mode) && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) +#endif return 1; else return 0; @@ -6909,7 +6988,15 @@ # even a static library is built. For now, we need to specify # -no-undefined on the libtool link line when we can be certain # that all symbols are satisfied, otherwise we get a static library. - allow_undefined=yes + case $host in + *-*-os2*) + # OS/2 does not allow undefined symbols at all when linking a dll. + allow_undefined=no + ;; + *) + allow_undefined=yes + ;; + esac ;; *) allow_undefined=yes @@ -6981,7 +7068,7 @@ build_old_libs=no break ;; - -all-static | -static | -static-libtool-libs) + -all-static | -static | -static-libtool-libs | --static | -Bstatic) case $arg in -all-static) if test yes = "$build_libtool_libs" && test -z "$link_static_flag"; then @@ -6998,7 +7085,7 @@ fi prefer_static_libs=built ;; - -static-libtool-libs) + -static-libtool-libs | --static | -Bstatic) if test -z "$pic_flag" && test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi @@ -7015,6 +7102,16 @@ # See if our shared archives depend on static archives. test -n "$old_archive_from_new_cmds" && build_old_libs=yes + # make sure "-Xpreprocessor -fopenmp" is processed as one token + case $@ in + *-Xpreprocessor\ -fopenmp*) + fopenmp_match="-Xpreprocessor -fopenmp" + ;; + *) + fopenmp_match=-fopenmp + ;; + esac + # Go through the arguments, transforming them on the way. while test "$#" -gt 0; do arg=$1 @@ -7280,8 +7377,13 @@ continue ;; xlinker) - func_append linker_flags " $qarg" - func_append compiler_flags " $wl$qarg" + func_append linker_flags "$qarg," + # Args in the var 'compiler_flags' causes warnings in MSVC + func_cc_basename "$CC" + case $func_cc_basename_result in + cl|cl.exe) ;; + *) func_append compiler_flags " $wl$qarg" ;; + esac prev= func_append compile_command " $wl$qarg" func_append finalize_command " $wl$qarg" @@ -7499,7 +7601,7 @@ continue ;; -mt|-mthreads|-kthread|-Kthread|-pthreads|--thread-safe \ - |-threads|-fopenmp|-fopenmp=*|-openmp|-mp|-xopenmp|-omp|-qsmp=*) + |-threads|$fopenmp_match|fopenmp=*|-openmp|-mp|-xopenmp|-omp|-qsmp=*) func_append compiler_flags " $arg" func_append compile_command " $arg" func_append finalize_command " $arg" @@ -7525,8 +7627,6 @@ *-*-cygwin* | *-*-mingw* | *-*-windows* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) # The PATH hackery in wrapper scripts is required on Windows # and Darwin in order for the loader to find any dlls it needs. - func_warning "'-no-install' is ignored for $host" - func_warning "assuming '-no-fast-install' instead" fast_install=no ;; *) no_install=yes ;; @@ -7648,6 +7748,11 @@ arg=$func_stripname_result ;; + -Wl,--as-needed|-Wl,--no-as-needed) + deplibs="$deplibs $arg" + continue + ;; + -Wl,*) func_stripname '-Wl,' '' "$arg" args=$func_stripname_result @@ -7657,8 +7762,13 @@ IFS=$save_ifs func_quote_arg pretty "$flag" func_append arg " $wl$func_quote_arg_result" - func_append compiler_flags " $wl$func_quote_arg_result" - func_append linker_flags " $func_quote_arg_result" + # Args in the var 'compiler_flags' causes warnings in MSVC + func_cc_basename "$CC" + case $func_cc_basename_result in + cl|cl.exe) ;; + *) func_append compiler_flags " $wl$func_quote_arg_result" ;; + esac + func_append linker_flags "$func_quote_arg_result," done IFS=$save_ifs func_stripname ' ' '' "$arg" @@ -7704,6 +7814,7 @@ # @file GCC response files # -tp=* Portland pgcc target processor selection # --sysroot=* for sysroot support + # --target=* for target architecture support # -O*, -g*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization # -specs=* GCC specs files # -stdlib=* select c++ std lib with clang @@ -7717,19 +7828,20 @@ # -fuse-ld=* Linker select flags for GCC # -static-* direct GCC to link specific libraries statically # -fcilkplus Cilk Plus language extension features for C/C++ + # -resource-dir=* for selecting compiler resource directory with clang # -rtlib=* select c runtime lib with clang # --unwindlib=* select unwinder library with clang # -f{file|debug|macro|profile}-prefix-map=* needed for lto linking # -Wa,* Pass flags directly to the assembler - # -Werror, -Werror=* Report (specified) warnings as errors + # -W* Warnings, needed for lto -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ - -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \ + -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*|--target=*| \ -O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*|-no-canonical-prefixes| \ - -stdlib=*|-rtlib=*|--unwindlib=*| \ + -stdlib=*|-resource-dir=*|-rtlib=*|--unwindlib=*| \ -specs=*|-fsanitize=*|-fno-sanitize*|-shared-libsan|-static-libsan| \ -ffile-prefix-map=*|-fdebug-prefix-map=*|-fmacro-prefix-map=*|-fprofile-prefix-map=*| \ -fdiagnostics-color*|-frecord-gcc-switches| \ - -fuse-ld=*|-static-*|-fcilkplus|-Wa,*|-Werror|-Werror=*) + -fuse-ld=*|-static-*|-fcilkplus|-W*) func_quote_arg pretty "$arg" arg=$func_quote_arg_result func_append compile_command " $arg" @@ -7851,10 +7963,9 @@ fi ;; - *.$libext) - # An archive. + *.$libext|*.so) + # An archive or an explicit shared library. func_append deplibs " $arg" - func_append old_deplibs " $arg" continue ;; @@ -8070,8 +8181,17 @@ lib= found=false case $deplib in + -Wl,--as-needed|-Wl,--no-as-needed) + if test prog,link = "$linkmode,$pass"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + fi + continue + ;; -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ - |-threads|-fopenmp|-fopenmp=*|-openmp|-mp|-xopenmp|-omp|-qsmp=*) + |-threads|$fopenmp_match|fopenmp=*|-openmp|-mp|-xopenmp|-omp|-qsmp=*) if test prog,link = "$linkmode,$pass"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" @@ -8221,15 +8341,43 @@ func_resolve_sysroot "$deplib" lib=$func_resolve_sysroot_result ;; + *.so) + case $linkmode,$pass in + lib,*) + deplibs="$deplib $deplibs" + newdependency_libs="$deplib $newdependency_libs" + ;; + prog,link) + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + ;; + prog,*) + deplibs="$deplib $deplibs" + ;; + *) + func_warning "'$deplib' is ignored for archives/objects" + ;; + esac + continue + ;; *.$libext) if test conv = "$pass"; then deplibs="$deplib $deplibs" continue + else + func_append old_deplibs " $deplib" fi case $linkmode in lib) - # Linking convenience modules into shared libraries is allowed, - # but linking other static libraries is non-portable. + # Linking convenience modules and compiler provided static libraries + # into shared libraries is allowed, but linking other static + # libraries is non-portable. + case $deplib in + */libgcc*.$libext | */libclang_rt*.$libext) + deplibs="$deplib $deplibs" + continue + ;; + esac case " $dlpreconveniencelibs " in *" $deplib "*) ;; *) @@ -8248,7 +8396,9 @@ ;; esac if $valid_a_lib; then - func_warning "Linking the shared library $output against the static library $deplib is not portable!" + if test yes != "$build_old_libs"; then + func_warning "Linking the shared library $output against the static library $deplib is not portable!" + fi deplibs="$deplib $deplibs" else func_warning "Trying to link with static lib archive $deplib." @@ -8350,19 +8500,19 @@ # It is a libtool convenience library, so add in its objects. func_append convenience " $ladir/$objdir/$old_library" func_append old_convenience " $ladir/$objdir/$old_library" + tmp_libs= + for deplib in $dependency_libs; do + deplibs="$deplib $deplibs" + if $opt_preserve_dup_deps; then + case "$tmp_libs " in + *" $deplib "*) func_append specialdeplibs " $deplib" ;; + esac + fi + func_append tmp_libs " $deplib" + done elif test prog != "$linkmode" && test lib != "$linkmode"; then func_fatal_error "'$lib' is not a convenience library" fi - tmp_libs= - for deplib in $dependency_libs; do - deplibs="$deplib $deplibs" - if $opt_preserve_dup_deps; then - case "$tmp_libs " in - *" $deplib "*) func_append specialdeplibs " $deplib" ;; - esac - fi - func_append tmp_libs " $deplib" - done continue fi # $pass = conv @@ -9187,7 +9337,6 @@ # Now set the variables for building old libraries. build_libtool_libs=no oldlibs=$output - func_append objs "$old_deplibs" ;; lib) @@ -9312,29 +9461,21 @@ esac # Check that each of the things are valid numbers. - case $current in - 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; - *) - func_error "CURRENT '$current' must be a nonnegative integer" + if echo "$current" | $EGREP -v '(^0$)|(^[1-9]$)|(^[1-9][0-9]{1,4}$)' > /dev/null; then + func_error "CURRENT '$current' must be a nonnegative integer and <= 5 digits" func_fatal_error "'$vinfo' is not valid version information" - ;; - esac + fi - case $revision in - 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; - *) - func_error "REVISION '$revision' must be a nonnegative integer" + # Currently limiting revision length by Unix epoch time in nanoseconds. + if echo "$revision" | $EGREP -v '(^0$)|(^[1-9]$)|(^[1-9][0-9]{1,18}$)' > /dev/null; then + func_error "REVISION '$revision' must be a nonnegative integer and <= 19 digits" func_fatal_error "'$vinfo' is not valid version information" - ;; - esac + fi - case $age in - 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; - *) - func_error "AGE '$age' must be a nonnegative integer" + if echo "$age" | $EGREP -v '(^0$)|(^[1-9]$)|(^[1-9][0-9]{1,4}$)' > /dev/null; then + func_error "AGE '$age' must be a nonnegative integer and <= 5 digits" func_fatal_error "'$vinfo' is not valid version information" - ;; - esac + fi if test "$age" -gt "$current"; then func_error "AGE '$age' is greater than the current interface number '$current'" @@ -10022,7 +10163,7 @@ if test -z "$export_symbols"; then if test yes = "$always_export_symbols" || test -n "$export_symbols_regex"; then func_verbose "generating symbol list for '$libname.la'" - export_symbols=$output_objdir/$libname.exp + export_symbols=$output_objdir/$libname.expsym $opt_dry_run || $RM $export_symbols cmds=$export_symbols_cmds save_ifs=$IFS; IFS='~' @@ -10288,7 +10429,7 @@ ${skipped_export-false} && { func_verbose "generating symbol list for '$libname.la'" - export_symbols=$output_objdir/$libname.exp + export_symbols=$output_objdir/$libname.expsym $opt_dry_run || $RM $export_symbols libobjs=$output # Append the command to create the export file. @@ -10918,7 +11059,13 @@ # compiling, it, like the target executable, must be # executed on the $host or under an emulation environment. $opt_dry_run || { - $LTCC $LTCFLAGS -o $cwrapper $cwrappersource + func_cc_basename "$LTCC" + case $func_cc_basename_result in + cl|cl.exe) + $LTCC $LTCFLAGS -Fe$cwrapper $cwrappersource ;; + *) + $LTCC $LTCFLAGS -o $cwrapper $cwrappersource ;; + esac $STRIP $cwrapper } @@ -10963,7 +11110,11 @@ build_libtool_libs=no ;; *) - oldobjs="$old_deplibs $non_pic_objects" + oldobjs=$non_pic_objects + # This is not correct to add old_deplibs creating an archive + # so append them only when creating an executable or a shared + # library. + test yes != "$build_old_libs" && oldobjs="$oldobjs $old_deplibs" $preload && test -f "$symfileobj" \ && func_append oldobjs " $symfileobj" addlibs=$old_convenience @@ -11224,6 +11375,20 @@ done dlprefiles=$newdlprefiles fi + + # Forward old library dependencies only when no shared + # library is being built. When building the shared library, + # the linker uses $deplibs to link the archives into it, but + # then we don't want to add it as transitive dependency. + if test -z "$library_names"; then + for lib in $old_deplibs; do + case $lib in + [\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;; + *) abs=`pwd`"/$lib" ;; + esac + func_append dependency_libs " $abs" + done + fi $RM $output # place dlname in correct position for cygwin # In fact, it would be nice if we could use this code for all target diff -Nru apache2-2.4.68/configure apache2-2.4.69/configure --- apache2-2.4.68/configure 2026-06-05 12:52:43.000000000 +0000 +++ apache2-2.4.69/configure 2026-09-29 12:44:25.000000000 +0000 @@ -13590,9 +13590,33 @@ CPPFLAGS=$apr_old_cppflags - if test $ac_cv_define_APR_HAS_RANDOM = "no"; then - echo "You need APR random support to use mod_auth_digest." - echo "Look at APR configure options --with-egd and --with-devrandom." + +apr_old_cppflags=$CPPFLAGS +CPPFLAGS="$CPPFLAGS $INCLUDES" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#if APR_HAS_SHARED_MEMORY +YES_IS_DEFINED +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP_TRADITIONAL "YES_IS_DEFINED" >/dev/null 2>&1 +then : + ac_cv_define_APR_HAS_SHARED_MEMORY=yes +else case e in #( + e) ac_cv_define_APR_HAS_SHARED_MEMORY=no ;; +esac +fi +rm -rf conftest* + +CPPFLAGS=$apr_old_cppflags + + if test "${ac_cv_define_APR_HAS_RANDOM}X${ac_cv_define_APR_HAS_SHARED_MEMORY}" != "yesXyes"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: mod_auth_digest requires APR with random and shared memory support" >&5 +printf '%s\n' "$as_me: mod_auth_digest requires APR with random and shared memory support" >&6;} enable_auth_digest="no" fi diff -Nru apache2-2.4.68/debian/changelog apache2-2.4.69/debian/changelog --- apache2-2.4.68/debian/changelog 2026-06-11 18:28:43.000000000 +0000 +++ apache2-2.4.69/debian/changelog 2026-10-01 16:54:08.000000000 +0000 @@ -1,3 +1,15 @@ +apache2 (2.4.69-1~deb13u1) trixie-security; urgency=medium + + * New upstream version (Closes: CVE-2026-42356, CVE-2026-42528, + CVE-2026-46729, CVE-2026-47360, CVE-2026-48005, CVE-2026-56153, + CVE-2026-56154, CVE-2026-56449, CVE-2026-57941, CVE-2026-58415, + CVE-2026-59797, CVE-2026-63045, CVE-2026-63292, CVE-2026-63686, + CVE-2026-63718, CVE-2026-73636, CVE-2026-73637, CVE-2026-79768, + CVE-2026-93546) + * Unfuzz patches + + -- Xavier Guimard Thu, 01 Oct 2026 18:54:08 +0200 + apache2 (2.4.68-1~deb13u1) trixie; urgency=medium * New upstream version (Closes: CVE-2026-29167, CVE-2026-29170, diff -Nru apache2-2.4.68/debian/patches/fhs_compliance.patch apache2-2.4.69/debian/patches/fhs_compliance.patch --- apache2-2.4.68/debian/patches/fhs_compliance.patch 2026-06-11 18:28:43.000000000 +0000 +++ apache2-2.4.69/debian/patches/fhs_compliance.patch 2026-10-01 16:53:51.000000000 +0000 @@ -6,7 +6,7 @@ --- a/configure +++ b/configure -@@ -42455,16 +42455,17 @@ +@@ -42479,16 +42479,17 @@ cat >>confdefs.h <<_ACEOF #define HTTPD_ROOT "${ap_prefix}" Binary files /srv/release.debian.org/tmp/xDpnWyGgcR/apache2-2.4.68/docs/icons/tar.gif and /srv/release.debian.org/tmp/IjglZ5i9op/apache2-2.4.69/docs/icons/tar.gif differ Binary files /srv/release.debian.org/tmp/xDpnWyGgcR/apache2-2.4.68/docs/icons/tar.png and /srv/release.debian.org/tmp/IjglZ5i9op/apache2-2.4.69/docs/icons/tar.png differ diff -Nru apache2-2.4.68/docs/manual/convenience.map apache2-2.4.69/docs/manual/convenience.map --- apache2-2.4.68/docs/manual/convenience.map 2025-07-23 12:06:16.000000000 +0000 +++ apache2-2.4.69/docs/manual/convenience.map 2026-06-08 12:25:13.000000000 +0000 @@ -265,6 +265,7 @@ h2maxdataframelen mod/mod_http2.html#h2maxdataframelen h2maxheaderblocklen mod/mod_http2.html#h2maxheaderblocklen h2maxsessionstreams mod/mod_http2.html#h2maxsessionstreams +h2maxstreamerrors mod/mod_http2.html#h2maxstreamerrors h2maxworkeridleseconds mod/mod_http2.html#h2maxworkeridleseconds h2maxworkers mod/mod_http2.html#h2maxworkers h2minworkers mod/mod_http2.html#h2minworkers @@ -353,6 +354,7 @@ listen mod/mpm_common.html#listen listenbacklog mod/mpm_common.html#listenbacklog listencoresbucketsratio mod/mpm_common.html#listencoresbucketsratio +listentcpdeferaccept mod/mpm_common.html#listentcpdeferaccept loadfile mod/mod_so.html#loadfile loadmodule mod/mod_so.html#loadmodule location mod/core.html#location @@ -395,6 +397,7 @@ maxthreads mod/mpm_netware.html#maxthreads mdactivationdelay mod/mod_md.html#mdactivationdelay mdbaseserver mod/mod_md.html#mdbaseserver +mdcacertificatefile mod/mod_md.html#mdcacertificatefile mdcachallenges mod/mod_md.html#mdcachallenges mdcertificateagreement mod/mod_md.html#mdcertificateagreement mdcertificateauthority mod/mod_md.html#mdcertificateauthority @@ -411,6 +414,7 @@ mddrivemode mod/mod_md.html#mddrivemode mdexternalaccountbinding mod/mod_md.html#mdexternalaccountbinding mdhttpproxy mod/mod_md.html#mdhttpproxy +mdinitialdelay mod/mod_md.html#mdinitialdelay mdmatchnames mod/mod_md.html#mdmatchnames mdmember mod/mod_md.html#mdmember mdmembers mod/mod_md.html#mdmembers @@ -424,6 +428,7 @@ mdprofile mod/mod_md.html#mdprofile mdprofilemandatory mod/mod_md.html#mdprofilemandatory mdrenewmode mod/mod_md.html#mdrenewmode +mdrenewviaari mod/mod_md.html#mdrenewviaari mdrenewwindow mod/mod_md.html#mdrenewwindow mdrequirehttps mod/mod_md.html#mdrequirehttps mdretrydelay mod/mod_md.html#mdretrydelay @@ -690,6 +695,7 @@ sslusestapling mod/mod_ssl.html#sslusestapling sslverifyclient mod/mod_ssl.html#sslverifyclient sslverifydepth mod/mod_ssl.html#sslverifydepth +sslvhostsnipolicy mod/mod_ssl.html#sslvhostsnipolicy startservers mod/mpm_common.html#startservers startthreads mod/mpm_common.html#startthreads stricthostcheck mod/core.html#stricthostcheck diff -Nru apache2-2.4.68/docs/manual/env.html.en apache2-2.4.69/docs/manual/env.html.en --- apache2-2.4.68/docs/manual/env.html.en 2026-06-05 12:03:44.000000000 +0000 +++ apache2-2.4.69/docs/manual/env.html.en 2026-06-16 16:46:03.000000000 +0000 @@ -271,9 +271,11 @@

CGI environment variables

-

The CGI specification (RFC 3875) defines a number of environment - variables that expand on those defined by the HTTP spec. - These have been adopted more broadly, and are a standard +

The CGI specification (RFC 3875) defines a + number of meta-variables, many of which derive their values from + HTTP request headers. Apache httpd makes these available as + environment variables to CGI scripts and other request-processing + mechanisms. These have been adopted more broadly, and are a standard part of passing information between the browser and the server, and between processes on the server side. Here we discuss a few of these. For the complete list of request diff -Nru apache2-2.4.68/docs/manual/env.html.fr.utf8 apache2-2.4.69/docs/manual/env.html.fr.utf8 --- apache2-2.4.68/docs/manual/env.html.fr.utf8 2026-05-31 13:57:20.000000000 +0000 +++ apache2-2.4.69/docs/manual/env.html.fr.utf8 2026-07-01 15:26:27.000000000 +0000 @@ -29,8 +29,6 @@  ko  |  tr 

-
Cette traduction peut être périmée. Vérifiez la version - anglaise pour les changements récents.

Deux types de variables d'environnement affectent le serveur HTTP Apache.

@@ -174,6 +172,18 @@ +
+

Alternative moderne : les expressions

+

De nombreux exemples d’utilisation qui nécessitaient auparavant de + définir et tester des variables d’environnement — par exemple les en-têtes + conditionnels, le contrôle d’accès et la journalisation — peuvent + maintenant être traités de manière plus directe en utilisant les + expressions <If> avec la + fonction reqenv. Voir Les expressions + dans le serveur HTTP Apache pour la syntaxe des expressions et la + liste complète des variables disponibles.

+
+

Scripts CGI

@@ -214,6 +224,10 @@ caractéristiques du client. Par exemple, vous pouvez utiliser ces directives pour interdire l'accès depuis un navigateur particulier (User-Agent). + Pour des conditions plus complexes, Require + expr fournit une alternative qui permet d’évaluer des + variables d’environnement en utilisant la fonction reqenv + en combinaison avec d’autres propriétés de requête.

@@ -278,12 +292,20 @@

La spécification sur les CGIs (RFC 3875) définit un - certain nombre de variables d'environnement qui s'ajoutent à celles définies - par la spécification de HTTP. Elles ont été plus largement adoptées et + certain nombre de méta-variables dont beaucoup sont affectées de leur valeur + à partir des en-têtes HTTP. Apache httpd les met à disposition en tant que + variables d’environnement pour les scripts CGI et d’autres mécanismes de + traitement des requêtes. Elles ont été plus largement adoptées et constituent une méthode standard pour transmettre des informations entre le navigateur et le serveur, et entre les processus au sein du serveur. Nous en - décrivons quelques unes ici ; consultez la spécification de CGI pour - plus de détails.

+ décrivons quelques unes ici. Pour une liste complète des variables de + requête disponibles dans les expressions (parmi + lesquelles REQUEST_URI, REMOTE_ADDR, + SERVER_NAME et de nombreuses autres), voir le document de + référence variables dans les expressions.

+ +

Consultez la spécification CGI pour plus de détails à propos des + métavariables CGI standard.

QUERY_STRING

@@ -439,8 +461,6 @@

suppress-error-charset

-

Disponible dans les versions postérieures à 2.0.54

-

Quand Apache httpd génère une redirection en réponse à une requête client, la réponse inclut un texte destiné à être affiché au cas où le client ne suivrait pas, ou ne pourrait pas suivre automatiquement la redirection. diff -Nru apache2-2.4.68/docs/manual/glossary.html.fr.utf8 apache2-2.4.69/docs/manual/glossary.html.fr.utf8 --- apache2-2.4.68/docs/manual/glossary.html.fr.utf8 2026-05-31 13:57:20.000000000 +0000 +++ apache2-2.4.69/docs/manual/glossary.html.fr.utf8 2026-06-08 12:25:13.000000000 +0000 @@ -31,8 +31,6 @@  ko  |  tr 

-
Cette traduction peut être périmée. Vérifiez la version - anglaise pour les changements récents.

Ce glossaire définit la terminologie courante relative au serveur HTTP Apache en particulier, et aux serveurs web en général. Vous trouverez plus @@ -149,6 +147,14 @@ pour décrire les directives de httpd +

Contexte de répertoire
+
Une directive est dans un contexte + de répertoire quand elle apparaît dans une section <Directory>, <DirectoryMatch>, <Files> ou <FilesMatch> dans les fichiers de configuration + principaux, ou dans un fichier .htaccess. Dans un contexte de + répertoire, les directives ne s’appliquent qu’au répertoire (ou à l’ensemble + de fichiers) auquel elles sont associées.
Voir Sections de configuration +
+
Contrôle d'accès (Access Control)
La restriction d'accès à des zones du réseau. Habituellement @@ -337,8 +343,8 @@ (Uniform Resource Identifier) (URI)
Une chaîne de caractères compacte servant à identifier une ressource - abstraite ou physique. Elle est formellement définie par la RFC 2396. Les URIs - utilisées sur le world-wide web sont souvent appelées URLs. + abstraite ou physique. Elle est formellement définie par la RFC 2396. + Les URIs utilisées sur le world-wide web sont souvent appelées URLs.
@@ -359,7 +365,7 @@ Cette fonctionnalité a été ajoutée à SSL lorsque sont apparues les extensions TLS, RFC 3546.
Voir
la FAQ SSL - et la RFC 3546 + et la RFC 3546 @@ -369,14 +375,12 @@ (Common Gateway Interface) (CGI)
La définition standard d'une interface entre un serveur web et un - programme externe pour permettre à ce dernier de traiter des requêtes. - Il existe une RFC - informationnelle qui en couvre les spécificités.
- Voir : Contenu dynamique avec CGI + programme externe pour permettre à ce dernier de traiter des requêtes. Il + existe une RFC informationnelle (RFC 3875) qui en couvre les + spécificités.
Voir : Contenu dynamique avec + CGI
- -
Localisation de Ressource Uniformisée (Uniform Resource Locator) @@ -492,6 +496,7 @@ Voir : Page de manuel : apxs +
Plein Texte (Plaintext)
Le texte non chiffré.
@@ -502,8 +507,7 @@ (HTTP)
Le protocole de transmission standard utilisé sur le World Wide Web. httpd implémente la version 1.1 du protocole, référencée comme HTTP/1.1 et - définie par la - RFC 2616. + définie par la RFC 2616.
Résumé de message diff -Nru apache2-2.4.68/docs/manual/howto/access.html.en apache2-2.4.69/docs/manual/howto/access.html.en --- apache2-2.4.68/docs/manual/howto/access.html.en 2026-05-31 13:57:20.000000000 +0000 +++ apache2-2.4.69/docs/manual/howto/access.html.en 2026-06-19 14:27:29.000000000 +0000 @@ -51,7 +51,7 @@

Access control by host

If you wish to restrict access to portions of your site based on the - host address of your visitors, this is most easily done using + host address of your visitors, use mod_authz_host.

@@ -72,9 +72,10 @@

The usage of these directives is:

-
Require host address
-Require ip ip.address
- +
Require host address
+Require ip ip.address
+
+

In the first form, address is a fully qualified domain name (or a partial domain name); you may provide multiple @@ -84,12 +85,26 @@ partial IP address, a network/netmask pair, or a network/nnn CIDR specification. Either IPv4 or IPv6 addresses may be used.

+

Examples of IP address formats

# Full IP address
+Require ip 10.2.3.4
+# Partial IP address (matches any host in the 172.20.0.0/16 range)
+Require ip 172.20
+# Network/netmask pair
+Require ip 192.168.1.0/255.255.255.0
+# Network/CIDR specification
+Require ip 192.168.1.0/24
+# IPv6 address
+Require ip 2001:db8::a00:20ff:fea7:ccea
+# IPv6 with CIDR
+Require ip 2001:db8:1::/48
+
+

See the mod_authz_host documentation for further examples of this syntax.

You can insert not to negate a particular requirement. - Note, that since a not is a negation of a value, it cannot + Since a not is a negation of a value, it cannot be used by itself to allow or deny a request, as not true does not constitute false. Thus, to deny a visit using a negation, the block must have one element that evaluates as true or false. @@ -97,28 +112,28 @@ board, and you want to keep them out, you could do the following:

-
<RequireAll>
-    Require all granted
-    Require not ip 10.252.46.165
+
<RequireAll>
+Require all granted
+Require not ip 10.252.46.165
 </RequireAll>
- +

Visitors coming from that address (10.252.46.165) - will not be able to see the content covered by this directive. If, - instead, you have a machine name, rather than an IP address, you + will not be able to see the content covered by this directive. If, + instead, you have a machine name, rather than an IP address, you can use that.

-
Require not host host.example.com
-    
- +
Require not host host.example.com
+
+

And, if you'd like to block access from an entire domain, - you can specify just part of an address or domain name:

+ you can specify part of an address or domain name:

-
Require not ip 192.168.205
-Require not host phishers.example.com moreidiots.example
+
Require not ip 192.168.205
+Require not host phishers.example.com badguys.example
 Require not host gov
- +

Use of the RequireAll, RequireAny, and RequireNone directives may be used to enforce more complex sets of requirements.

@@ -133,17 +148,17 @@ based on user-agent (the browser type) you might do the following:

-
<If "%{HTTP_USER_AGENT} == 'BadBot'">
-    Require all denied
+
<If "%{HTTP_USER_AGENT} == 'BadBot'">
+Require all denied
 </If>
- +

Using the Require expr syntax, this could also be written as:

-
Require expr %{HTTP_USER_AGENT} != 'BadBot'
- +
Require expr %{HTTP_USER_AGENT} != 'BadBot'
+

Warning:

Access control by User-Agent is an unreliable technique, @@ -166,11 +181,11 @@

For example, if you wish to block access to a resource between 8pm and 7am, you can do this using mod_rewrite.

-
RewriteEngine On
+
RewriteEngine On
 RewriteCond "%{TIME_HOUR}" ">=20" [OR]
 RewriteCond "%{TIME_HOUR}" "<07"
-RewriteRule "^/fridge"     "-" [F]
- +RewriteRule "^/fridge" "-" [F]
+

This will return a 403 Forbidden response for any request after 8pm or before 7am. This technique can be used for any criteria that you wish diff -Nru apache2-2.4.68/docs/manual/howto/access.html.fr.utf8 apache2-2.4.69/docs/manual/howto/access.html.fr.utf8 --- apache2-2.4.68/docs/manual/howto/access.html.fr.utf8 2026-06-05 12:03:44.000000000 +0000 +++ apache2-2.4.69/docs/manual/howto/access.html.fr.utf8 2026-07-01 15:26:27.000000000 +0000 @@ -46,7 +46,7 @@

Plusieurs modules peuvent intervenir dans le contrôle d'accès. Les plus importants sont mod_authz_core et - mod_authz_host. Ce document illustre aussi comment + mod_authz_host. Ce document également aussi comment utiliser mod_rewrite pour le contrôle d'accès.

@@ -55,9 +55,8 @@

Contrôle d'accès en fonction de l'hôte du client

- Si vous souhaitez restreindre l'accès à certaines parties de votre - site web en fonction de l'addresse de l'hôte de vos visiteurs, le - plus simple pour y parvenir consiste à utiliser le module + Si vous souhaitez restreindre l'accès à certaines parties de votre site web + en fonction de l'adresse de l'hôte de vos visiteurs, utilisez le module mod_authz_host.

@@ -77,9 +76,10 @@

Les directives Require s'utilisent comme suit :

-
Require host address
-Require ip ip.address
- +
Require host address
+Require ip ip.address
+
+

Dans la première forme, nom-hôte est un nom de domaine pleinement qualifié (fqdn), ou un nom de domaine partiel ; vous @@ -90,46 +90,60 @@ sous-réseau ou une spécification CIDR de la forme réseau/nnn. Il est possible de spécifier des adresses IPv4 ou IPv6.

+

Exemples de formats d’adresse IP

# Adresse IP complète
+Require ip 10.2.3.4
+# Adresse IP partielle (correspond à tout hôte dans la tranche 172.20.0.0/16)
+Require ip 172.20
+# Paire réseau/masque
+Require ip 192.168.1.0/255.255.255.0
+# Spécification réseau/CIDR
+Require ip 192.168.1.0/24
+# Adresse IPv6
+Require ip 2001:db8::a00:20ff:fea7:ccea
+# Adresse IPv6 avec CIDR
+Require ip 2001:db8:1::/48
+
+

Voir la documentation de mod_authz_host pour d'autres exemples de cette syntaxe.

Vous pouvez insérer le mot-clé not pour inverser un - critère particulier. Notez que le mot not étant la - négation d'une valeur, il ne peut pas être utilisé pour autoriser + critère particulier. Le mot not réalise la + négation sur la valeur, et ne peut pas être utilisé seul pour autoriser ou interdire une requête, car non vrai ne - sera pas interpreté par httpd comme faux. Ainsi, pour interdire la + veut pas ici forcément dire faux. Ainsi, pour interdire la visite d'une page à l'aide d'une négation, le bloc doit contenir un - élément évalué à vrai ou faux. - Par exemple, si quelqu'un est en train d'inonder - votre forum de messages indésirables, vous pouvez ajouter cette ligne pour lui refuser + élément, qui sera évalué à l'une des valeurs vrai ou faux. + Par exemple, si quelqu'un est en train de + spamer votre forum, vous pouvez ajouter cette ligne pour lui refuser l'accès :

-
<RequireAll>
-    Require all granted
-    Require not ip 10.252.46.165
+
<RequireAll>
+Require all granted
+Require not ip 10.252.46.165
 </RequireAll>
- +

Les visiteurs possédant cette adresse (10.252.46.165) ne pourront pas voir le - contenu concerné par cette directive. Si vous voulez interdire + contenu concerné par cette directive. Si vous voulez interdir l'accès à une machine en fonction de son nom, vous pouvez ajouter ceci :

-
Require not host host.example.com
-    
- +
Require not host host.example.com
+
+

Et si vous voulez interdire l'accès à un domaine particulier, vous pouvez spécifier des adresses IP partielles ou des noms de domaine, comme ceci :

-
Require not ip 192.168.205
-Require not host phishers.example.com moreidiots.example
+
Require not ip 192.168.205
+Require not host phishers.example.com badguys.example
 Require not host gov
+
- -

Les directives RequireAll, RequireAny, et RequireNone permettent également de préciser des +

Les directives RequireAll, RequireAny, et RequireNone ouvrent le champ à des critères d'accès plus complexes.

top
@@ -143,17 +157,18 @@ fonction du user-agent (le type de navigateur), vous pouvez spécifier ceci :

-
<If "%{HTTP_USER_AGENT} == 'BadBot'">
-    Require all denied
+
<If "%{HTTP_USER_AGENT} == 'BadBot'">
+Require all denied
 </If>
+
- -

La syntaxe expr de la directive Require permet de réécrire - l'exemple précédent de la manière suivante :

+

En utilisant la syntaxe expr de la directive + Require, l'exemple + précédent peut aussi s'écrire :

-
Require expr %{HTTP_USER_AGENT} != 'BadBot'
- +
Require expr %{HTTP_USER_AGENT} != 'BadBot'
+

Avertissement :

Contrôler l'accès en fonction de l'en-tête @@ -177,18 +192,18 @@

Par exemple, pour bloquer l'accès à une ressources entre 20h et 7h du matin, vous pouvez utiliser mod_rewrite :

-
RewriteEngine On
+
RewriteEngine On
 RewriteCond "%{TIME_HOUR}" ">=20" [OR]
 RewriteCond "%{TIME_HOUR}" "<07"
-RewriteRule "^/fridge"     "-" [F]
- +RewriteRule "^/fridge" "-" [F]
+

Toute requête arrivant après 20h ou avant 7h du matin provoquera l'envoi d'une réponse de type 403 Forbidden. Vous pouvez utiliser cette technique pour vérifier toutes sortes de critères. En outre, si vous le préférez, vous pouvez rediriger ou réécrire la requête.

-

Notez que la directive <If>, introduite à partir de la version 2.4, +

Notez que la directive <If>, ajoutée à partir de la version 2.4, permet de remplacer le module mod_rewrite dans de nombreuses situations où il était traditionnellement utilisé, et il sera probablement préférable pour vous de tenter de l'utiliser diff -Nru apache2-2.4.68/docs/manual/howto/auth.html.en apache2-2.4.69/docs/manual/howto/auth.html.en --- apache2-2.4.68/docs/manual/howto/auth.html.en 2026-05-31 13:57:20.000000000 +0000 +++ apache2-2.4.69/docs/manual/howto/auth.html.en 2026-06-19 14:27:29.000000000 +0000 @@ -145,8 +145,8 @@ an AllowOverride directive like the following:

-
AllowOverride AuthConfig
- +
AllowOverride AuthConfig
+

Or, if you are just going to put the directives directly in your main server configuration file, you will of course need to @@ -218,13 +218,13 @@ placed in httpd.conf inside a <Directory "/usr/local/apache/htdocs/secret"> section.

-
AuthType Basic
+
AuthType Basic
 AuthName "Restricted Files"
 # (Following line optional)
 AuthBasicProvider file
 AuthUserFile "/usr/local/apache/passwd/passwords"
 Require user rbowen
- +

Let's examine each of those directives individually. The AuthType directive selects the method that is used to authenticate the user. The most @@ -310,18 +310,17 @@ (It's the -c that makes it create a new password file).

-

Now, you need to modify your .htaccess file or - <Directory> block - to look like the following:

+

Now, you need to modify your .htaccess file to + look like the following:

-
AuthType Basic
+
AuthType Basic
 AuthName "By Invitation Only"
 # Optional line:
 AuthBasicProvider file
 AuthUserFile "/usr/local/apache/passwd/passwords"
 AuthGroupFile "/usr/local/apache/passwd/groups"
 Require group GroupName
- +

Now, anyone that is listed in the group GroupName, and has an entry in the password file, will be let in, if @@ -331,12 +330,18 @@ specific. Rather than creating a group file, you can just use the following directive:

-
Require valid-user
- +
Require valid-user
+

Using that rather than the Require user rbowen line will allow anyone in that is listed in the password file, - and who correctly enters their password.

+ and who correctly enters their password. You can even emulate + the group behavior here, by just keeping a separate password + file for each group. The advantage of this approach is that + Apache only has to check one file, rather than two. The + disadvantage is that you have to maintain a bunch of password + files, and remember to reference the right one in the + AuthUserFile directive.

top

Possible problems

@@ -372,14 +377,14 @@

To select a dbm file rather than a text file, for example:

-
<Directory "/www/docs/private">
-    AuthName "Private"
-    AuthType Basic
-    AuthBasicProvider dbm
-    AuthDBMUserFile "/www/passwords/passwd.dbm"
-    Require valid-user
+
<Directory "/www/docs/private">
+AuthName "Private"
+AuthType Basic
+AuthBasicProvider dbm
+AuthDBMUserFile "/www/passwords/passwd.dbm"
+Require valid-user
 </Directory>
- +

Other options are available. Consult the mod_authn_dbm documentation for more details.

@@ -394,15 +399,15 @@ scheme that meets your needs. In the following example, both the file and LDAP based authentication providers are being used.

-
<Directory "/www/docs/private">
-    AuthName "Private"
-    AuthType Basic
-    AuthBasicProvider file ldap
-    AuthUserFile "/usr/local/apache/passwd/passwords"
-    AuthLDAPURL ldap://ldaphost/o=yourorg
-    Require valid-user
+
<Directory "/www/docs/private">
+AuthName "Private"
+AuthType Basic
+AuthBasicProvider file ldap
+AuthUserFile "/usr/local/apache/passwd/passwords"
+AuthLDAPURL ldap://ldaphost/o=yourorg
+Require valid-user
 </Directory>
- +

In this example the file provider will attempt to authenticate the user first. If it is unable to authenticate the user, the LDAP @@ -417,17 +422,17 @@ authorization methods can also be used. In this example both file group authorization as well as LDAP group authorization is being used.

-
<Directory "/www/docs/private">
-    AuthName "Private"
-    AuthType Basic
-    AuthBasicProvider file
-    AuthUserFile "/usr/local/apache/passwd/passwords"
-    AuthLDAPURL ldap://ldaphost/o=yourorg
-    AuthGroupFile "/usr/local/apache/passwd/groups"
-    Require group GroupName
-    Require ldap-group cn=mygroup,o=yourorg
+
<Directory "/www/docs/private">
+AuthName "Private"
+AuthType Basic
+AuthBasicProvider file
+AuthUserFile "/usr/local/apache/passwd/passwords"
+AuthLDAPURL ldap://ldaphost/o=yourorg
+AuthGroupFile "/usr/local/apache/passwd/groups"
+Require group GroupName
+Require ldap-group cn=mygroup,o=yourorg
 </Directory>
- +

To take authorization a little further, authorization container directives such as @@ -490,73 +495,15 @@

Using authorization providers for access control

Authentication by username and password is only part of the - story. Frequently you want to let people in based on something - other than who they are. Something such as where they are - coming from.

- -

The authorization providers all, - env, host and ip let you - allow or deny access based on other host based criteria such as - host name or ip address of the machine requesting a - document.

- -

The usage of these providers is specified through the - Require directive. - This directive registers the authorization providers - that will be called during the authorization stage of the request - processing. For example:

- -
Require ip address
-        
- - -

where address is an IP address (or a partial IP - address) or:

- -
Require host domain_name
-        
- - -

where domain_name is a fully qualified domain name - (or a partial domain name); you may provide multiple addresses or - domain names, if desired.

- -

For example, if you have someone spamming your message - board, and you want to keep them out, you could do the - following:

- -
<RequireAll>
-    Require all granted
-    Require not ip 10.252.46.165
-</RequireAll>
- - -

Visitors coming from that address will not be able to see - the content covered by this directive. If, instead, you have a - machine name, rather than an IP address, you can use that.

- -
<RequireAll>
-    Require all granted
-    Require not host host.example.com
-</RequireAll>
- - -

And, if you'd like to block access from an entire domain, - you can specify just part of an address or domain name:

- -
<RequireAll>
-    Require all granted
-    Require not ip 192.168.205
-    Require not host phishers.example.com moreidiots.example
-    Require not host ke
-</RequireAll>
- - -

Using <RequireAll> - with multiple <Require> directives, each negated with not, - will only allow access, if all of negated conditions are true. In other words, - access will be blocked, if any of the negated conditions fails.

+ story. You can also allow or deny access based on other + criteria, such as the client's IP address or hostname, using + the authorization providers all, env, + host, and ip with the + Require + directive.

+

For full details and examples, see the + Access Control howto.

Access Control backwards compatibility

@@ -587,9 +534,8 @@

Authentication Caching

There may be times when authentication puts an unacceptable load on a provider or on your network. This is most likely to affect users - of mod_authn_dbd (or third-party/custom providers). - To deal with this, HTTPD 2.3/2.4 introduces a new caching provider - mod_authn_socache to cache credentials and reduce + of mod_authn_dbd (or third-party/custom providers). The + mod_authn_socache module caches credentials and reduces the load on the origin provider(s).

This may offer a substantial performance boost to some users.

top
diff -Nru apache2-2.4.68/docs/manual/howto/auth.html.fr.utf8 apache2-2.4.69/docs/manual/howto/auth.html.fr.utf8 --- apache2-2.4.68/docs/manual/howto/auth.html.fr.utf8 2026-06-05 12:03:44.000000000 +0000 +++ apache2-2.4.69/docs/manual/howto/auth.html.fr.utf8 2026-07-01 15:26:27.000000000 +0000 @@ -147,11 +147,11 @@ d'une directive AllowOverride du style :

-
AllowOverride AuthConfig
- +
AllowOverride AuthConfig
+

Si vous avez l'intention d'ajouter les directives directement - dans le fichier de configuration principal, vous devrez bien entendu + dans le fichier de configuration principal, vous devrez bien entendu posséder les droits en écriture sur ce fichier.

Vous devrez aussi connaître un tant soit peu la structure des @@ -224,13 +224,13 @@ fichier httpd.conf à l'intérieur d'une section <Directory "/usr/local/apache/htdocs/secret"> :

-
AuthType Basic
+
AuthType Basic
 AuthName "Restricted Files"
-# (Following line optional)
+# (La ligne suivante est facultative)
 AuthBasicProvider file
 AuthUserFile "/usr/local/apache/passwd/passwords"
 Require user rbowen
- +

Examinons ces directives une à une. La directive AuthType définit la méthode utilisée pour authentifier l'utilisateur. La méthode la plus @@ -241,7 +241,8 @@ être utilisée pour la transmission de données hautement sensibles si elle n'est pas associée au module mod_ssl. Apache supporte une autre méthode d'authentification : AuthType - Digest. Cette méthode est implémentée par le module mod_auth_digest et a été conçue pour + Digest. Cette méthode est implémentée + par le module mod_auth_digest et a été conçue pour améliorer la sécurité. Ce but n'a cependant pas été atteint et il est préférable de chiffrer la connexion avec mod_ssl.

@@ -323,16 +324,16 @@ mots de passe)..

Maintenant, vous devez modifier votre fichier - .htaccess ou la section <Directory> comme suit :

+ .htaccess comme suit :

-
AuthType Basic
+
AuthType Basic
 AuthName "By Invitation Only"
-# Optional line:
+# Ligne facultative :
 AuthBasicProvider file
 AuthUserFile "/usr/local/apache/passwd/passwords"
 AuthGroupFile "/usr/local/apache/passwd/groups"
 Require group GroupName
- +

Maintenant, quiconque appartient au groupe Nom-de-groupe, et possède une entrée dans le fichier @@ -343,13 +344,19 @@ l'accès à plusieurs personnes. Plutôt que de créer un fichier de groupes, il vous suffit d'ajouter la directive suivante :

-
Require valid-user
- +
Require valid-user
+

Le remplacement de la ligne Require user rbowen par la ligne Require valid-user autorisera l'accès à quiconque possédant une entrée dans le fichier password, et ayant - tapé le bon mot de passe.

+ tapé le bon mot de passe. Vous pouvez même simuler le comportement + des groupes en associant un fichier de mots de passe différent pour + chaque groupe. L'avantage de cette approche réside dans le fait + qu'Apache ne doit consulter qu'un fichier au lieu de deux. Par + contre, vous devez maintenir un nombre plus ou moins important de + fichiers de mots de passe, et vous assurer de faire référence au bon + fichier dans la directive AuthUserFile.

top

Problèmes possibles

@@ -390,16 +397,14 @@

Par exemple, pour sélectionner un fichier dbm à la place d'un fichier texte :

-
<Directory "/www/docs/private">
-
-    AuthName "Private"
-    AuthType Basic
-    AuthBasicProvider dbm
-    AuthDBMUserFile "/www/passwords/passwd.dbm"
-    Require valid-user
-
+
<Directory "/www/docs/private">
+AuthName "Private"
+AuthType Basic
+AuthBasicProvider dbm
+AuthDBMUserFile "/www/passwords/passwd.dbm"
+Require valid-user
 </Directory>
- +

D'autres options sont disponibles. Consultez la documentation de mod_authn_dbm pour plus de détails.

@@ -417,17 +422,15 @@ conjointement les fournisseurs d'authentification file et LDAP :

-
<Directory "/www/docs/private">
-
-    AuthName "Private"
-    AuthType Basic
-    AuthBasicProvider file ldap
-    AuthUserFile "/usr/local/apache/passwd/passwords"
-    AuthLDAPURL ldap://ldaphost/o=yourorg
-    Require valid-user
-
+
<Directory "/www/docs/private">
+AuthName "Private"
+AuthType Basic
+AuthBasicProvider file ldap
+AuthUserFile "/usr/local/apache/passwd/passwords"
+AuthLDAPURL ldap://ldaphost/o=yourorg
+Require valid-user
 </Directory>
- +

Dans cet exemple, le fournisseur file va tenter d'authentifier l'utilisateur en premier. S'il n'y parvient pas, le fournisseur LDAP @@ -445,19 +448,17 @@ autorisation à base de fichier de groupes et une autorisation à base de groupes LDAP.

-
<Directory "/www/docs/private">
-
-    AuthName "Private"
-    AuthType Basic
-    AuthBasicProvider file
-    AuthUserFile "/usr/local/apache/passwd/passwords"
-    AuthLDAPURL ldap://ldaphost/o=yourorg
-    AuthGroupFile "/usr/local/apache/passwd/groups"
-    Require group GroupName
-    Require ldap-group cn=mygroup,o=yourorg
-
+
<Directory "/www/docs/private">
+AuthName "Private"
+AuthType Basic
+AuthBasicProvider file
+AuthUserFile "/usr/local/apache/passwd/passwords"
+AuthLDAPURL ldap://ldaphost/o=yourorg
+AuthGroupFile "/usr/local/apache/passwd/groups"
+Require group GroupName
+Require ldap-group cn=mygroup,o=yourorg
 </Directory>
- +

Pour un scénario d'autorisation un peu plus avancé, des directives de conteneur d'autorisation comme <RequireAll> et @@ -523,75 +524,14 @@

Utilisation de fournisseurs d'autorisation pour le contrôle d'accès

-

La vérification du nom d'utilisateur et du mot de passe ne - constituent qu'un aspect des méthodes d'authentification. - Souvent, le contrôle d'accès à certaines personnes n'est pas - basé sur leur identité ; il peut dépendre, par exemple de leur - provenance.

- -

Les fournisseurs d'autorisation all, - env, host et ip vous - permettent d'accorder ou refuser l'accès en - fonction de critères tels que le nom d'hôte ou l'adresse - IP de la machine qui effectue la requête.

- -

L'utilisation de ces fournisseurs est spécifiée à l'aide de - la directive Require. Cette directive - permet d'enregistrer quels fournisseurs d'autorisation - seront appelés dans le processus d'autorisation au cours du - traitement de la requête. Par exemple :

- -
Require ip address
- - -

où adresse est une adresse IP (ou une adresse IP - partielle) ou :

- -
Require host domain_name
- - -

où nom_domaine est un nom de domaine entièrement - qualifé (ou un nom de domaine partiel) ; vous pouvez indiquer - plusieurs adresses ou noms de domaines, si vous le désirez.

- -

Par exemple, si vous voulez rejeter les spams dont une - machine vous inonde, vous pouvez utiliser ceci :

- -
<RequireAll>
-    Require all granted
-    Require not ip 10.252.46.165
-</RequireAll>
- - -

Ainsi, les visiteurs en provenance de cette adresse ne - pourront pas voir le contenu concerné par cette directive. Si, - par contre, vous connaissez le nom de la machine, vous pouvez - utiliser ceci :

- -
<RequireAll>
-    Require all granted
-    Require not host host.example.com
-</RequireAll>
- - -

Et si vous voulez interdire l'accès à toutes les machines - d'un domaine, vous pouvez spécifier une partie seulement de - l'adresse ou du nom de domaine :

- -
<RequireAll>
-    Require all granted
-    Require not ip 192.168.205
-    Require not host phishers.example.com moreidiots.example
-    Require not host ke
-</RequireAll>
- - -

L'utilisation de la directive <RequireAll> - avec de multiples directives <Require>, toutes avec la négation - not, n'accordera l'accès que si toutes les - conditions négatives sont vérifiées. En d'autres termes, l'accès - sera refusé si au moins une des conditions négatives n'est pas - vérifiée.

+

La vérification du nom d'utilisateur et du mot de passe ne + constituent qu'un aspect des méthodes d'authentification. Vous pouvez + aussi autoriser ou interdire l’accès en fonction d’autres critères tels + que l’adresse IP du client ou le nom d’hôte en utilisant les + fournisseurs d’autorisation all, env, + host et ip avec la directive Require.

+ +

Pour des détails complets et des exemples, voir le tutoriel Access Control.

@@ -615,23 +555,20 @@ directives afin de faciliter le passage à la version 2.4. Voir le document upgrading pour plus de détails.

-
+
top

Mise en cache de l'authentification

-

Dans certains cas, l'authentification constitue une charge - inacceptable pour un fournisseur d'authentification ou votre réseau. - Ceci est susceptible d'affecter les utilisateurs du module - mod_authn_dbd (ou les fournisseurs - tiers/personnalisés). Pour résoudre ce problème, HTTPD 2.3/2.4 - propose un nouveau fournisseur de mise en cache, - mod_authn_socache, qui permet de mettre en cache - les données d'authentification, et ainsi réduire la charge du/des - fournisseurs(s) originels.

-

Cette mise en cache apportera un gain en performance substantiel - à certains utilisateurs.

+

Dans certains cas, l'authentification constitue une charge inacceptable + pour un fournisseur d'authentification ou votre réseau. Ceci est + susceptible d'affecter les utilisateurs du module + mod_authn_dbd (ou les fournisseurs tiers/personnalisés). Le + module mod_authn_socache met en cache les données + d'authentification, et réduit ainsi la charge du/des fournisseurs(s) + originels.

Cette mise en cache apportera un gain en performance + substantiel à certains utilisateurs.

top

Pour aller plus loin . . .

diff -Nru apache2-2.4.68/docs/manual/howto/cgi.html.en apache2-2.4.69/docs/manual/howto/cgi.html.en --- apache2-2.4.68/docs/manual/howto/cgi.html.en 2026-05-31 13:57:20.000000000 +0000 +++ apache2-2.4.69/docs/manual/howto/cgi.html.en 2026-06-19 14:27:29.000000000 +0000 @@ -58,25 +58,35 @@

Configuring httpd to permit CGI

-

In order to get your CGI programs to work properly, you'll - need to have httpd configured to permit CGI execution. There - are several ways to do this.

+

Your httpd configuration must permit CGI execution before + CGI programs will work. Several ways to do this are described + below.

+ +

CGI support is provided by two modules: + mod_cgid and mod_cgi. + mod_cgid uses a dedicated external daemon to manage + CGI processes and is required when httpd runs a threaded MPM (such as + event or worker). + mod_cgi runs CGI programs directly from within the + server process and is used with non-threaded MPMs like + prefork, or on Windows. From a configuration + standpoint they are interchangeable — the directives are the same. + See the mod_cgi and mod_cgid + reference pages for implementation details.

-
Note: If httpd has been built with shared module - support you need to ensure that the module is loaded; in your +
If httpd has been built with shared module + support, you need to ensure that the appropriate module is loaded. In your httpd.conf you need to make sure the LoadModule - directive has not been commented out. A correctly configured directive - may look like this: - -
LoadModule cgid_module modules/mod_cgid.so
- + directive has not been commented out. For a threaded MPM: +
LoadModule cgid_module modules/mod_cgid.so
+
- On Windows, or using a non-threaded MPM like prefork, A correctly - configured directive may look like this: + For Windows, or a non-threaded MPM like prefork: -
LoadModule cgi_module modules/mod_cgi.so
+
LoadModule cgi_module modules/mod_cgi.so
+
@@ -95,8 +105,8 @@

The ScriptAlias directive looks like:

-
ScriptAlias "/cgi-bin/" "/usr/local/apache2/cgi-bin/"
- +
ScriptAlias "/cgi-bin/" "/usr/local/apache2/cgi-bin/"
+

The example shown is from your default httpd.conf configuration file, if you installed httpd in the default @@ -114,12 +124,12 @@ treated as a CGI program.

For example, if the URL - http://www.example.com/cgi-bin/test.pl + http://www.example.com/cgi-bin/test.py is requested, httpd will attempt to execute the file - /usr/local/apache2/cgi-bin/test.pl - and return the output. Of course, the file will have to - exist, and be executable, and return output in a particular - way, or httpd will return an error message.

+ /usr/local/apache2/cgi-bin/test.py + and return the output. The file must exist, be executable, + and produce output in the expected format; otherwise httpd + returns an error.

CGI outside of ScriptAlias directories

@@ -136,8 +146,8 @@ the main cgi-bin directory, they will need to be able to run CGI programs elsewhere.

-

There are two steps to allowing CGI execution in an arbitrary - directory. First, the cgi-script handler must be +

Allowing CGI execution in an arbitrary directory requires + two steps. First, the cgi-script handler must be activated using the AddHandler or SetHandler directive. Second, ExecCGI must be specified in the Options directive.

@@ -149,19 +159,19 @@ file, to specify that CGI execution was permitted in a particular directory:

-
<Directory "/usr/local/apache2/htdocs/somedir">
-    Options +ExecCGI
+
<Directory "/usr/local/apache2/htdocs/somedir">
+Options +ExecCGI
 </Directory>
- +

The above directive tells httpd to permit the execution of CGI files. You will also need to tell the server what files are CGI files. The following AddHandler directive tells the server to treat all - files with the cgi or pl extension as CGI + files with the cgi or py extension as CGI programs:

-
AddHandler cgi-script .cgi .pl
- +
AddHandler cgi-script .cgi .py
+

.htaccess files

@@ -179,21 +189,21 @@ .cgi in users' directories, you can use the following configuration.

-
<Directory "/home/*/public_html">
-    Options +ExecCGI
-    AddHandler cgi-script .cgi
+
<Directory "/home/*/public_html">
+Options +ExecCGI
+AddHandler cgi-script .cgi
 </Directory>
+
- -

If you wish designate a cgi-bin subdirectory of +

To designate a cgi-bin subdirectory of a user's directory where everything will be treated as a CGI program, you can use the following.

-
<Directory "/home/*/public_html/cgi-bin">
-    Options ExecCGI
-    SetHandler cgi-script
+
<Directory "/home/*/public_html/cgi-bin">
+Options ExecCGI
+SetHandler cgi-script
 </Directory>
- +
@@ -202,8 +212,8 @@

Writing a CGI program

-

There are two main differences between ``regular'' - programming, and CGI programming.

+

CGI programming differs from regular programming in two + ways.

First, all output from your CGI program must be preceded by a MIME-type header. This is HTTP header that tells the client @@ -217,7 +227,7 @@

Secondly, your output needs to be in HTML, or some other format that a browser will be able to display. Most of the time, this will be HTML, but occasionally you might write a CGI - program that outputs a gif image, or other non-HTML + program that outputs a GIF image, or other non-HTML content.

Apart from those two things, writing a CGI program will look @@ -228,45 +238,41 @@

The following is an example CGI program that prints one line to your browser. Type in the following, save it to a - file called first.pl, and put it in your + file called first.py, and put it in your cgi-bin directory.

-
#!/usr/bin/perl
-print "Content-type: text/html\n\n";
-print "Hello, World.";
- - -

Even if you are not familiar with Perl, you should be able - to see what is happening here. The first line tells httpd - (or whatever shell you happen to be running under) that this - program can be executed by feeding the file to the - interpreter found at the location /usr/bin/perl. - The second line prints the content-type declaration we - talked about, followed by two carriage-return newline pairs. - This puts a blank line after the header, to indicate the end - of the HTTP headers, and the beginning of the body. The third - line prints the string "Hello, World.". And that's the end - of it.

+
#!/usr/bin/env python3
+print("Content-type: text/html\n")
+print("Hello, World.")
+
+ +

The first line tells the operating system which interpreter + to use. The first print call outputs the + content-type header followed by a blank line (the + \n in the string plus the newline that + print() adds), which marks the end of HTTP + headers. The second print call outputs the body. + That is all a CGI program needs to produce a response.

If you open your favorite browser and tell it to get the address

- http://www.example.com/cgi-bin/first.pl + http://www.example.com/cgi-bin/first.py

or wherever you put your file, you will see the one line Hello, World. appear in your browser window. It's not very exciting, but once you get that working, you'll - have a good chance of getting just about anything working.

+ have a good chance of getting about anything working.

top

But it's still not working!

-

There are four basic things that you may see in your browser - when you try to access your CGI program from the web:

+

Four basic things may appear in your browser when you try to + access your CGI program from the web:

The output of your CGI program
@@ -308,9 +314,8 @@ a file sufficient permissions to be executed by nobody is to give everyone execute permission on the file:

-

- chmod a+x first.pl -

+
chmod a+x first.py
+

Also, if your program reads from, or writes to, any other files, those files will need to have the correct permissions @@ -335,11 +340,11 @@ program.

A common manifestation of this is the path to the script - interpreter (often perl) indicated in the first + interpreter (often python3) indicated in the first line of your CGI program, which will look something like:

-
#!/usr/bin/perl
- +
#!/usr/bin/env python3
+

Make sure that this is in fact the path to the interpreter.

@@ -380,10 +385,10 @@

cd /usr/local/apache2/cgi-bin
- ./first.pl + ./first.py

-

(Do not call the perl interpreter. The shell +

(Do not call the python3 interpreter directly. The shell and httpd should find the interpreter using the path information on the first line of the script.)

@@ -423,7 +428,7 @@ suexec will be activated.

Unless you fully understand suexec, you should not be using it. - To disable suexec, simply remove (or rename) the suexec + To disable suexec, remove (or rename) the suexec binary pointed to by SUEXEC_BIN and then restart the server. If, after reading about suexec, you still wish to use it, then run suexec -V to find @@ -456,7 +461,7 @@

During the CGI transaction, the server and the browser also set environment variables, so that they can communicate with one another. These are things like the browser type - (Chrome, Firefox, Lynx), the server type (Apache httpd, Nginx, IIS), + (Chrome, Firefox, Lynx), the server type (httpd, Nginx, IIS), the name of the CGI program that is being run, and so on.

These variables are available to the CGI programmer, and @@ -464,7 +469,7 @@ complete list of required variables is at Common Gateway Interface RFC (RFC 3875).

-

This simple Perl CGI program will display all of the +

This simple Python CGI program will display all of the environment variables that are being passed around. Two similar programs are included in the cgi-bin @@ -476,15 +481,13 @@ add your own environment variables to the basic ones provided by default.

-
#!/usr/bin/perl
-use strict;
-use warnings;
-
-print "Content-type: text/html\n\n";
-foreach my $key (keys %ENV) {
-    print "$key --> $ENV{$key}<br>";
-}
+
#!/usr/bin/env python3
+import os
 
+print("Content-type: text/html\n")
+for key, value in os.environ.items():
+print(f"{key} --> {value}<br>")
+

STDIN and STDOUT

@@ -524,9 +527,9 @@ METHOD attribute in the FORM tag.

Your program is then responsible for splitting that string - up into useful information. Fortunately, there are libraries - and modules available to help you process this data, as well - as handle other of the aspects of your CGI program.

+ up into useful information. Fortunately, libraries + and modules are available to help you process this data, as well + as handle other aspects of your CGI program.

top
@@ -537,15 +540,14 @@ code library, or module, to do most of the grunt work for you. This leads to fewer errors, and faster development.

-

If you're writing CGI programs in Perl, modules are - available on CPAN. The most - popular module for this purpose is CGI.pm. You might - also consider CGI::Lite, which implements a minimal - set of functionality, which is all you need in most programs.

- -

If you're writing CGI programs in C, there are a variety of - options. One of these is the CGIC library, from - https://web.mit.edu/wwwdev/www/cgic.html.

+

If you're writing CGI programs in Python, the standard + library's cgi module (deprecated in Python 3.11, + removed in 3.13) handled form parsing. For current Python + versions, use the urllib.parse module to parse + query strings and form data. For more complex applications, + consider a lightweight WSGI framework, though that moves + beyond the scope of traditional CGI.

+
top

For more information

@@ -562,9 +564,9 @@ program was in, and, if possible, the offending code. This will make finding your problem much simpler.

-

Note that questions about CGI problems should never +

Questions about CGI problems should never be posted to the httpd bug database unless you are sure you - have found a problem in the httpd source code.

+ have found a problem in the httpd source code.

Available Languages:  en  | diff -Nru apache2-2.4.68/docs/manual/howto/cgi.html.fr.utf8 apache2-2.4.69/docs/manual/howto/cgi.html.fr.utf8 --- apache2-2.4.68/docs/manual/howto/cgi.html.fr.utf8 2026-06-05 12:03:44.000000000 +0000 +++ apache2-2.4.69/docs/manual/howto/cgi.html.fr.utf8 2026-06-29 16:13:37.000000000 +0000 @@ -58,24 +58,34 @@

Configurer httpd pour autoriser CGI

-

httpd doit être configuré pour permettre l'exécution des - programmes CGI, pour que vos programmes CGI puissent fonctionner - correctement. Il existe plusieurs méthodes pour y parvenir.

- -
Note: si httpd a été compilé avec le support - des modules partagés (DSO), vous devez vous assurer que le module CGI est - chargé ; vous devez pour cela vérifier que la directive LoadModule correspondante n'a pas été - commentée dans votre httpd.conf. Une directive correcte - doit ressembler à ceci : - -
LoadModule cgid_module modules/mod_cgid.so
- +

La configuration de httpd doit autoriser l’exécution de CGI pour que les + programmes CGI fonctionnent. Il existe plusieurs manières d’y parvenir, qui + sont décrites ci-après.

+ +

La prise en charge de CGI est assurée par deux modules : + mod_cgid et mod_cgi. + mod_cgid utilise un démon externe dédié pour gérer les + processus CGI et est requis lorsque httpd utilise un MPM threadé (tel que + event ou worker). mod_cgi + exécute les programmes CGI directement depuis le processus du serveur et est + utilisé avec les MPMs non threadés tels que prefork, ou + sous Windows. Du point de vue de la configuration, ils sont interchangeables + — les directives sont les mêmes. Voir les pages de référence de + mod_cgi et mod_cgid pour les détails de + l’implémentation.

+ +
Si httpd a été compilé avec le support des modules + partagés (DSO), vous devez vous assurer que le module approprié est chargé ; + vous devez pour cela vérifier que la directive LoadModule correspondante n'a pas été commentée + dans votre httpd.conf. Pour un MPM threadé : +
LoadModule cgid_module modules/mod_cgid.so
+
- Sous Windows, ou si l'on utilise un module MPM non-threadé comme prefork, - une directive correctement configurée sera du style : + Pour Windows, ou un MPM non threadé comme prefork : -
LoadModule cgi_module modules/mod_cgi.so
+
LoadModule cgi_module modules/mod_cgi.so
+
@@ -91,8 +101,8 @@

La directive ScriptAlias se présente comme suit :

-
ScriptAlias "/cgi-bin/" "/usr/local/apache2/cgi-bin/"
- +
ScriptAlias "/cgi-bin/" "/usr/local/apache2/cgi-bin/"
+

Cet exemple est tiré de votre fichier de configuration httpd.conf par défaut, si vous avez installé httpd @@ -113,12 +123,11 @@ tant que programme CGI.

Par exemple, si une requête pour l'URL - http://www.example.com/cgi-bin/test.pl est - effectuée, httpd tentera d'exécuter le fichier - /usr/local/apache2/cgi-bin/test.pl et en renverra la - sortie. Bien entendu, le fichier doit exister, être exécutable, et - retourner sa sortie d'une manière particulière, sinon httpd - renverra un message d'erreur.

+ http://www.example.com/cgi-bin/test.py est effectuée, httpd + tentera d'exécuter le fichier + /usr/local/apache2/cgi-bin/test.py et en renverra la sortie. + Le fichier doit exister, être exécutable, et produire une sortie sous le + format attendu, sinon httpd renverra un message d'erreur.

CGI en dehors des répertoires ScripAlias

@@ -156,20 +165,20 @@ l'exécution des programmes CGI est permise depuis un répertoire particulier :

-
<Directory "/usr/local/apache2/htdocs/somedir">
-    Options +ExecCGI
+
<Directory "/usr/local/apache2/htdocs/somedir">
+Options +ExecCGI
 </Directory>
- +

La directive ci-dessus indique à httpd qu'il doit permettre l'exécution des fichiers CGI. Vous devez aussi indiquer au serveur quels fichiers sont des fichiers CGI. La directive AddHandler suivante indique au serveur qu'il doit traiter tous les fichiers possédant une - extension cgi ou pl en tant que + extension cgi ou py en tant que programmes CGI :

-
AddHandler cgi-script .cgi .pl
- +
AddHandler cgi-script .cgi .py
+

Fichiers .htaccess

@@ -189,21 +198,21 @@ répertoire utilisateur, vous pouvez utiliser la configuration suivante :

-
<Directory "/home/*/public_html">
-    Options +ExecCGI
-    AddHandler cgi-script .cgi
+
<Directory "/home/*/public_html">
+Options +ExecCGI
+AddHandler cgi-script .cgi
 </Directory>
- +

Pour indiquer un sous-répertoire cgi-bin d'un répertoire utilisateur où tout fichier sera traité en tant que programme CGI, vous pouvez utiliser ceci :

-
<Directory "/home/*/public_html/cgi-bin">
-    Options ExecCGI
-    SetHandler cgi-script
+
<Directory "/home/*/public_html/cgi-bin">
+Options ExecCGI
+SetHandler cgi-script
 </Directory>
- +
@@ -212,8 +221,8 @@

Ecrire un programme CGI

-

Il y a deux différences principales entre la programmation - "standard" et la programmation CGI.

+

La programmation CGI diffère de la programmation + "standard" sur deux points.

En premier lieu, toute sortie de votre programme CGI doit être précédée d'un en-tête MIME-type. Il s'agit d'un @@ -227,7 +236,7 @@

En second lieu, votre sortie doit être en HTML, ou tout autre format qu'un navigateur est en mesure d'afficher. La plupart du temps, il s'agira de HTML, mais occasionnellement, vous pouvez être - amené à écrire un programme CGI qui renvoie une image gif, ou un + amené à écrire un programme CGI qui renvoie une image GIF, ou un autre type de contenu non-HTML.

A part ces deux différences, un programme CGI ressemblera à tout @@ -239,32 +248,26 @@

L'exemple suivant est un exemple de programme CGI qui permet d'afficher une ligne de caractères dans votre navigateur. Ecrivez ce qui suit, enregistrez le dans un fichier nommé - premier.pl, et placez le dans votre répertoire + premier.py, et placez le dans votre répertoire cgi-bin.

-
#!/usr/bin/perl
-print "Content-type: text/html\n\n";
-print "Hello, World.";
- - -

Même si Perl ne vous est pas familier, vous devriez être - capable de comprendre le fonctionnement de ce programme. La - première ligne indique à httpd (ou à toute interface à partir de - laquelle le programme s'exécute) que ce programme peut être - exécuté en fournissant son fichier à l'interpréteur - /usr/bin/perl. La seconde ligne affiche la - déclaration du type de contenu considéré, suivie de deux paires - "Retour chariot - Nouvelle ligne". Ceci a pour effet d'insérer une - ligne vide après l'en-tête pour marquer la fin des en-têtes HTTP, - et le début du corps du document. La troisième ligne affiche la - chaîne de caractères "Bonjour tout le monde . . .". Et c'est tout - ce dont vous avez besoin.

+
#!/usr/bin/env python3
+print("Content-type: text/html\n")
+print("Hello, World.")
+
+ +

La première ligne indique au système d’exploitation quel interpréteur + utiliser. La première invocation de print affiche l’en-tête content-type + suivi d’une ligne vide (le \n dans la chaîne et la nouvelle + ligne qu’ajoute print()), qui matérialise la fin des en-têtes + HTTP. La seconde invocation de print affiche le corps. C’est là tout ce + dont un programme CGI a besoin pour produire une réponse.

Si vous ouvrez votre navigateur favori et lui indiquez l'adresse

- http://www.example.com/cgi-bin/premier.pl + http://www.example.com/cgi-bin/premier.py

ou toute autre URL correspondant à votre programme CGI, Vous @@ -279,9 +282,8 @@

Mais ça ne marche toujours pas !

-

Vous devriez voir au moins une des quatre sorties suivantes dans - votre navigateur lorsque vous essayez d'accéder à votre programme - CGI depuis le web :

+

Quatre sorties basiques pourront apparaître dans votre navigateur lorsque + vous essayez d'accéder à votre programme CGI depuis le web :

Le flux de sortie de votre programme CGI
@@ -326,9 +328,8 @@ nobody, il suffit de lui attribuer des droits d'exécution pour tout le monde :

-

- chmod a+x premier.pl -

+
chmod a+x first.py
+

En outre, si votre programme doit pouvoir accéder en lecture et/ou écriture à d'autres fichiers, ces derniers devront avoir les @@ -355,12 +356,12 @@ CGI.

Un exemple typique de spécification de programme est le chemin - vers l'interpréteur de script (souvent perl) que l'on + vers l'interpréteur de script (souvent python3) que l'on trouve à la première ligne de votre programme CGI et qui va ressembler à ceci :

-
#!/usr/bin/perl
- +
#!/usr/bin/env python3
+

Assurez-vous qu'il s'agit bien du chemin correct vers l'interpréteur.

@@ -405,10 +406,10 @@

cd /usr/local/apache2/cgi-bin
- ./premier.pl + ./premier.py

-

(N'invoquez pas l'interpréteur perl. Le shell et +

(N'invoquez pas l'interpréteur python3. Le shell et httpd doivent être capable de le déterminer à partir de l'information sur le chemin située sur la première ligne du script.)

@@ -454,7 +455,7 @@

Si vous ne maîtrisez pas le fonctionnement de suexec, il vous est déconseillé de l'utiliser. Pour désactiver suexec, supprimer - simplement (ou renommez) l'exécutable suexec + (ou renommez) l'exécutable suexec pointé par SUEXEC_BIN et redémarrez le serveur. Si après une lecture de suexec, vous décidez quand-même de l'utiliser, tapez la commande suexec @@ -499,7 +500,7 @@ variables requises se trouve dans la RFC 3875 (Common Gateway Interface).

-

Ce programme CGI basique en Perl permet d'afficher toutes les +

Ce programme CGI basique en Python permet d'afficher toutes les variables d'environnement qui sont échangées. Deux programmes similaires sont fournis avec la distribution de httpd et situés dans le répertoire cgi-bin. @@ -511,15 +512,13 @@ variables d'environnement aux variables de base fournies par défaut.

-
#!/usr/bin/perl
-use strict;
-use warnings;
-
-print "Content-type: text/html\n\n";
-foreach my $key (keys %ENV) {
-    print "$key --> $ENV{$key}<br>";
-}
+
#!/usr/bin/env python3
+import os
 
+print("Content-type: text/html\n")
+for key, value in os.environ.items():
+print(f"{key} --> {value}<br>")
+

STDIN et STDOUT

@@ -577,15 +576,13 @@ partie du travail de base pour vous. Ceci vous permettra de diminuer le nombre d'erreurs et d'accélérer le développement.

-

Si vous écrivez des programmes CGI en Perl, des modules sont à - votre disposition à CPAN. A ce - sujet, le module le plus populaire est CGI.pm. Vous - pouvez aussi essayer CGI::Lite, qui implémente les - fonctionnalités strictement nécessaires, mais suffisantes pour - la majorité des programmes.

- -

Si vous écrivez des programmes CGI en C, vous disposez de nombreuses - options. L'une d'elles est la bibliothèque CGIC de https://web.mit.edu/wwwdev/www/cgic.html.

+

Si vous écrivez des programmes CGI en Python, le module cgi + de la bibliothèque standard (obsolète dans Python 3.11, supprimé dans Python + 3.13) prenait en charge l’analyse de formulaire. Avec les versions actuelles + de Python, utilisez le module urllib.parse pour analyser les + chaîne de paramètres et les données de formulaire. Pour des applications + plus complexes, orientez-vous vers un cadriciel WSGI léger, bien que cela + aille au-delà du domaine de la CGI traditionnelle.

top

Pour plus d'informations

@@ -603,10 +600,10 @@ programme CGI a été écrit, et, si possible, son code source. Ceci permettra une résolution plus aisée de votre problème.

-

Notez que les questions à propos de problèmes CGI ne doivent +

Les questions à propos de problèmes CGI ne doivent jamais être postées dans la base de données de bogues de httpd, à moins que vous ne soyez sûr d'avoir trouvé un - problème dans le code source de httpd.

+ problème dans le code source de httpd.

Langues Disponibles:  en  | diff -Nru apache2-2.4.68/docs/manual/howto/htaccess.html.en apache2-2.4.69/docs/manual/howto/htaccess.html.en --- apache2-2.4.68/docs/manual/howto/htaccess.html.en 2026-05-31 13:57:20.000000000 +0000 +++ apache2-2.4.69/docs/manual/howto/htaccess.html.en 2026-06-19 14:27:29.000000000 +0000 @@ -67,8 +67,8 @@ if you would rather call the file .config then you can put the following in your server configuration file:

-
AccessFileName ".config"
- +
AccessFileName ".config"
+

Directives in .htaccess files use the same syntax as @@ -81,7 +81,7 @@ .htaccess file, while AllowOverrideList names individual directives to permit (see below). If a directive is permitted, the documentation for that directive will contain an Override section, - specifying what value must be in AllowOverride in order for that + specifying what value must be in AllowOverride for that directive to be permitted.

The default value of AllowOverride is None. @@ -92,7 +92,7 @@ directive, you will find that it is permitted in .htaccess files. (See the Context line in the directive summary.) The Override line reads FileInfo. Thus, you must have at least - AllowOverride FileInfo in order for this directive to be + AllowOverride FileInfo for this directive to be honored in .htaccess files.

top
@@ -129,34 +129,34 @@ .htaccess file is loaded every time a document is requested.

-

Further note that httpd must look for .htaccess files - in all higher-level directories, in order to have a full complement of - directives that it must apply. (See section on how +

Additionally, httpd must look for .htaccess files + in all higher-level directories to assemble the full set of applicable + directives. (See section on how directives are applied.) Thus, if a file is requested out of a directory /www/htdocs/example, httpd must look for the following files:

-
/.htaccess
+
/.htaccess
 /www/.htaccess
 /www/htdocs/.htaccess
 /www/htdocs/example/.htaccess
- +

And so, for each file access out of that directory, there are 4 additional file-system accesses, even if none of those files are - present. (Note that this would only be the case if + present. (This would only be the case if .htaccess files were enabled for /, which is not usually the case.)

Security: You are permitting users to modify server configuration, which may result in changes over which you have no control. Carefully consider whether you want to give - your users this privilege. Note also that giving users less + your users this privilege. Giving users less privileges than they need will lead to additional technical support requests. Make sure you clearly tell your users what level of privileges you have given them. Specifying exactly what you have set AllowOverride to, and pointing them - to the relevant documentation, will save yourself a lot of confusion + to the relevant documentation, prevents confusion later.

If you need to grant .htaccess access but want to @@ -165,48 +165,46 @@ lets you name individual directives that are permitted, providing finer-grained control than AllowOverride alone:

-
# Allow only specific directives, not entire categories
+
# Allow only specific directives, not entire categories
 AllowOverride None
 AllowOverrideList Redirect RedirectMatch RewriteEngine RewriteRule RewriteCond
- +

With this configuration, any directive not explicitly listed will cause a server error if encountered in a .htaccess file. This is a useful middle ground between full override access and no override access.

-

Note that it is completely equivalent to put a .htaccess - file in a directory /www/htdocs/example containing a - directive, and to put that same directive in a Directory section - <Directory "/www/htdocs/example"> in your main server +

Placing a directive in a .htaccess + file in a directory /www/htdocs/example is completely equivalent to placing that same directive in a + <Directory "/www/htdocs/example"> section in your main server configuration:

.htaccess file in /www/htdocs/example:

Contents of .htaccess file in - /www/htdocs/example

AddType text/example ".exm"
-
+ /www/htdocs/example
AddType text/example ".exm"
+

Section from your httpd.conf - file

<Directory "/www/htdocs/example">
-    AddType text/example ".exm"
+    file
<Directory "/www/htdocs/example">
+AddType text/example ".exm"
 </Directory>
-
+

The use of .htaccess files can be disabled completely by setting the AllowOverride directive to none:

-
AllowOverride None
- +
AllowOverride None
+
top

How directives are applied

The configuration directives found in a .htaccess file are applied to the directory in which the .htaccess file - is found, and to all subdirectories thereof. However, it is important - to also remember that there may have been .htaccess files + is found, and to all subdirectories thereof. Remember that there may have been .htaccess files in directories higher up. Directives are applied in the order that they are found. Therefore, a .htaccess file in a particular directory may override directives found in .htaccess files @@ -219,18 +217,18 @@

In the directory /www/htdocs/example1 we have a .htaccess file containing the following:

-
Options +ExecCGI
- +
Options +ExecCGI
+
-

(Note: you must have "AllowOverride Options" in effect +

You must have "AllowOverride Options" in effect to permit the use of the "Options" directive in - .htaccess files.)

+ .htaccess files.

In the directory /www/htdocs/example1/example2 we have a .htaccess file containing:

-
Options Includes
- +
Options Includes
+

Because of this second .htaccess file, in the directory /www/htdocs/example1/example2, CGI execution is not @@ -250,14 +248,14 @@ prevent script execution while allowing anything else to be set in .htaccess you can use:

-
<Directory "/www/htdocs">
-    AllowOverride All
+
<Directory "/www/htdocs">
+AllowOverride All
 </Directory>
 
 <Location "/">
-    Options +IncludesNoExec -ExecCGI
+Options +IncludesNoExec -ExecCGI
 </Location>
- +
This example assumes that your DocumentRoot is /www/htdocs.
@@ -274,15 +272,15 @@

.htaccess file contents:

-
AuthType Basic
+
AuthType Basic
 AuthName "Password Required"
 AuthUserFile "/www/passwords/password.file"
 AuthGroupFile "/www/passwords/group.file"
 Require group admins
+
- -

Note that AllowOverride AuthConfig must be in effect - for these directives to have any effect.

+
AllowOverride AuthConfig must be in effect + for these directives to have any effect.

Please see the authentication tutorial for a more complete discussion of authentication and authorization.

@@ -295,14 +293,14 @@ configuration directives, placed in a .htaccess file in the desired directory:

-
Options +Includes
+
Options +Includes
 AddType text/html "shtml"
 AddHandler server-parsed shtml
+
- -

Note that AllowOverride Options and AllowOverride +

AllowOverride Options and AllowOverride FileInfo must both be in effect for these directives to have any - effect.

+ effect.

Please see the SSI tutorial for a more complete discussion of server-side includes.

@@ -315,7 +313,7 @@ the current directory, rather than being the original requested URI. Consider the following examples:

-
# In httpd.conf
+
# In httpd.conf
 RewriteRule "^/images/(.+)\.jpg" "/images/$1.png"
 
 # In .htaccess in root dir
@@ -323,7 +321,7 @@
 
 # In .htaccess in images/
 RewriteRule "^(.+)\.jpg" "$1.png"
- +

In a .htaccess in your document directory, the leading slash is removed from the value supplied to RewriteRule, and in the @@ -331,7 +329,7 @@ it. Thus, your regular expression needs to omit that portion as well.

-

Also note that in .htaccess context, regular expressions are +

In .htaccess context, regular expressions are recompiled on every request, whereas in the main server configuration they are compiled once and cached.

@@ -352,21 +350,21 @@ execution of CGI programs in a particular directory. This may be implemented with the following configuration:

-
Options +ExecCGI
+
Options +ExecCGI
 AddHandler cgi-script "cgi" "py"
- +

Alternately, if you wish to have all files in the given directory be considered to be CGI programs, this may be done with the following configuration:

-
Options +ExecCGI
+
Options +ExecCGI
 SetHandler cgi-script
+
- -

Note that AllowOverride Options and AllowOverride +

AllowOverride Options and AllowOverride FileInfo must both be in effect for these directives to have any - effect.

+ effect.

Please see the CGI tutorial for a more complete discussion of CGI programming and configuration.

@@ -386,8 +384,8 @@ nonsense word in your .htaccess file and reload the page:

-
TestMe
- +
TestMe
+

If a server error (HTTP 500) is not generated, then you almost certainly have AllowOverride @@ -398,12 +396,11 @@ that the directive used in your .htaccess file is not permitted.

-
[Tue May 06 09:12:31.528374 2025] [core:alert] [pid 12345] [client 192.168.1.50:54321] /var/www/html/.htaccess: DirectoryIndex not allowed here
- +
[Thu Jun 18 09:12:31.528374 2026] [core:alert] [pid 12345] [client 192.168.1.50:54321] /var/www/html/.htaccess: DirectoryIndex not allowed here
+

This will indicate either that you've used a directive that is - never permitted in .htaccess files, or that you simply - don't have AllowOverride set to + never permitted in .htaccess files, or that you don't have AllowOverride set to a level sufficient for the directive you've used. Consult the documentation for that particular directive to determine which is the case.

@@ -411,8 +408,8 @@

Alternately, it may tell you that you had a syntax error in your usage of the directive itself.

-
[Tue May 06 09:14:02.946218 2025] [core:alert] [pid 12345] [client 192.168.1.50:54321] /var/www/html/.htaccess: RewriteCond: bad flag delimiters
- +
[Thu Jun 18 09:14:02.946218 2026] [core:alert] [pid 12345] [client 192.168.1.50:54321] /var/www/html/.htaccess: RewriteCond: bad flag delimiters
+

In this case, the error message should be specific to the particular syntax error that you have committed.

diff -Nru apache2-2.4.68/docs/manual/howto/htaccess.html.fr.utf8 apache2-2.4.69/docs/manual/howto/htaccess.html.fr.utf8 --- apache2-2.4.68/docs/manual/howto/htaccess.html.fr.utf8 2026-06-05 12:03:44.000000000 +0000 +++ apache2-2.4.69/docs/manual/howto/htaccess.html.fr.utf8 2026-07-01 15:26:27.000000000 +0000 @@ -73,8 +73,8 @@ .config, vous pouvez mettre ceci dans le fichier de configuration de votre serveur :

-
AccessFileName ".config"
- +
AccessFileName ".config"
+

Les directives dans les fichiers .htaccess utilisent la même @@ -88,7 +88,7 @@ directive est permise dans un fichier .htaccess, la documentation de cette directive contiendra une section Override, spécifiant quelle valeur doit prendre la directive AllowOverride pour que cette directive - soit traitée.

+ soit autorisée.

La valeur par défaut de la directive AllowOverride est None. Cela signifie que les fichiers .htaccess seront complètement ignorés, à moins @@ -143,25 +143,23 @@ .htaccess est chargé en mémoire chaque fois qu'un document fait l'objet d'une requête.

-

Notez aussi que httpd doit rechercher les fichiers - .htaccess dans tous les répertoires de niveau - supérieur, afin de rassembler toutes les directives qui s'appliquent - au répertoire courant (Voir la section comment sont - appliquées les directives). Ainsi, si un fichier fait l'objet - d'une requête à partir d'un répertoire - /www/htdocs/exemple, httpd doit rechercher les - fichiers suivants :

+

En outre, httpd doit rechercher des fichiers .htaccess dans + tous les répertoires de niveau supérieur pour rassembler la totalité des + directives applicables (Voir la section comment sont + appliquées les directives). Ainsi, si un fichier fait l'objet d'une + requête à partir d'un répertoire /www/htdocs/exemple, httpd + doit rechercher les fichiers suivants :

-
/.htaccess
+
/.htaccess
 /www/.htaccess
 /www/htdocs/.htaccess
 /www/htdocs/example/.htaccess
- +

En conséquence, chaque accès à un fichier de ce répertoire nécessite 4 accès au système de fichiers supplémentaires pour rechercher des fichiers .htaccess, même si - aucun de ces fichiers n'est présent. Notez que cet exemple ne peut + aucun de ces fichiers n'est présent. Cet exemple ne peut se produire que si les fichiers .htaccess ont été autorisés pour le répertoire /, ce qui est rarement le cas.

@@ -170,7 +168,7 @@ utilisateurs de modifier la configuration du serveur, il peut en résulter des conséquences sur lesquelles vous n'aurez aucun contrôle. Réfléchissez bien avant de donner ce privilège à vos - utilisateurs. Notez aussi que ne pas donner aux utilisateurs les + utilisateurs. Ne pas donner aux utilisateurs les privilèges dont ils ont besoin va entraîner une augmentation des demandes de support technique. Assurez-vous d'avoir informé clairement vos utilisateurs du niveau de privilèges que vous leur @@ -185,41 +183,41 @@ nommer individuellement les directives autorisées, vous permettant ainsi un contrôle plus fin que dans le cas de la directive AllowOverride seule :

-
# N’autoriser que des directives spécifiques, pas des catégories entières de
+
# N’autoriser que des directives spécifiques, pas des catégories entières de
 # directives
 AllowOverride None
 AllowOverrideList Redirect RedirectMatch RewriteEngine RewriteRule RewriteCond
- +

Avec cette configuration, toute directive non explicitement spécifiée causera une erreur du serveur si elle est rencontrée dans un fichier .htaccess. C’est un bon compromis entre possibilité et impossibilité totales d’outrepasser la configuration globale.

-

Notez que mettre un fichier .htaccess contenant une - directive dans un répertoire /www/htdocs/exemple - revient exactement au même que mettre la même directive dans une - section Directory <Directory "/www/htdocs/exemple"> - du fichier de configuration de votre serveur principal :

+

Placer une directive dans un fichier .htaccess dans un + répertoire /www/htdocs/example équivaut exactement à placer + cette même directive dans une section <Directory + "/www/htdocs/example"> de la configuration globale de votre + serveur :

-

Fichier .htaccess dans - /www/htdocs/exemple :

+

Fichier .htaccess dans /www/htdocs/example + :

Contenu du fichier .htaccess dans - /www/htdocs/exemple

AddType text/example ".exm"
-
+ /www/htdocs/example
AddType text/example ".exm"
+

Section de votre fichier - httpd.conf

<Directory "/www/htdocs/example">
-    AddType text/example ".exm"
+    httpd.conf
<Directory "/www/htdocs/example">
+AddType text/example ".exm"
 </Directory>
-
+

L'utilisation des fichiers .htaccess peut être entièrement désactivée en définissant la directive AllowOverride à none :

-
AllowOverride None
- +
AllowOverride None
+
top

Comment sont appliquées les directives ?

@@ -227,7 +225,7 @@

Les directives de configuration situées dans un fichier .htaccess s'appliquent au répertoire dans lequel ce fichier .htaccess se trouve, ainsi qu'à tous ses - sous-répertoires. Cependant, il est important de garder à l'esprit + sous-répertoires. Cependant, souvenez-vous qu'il peut y avoir des fichiers .htaccess dans les répertoires de niveau supérieur. Les directives sont appliquées selon l'ordre dans lequel elles sont rencontrées. Ainsi, les @@ -244,19 +242,19 @@

Dans le répertoire /www/htdocs/exemple1 se trouve un fichier .htaccess contenant ce qui suit :

-
Options +ExecCGI
- +
Options +ExecCGI
+
-

Note : "AllowOverride Options" doit être présent +

"AllowOverride Options" doit être présent pour permettre l'utilisation de la directive "Options" dans les fichiers - .htaccess.

+ .htaccess.

Dans le répertoire /www/htdocs/exemple1/exemple2 se trouve un fichier .htaccess contenant ce qui suit :

-
Options Includes
- +
Options Includes
+

Ainsi, à cause de ce second fichier .htaccess du répertoire /www/htdocs/exemple1/exemple2, l'exécution @@ -280,14 +278,14 @@ définition de toute autre option dans les fichiers .htaccess, vous pouvez utiliser :

-
<Directory "/www/htdocs">
-    AllowOverride All
+
<Directory "/www/htdocs">
+AllowOverride All
 </Directory>
 
 <Location "/">
-    Options +IncludesNoExec -ExecCGI
+Options +IncludesNoExec -ExecCGI
 </Location>
- +
Dans cet exemple, on considère que le chemin défini par la directive DocumentRoot est @@ -305,15 +303,15 @@

Contenu du fichier .htaccess :

-
AuthType Basic
+
AuthType Basic
 AuthName "Password Required"
 AuthUserFile "/www/passwords/password.file"
 AuthGroupFile "/www/passwords/group.file"
 Require group admins
+
- -

Notez que AllowOverride AuthConfig doit être présent - pour que ces directives produisent leur effet.

+
AllowOverride AuthConfig doit être présent + pour que ces directives produisent leur effet.

Vous pouvez vous référer au tutoriel sur l'authentification pour une description plus détaillée de @@ -328,14 +326,14 @@ on utilise les directives de configuration suivantes, placées dans un fichier .htaccess enregistré dans le répertoire considéré :

-
Options +Includes
+
Options +Includes
 AddType text/html "shtml"
 AddHandler server-parsed shtml
+
- -

Notez que AllowOverride Options et AllowOverride +

AllowOverride Options et AllowOverride FileInfo doivent être tous les deux présents pour que ces - directives puissent produire leur effet.

+ directives puissent produire leur effet.

Vous pouvez vous référer au tutoriel SSI pour une description plus détaillée des SSI.

@@ -348,7 +346,7 @@ sont relatives au répertoire courant, et non à l'URI original. Considérez les exemples suivants :

-
# Dans httpd.conf
+
# Dans httpd.conf
 RewriteRule "^/images/(.+)\.jpg" "/images/$1.png"
 
 # Dans un fichier .htaccess situé dans le répertoire racine de vos
@@ -357,7 +355,7 @@
 
 # Dans un fichier .htaccess situé dans le répertoire images/
 RewriteRule "^(.+)\.jpg" "$1.png"
- +

On voit que si le fichier .htaccess se situe à la racine de vos documents, le slash de tête est supprimé de la valeur de @@ -367,7 +365,7 @@ remplacement. Il doit donc en être de même dans votre expression rationnelle.

-

Notez aussi que dans un contexte .htaccess, les expressions +

Dans un contexte .htaccess, les expressions rationnelles sont recompilées à chaque requête, alors que dans un contexte de configuration principale, elle ne sont compilées qu’une seule fois et mises en cache.

@@ -391,21 +389,21 @@ l’exécution de programmes CGI dans un répertoire particulier. Pour y parvenir, vous pouvez utiliser la configuration suivante :

-
Options +ExecCGI
+
Options +ExecCGI
 AddHandler cgi-script "cgi" "py"
- +

Alternativement, si vous souhaitez que tous les fichiers d'un répertoire donné soient considérés comme des programmes CGI, vous pouvez utiliser la configuration suivante :

-
Options +ExecCGI
+
Options +ExecCGI
 SetHandler cgi-script
+
- -

Notez que AllowOverride Options et AllowOverride +

AllowOverride Options et AllowOverride FileInfo doivent être tous les deux présents pour que ces - directives puissent produire leur effet.

+ directives puissent produire leur effet.

Vous pouvez vous référer au tutoriel CGI pour une description plus détaillée de la configuration et de la @@ -427,8 +425,8 @@ dénué de sens dans votre ficher .htaccess et de recharger la page :

-
TestMe
- +
TestMe
+

Si aucune erreur (HTTP 500) n'est générée par le serveur, il est pratiquement certain qu'une directive @@ -440,12 +438,12 @@ utilisée dans votre fichier .htaccess n'est pas permise.

-
[Tue May 06 09:12:31.528374 2025] [core:alert] [pid 12345] [client 192.168.1.50:54321] /var/www/html/.htaccess: DirectoryIndex not allowed here
- +
[Thu Jun 18 09:12:31.528374 2026] [core:alert] [pid 12345] [client 192.168.1.50:54321] /var/www/html/.htaccess: DirectoryIndex not allowed here
+

Cela signifie soit que vous utilisez une directive qui n'est jamais permise dans les fichiers .htaccess, soit - que vous n'avez tout simplement pas défini la directive + que vous n'avez pas défini la directive AllowOverride à un niveau suffisant pour la directive que vous utilisez. Consultez la documentation de cette directive pour déterminer quel cas @@ -454,8 +452,8 @@

Le journal des erreurs peut aussi vous signaler une erreur de syntaxe dans l'usage de la directive elle-même.

-
[Tue May 06 09:14:02.946218 2025] [core:alert] [pid 12345] [client 192.168.1.50:54321] /var/www/html/.htaccess: RewriteCond: bad flag delimiters
- +
[Thu Jun 18 09:14:02.946218 2026] [core:alert] [pid 12345] [client 192.168.1.50:54321] /var/www/html/.htaccess: RewriteCond: bad flag delimiters
+

Dans ce cas, le message d'erreur sera spécifique à l'erreur de syntaxe que vous avez commise.

diff -Nru apache2-2.4.68/docs/manual/howto/htaccess.html.pt-br.utf8 apache2-2.4.69/docs/manual/howto/htaccess.html.pt-br.utf8 --- apache2-2.4.68/docs/manual/howto/htaccess.html.pt-br.utf8 2026-05-31 13:57:20.000000000 +0000 +++ apache2-2.4.69/docs/manual/howto/htaccess.html.pt-br.utf8 2026-06-19 14:27:29.000000000 +0000 @@ -30,6 +30,8 @@  ko  |  pt-br 

+
Esta tradução pode estar desatualizada. + Verifique a versão em inglês para alterações recentes.

Arquivos .htaccess oferecem um meio de fazer alterações nas configurações por diretório, sem modificar diretamente os arquivos diff -Nru apache2-2.4.68/docs/manual/howto/http2.html.en apache2-2.4.69/docs/manual/howto/http2.html.en --- apache2-2.4.68/docs/manual/howto/http2.html.en 2026-05-31 13:57:20.000000000 +0000 +++ apache2-2.4.69/docs/manual/howto/http2.html.en 2026-06-19 14:27:29.000000000 +0000 @@ -30,7 +30,7 @@

This is the howto guide for the HTTP/2 implementation in Apache httpd. This feature is production-ready and you may expect interfaces and directives to - remain consistent releases. + remain consistent across releases.

  • The HTTP/2 protocol
  • @@ -49,25 +49,39 @@

    HTTP/2 is the evolution of the world's most successful application layer protocol, HTTP. It focuses on making more efficient use of network resources. It does not change the fundamentals - of HTTP, the semantics. There are still request and responses and headers and all that. So, if + of HTTP, the semantics. There are still requests and responses and headers and all that. So, if you already know HTTP/1, you know 95% about HTTP/2 as well.

    -

    There has been a lot written about HTTP/2 and how it works. The most normative is, of course, - its RFC 7540 - (also available in more readable formatting, YMMV (RFC 7540)). - So, there you'll find the nuts and bolts.

    -

    But, as RFC do, it's not really a good thing to read first. It's better to first understand - what a thing wants to do and then read the RFC about how it is done. A much - better document to start with is http2 explained - by Daniel Stenberg, the author of curl. It is available in - an ever growing list of languages, too!

    -

    Too Long, Didn't read: there are some new terms and gotchas that need to be kept in mind while reading this document:

    + +

    The protocol is defined in RFC 9113 (which obsoletes the original + RFC 7540). For a more approachable introduction, see + http2 explained by Daniel Stenberg, + the author of curl. It covers the motivation + and design of HTTP/2 without requiring you to parse RFC notation first.

    + +

    In short: there are some new terms and gotchas that need to be kept in + mind while reading this document:

    +
      -
    • HTTP/2 is a binary protocol, as opposed to HTTP 1.1 that is plain text. The latter is meant to be human readable (for example sniffing network traffic) meanwhile the former is not. More info in the official FAQ question.
    • +
    • HTTP/2 is a binary protocol, as opposed to HTTP 1.1 + that is plain text. The latter is meant to be human readable (for example + sniffing network traffic) while the former is not. More info in the official + FAQ question.
    • h2 is HTTP/2 over TLS (protocol negotiation via ALPN).
    • -
    • h2c is HTTP/2 over TCP.
    • -
    • A frame is the smallest unit of communication within an HTTP/2 connection, consisting of a header and a variable-length sequence of octets structured according to the frame type. More info in the official documentation RFC 7540.
    • -
    • A stream is a bidirectional flow of frames within the HTTP/2 connection. The correspondent concept in HTTP 1.1 is a request/response message exchange. More info in the official documentation RFC 7540.
    • -
    • HTTP/2 is able to run multiple streams of data over the same TCP connection, avoiding the classic HTTP 1.1 head of blocking slow request and avoiding to re-instantiate TCP connections for each request/response (KeepAlive patched the problem in HTTP 1.1 but did not fully solve it).
    • +
    • h2c is HTTP/2 over cleartext TCP (without TLS). Note that + h2c has been removed from the current specification but httpd still supports it.
    • +
    • A frame is the smallest unit of communication within + an HTTP/2 connection, consisting of a header and a variable-length sequence + of octets structured according to the frame type. More info in the official + documentation RFC 9113.
    • +
    • A stream is a bidirectional flow of frames within the + HTTP/2 connection. The corresponding concept in HTTP 1.1 is a request/response + message exchange. More info in the official documentation + RFC 9113.
    • +
    • HTTP/2 is able to run multiple streams of data over + the same TCP connection, avoiding the classic HTTP 1.1 head-of-line blocking + of slow requests and avoiding the need to re-instantiate TCP connections + for each request/response (KeepAlive patched the problem in HTTP 1.1 but + did not fully solve it).
top
@@ -75,30 +89,30 @@

The HTTP/2 protocol is implemented by its own httpd module, aptly named mod_http2. It implements the complete set - of features described by RFC 7540 and supports HTTP/2 over cleartext (http:), as + of features described by RFC 9113 and supports HTTP/2 over cleartext (http:), as well as secure (https:) connections. The cleartext variant is named 'h2c', the secure one 'h2'. For h2c it allows the direct mode and the Upgrade: via an initial HTTP/1 request.

-

One feature of HTTP/2 that offers new capabilities for web developers is - Server Push. See that section on how your web application - can make use of it.

+

One feature of HTTP/2 that formerly offered new capabilities for web developers is + Server Push, though it is now deprecated. See the + Early Hints section for the recommended alternative.

top

Build httpd with HTTP/2 support

mod_http2 uses the library of nghttp2 - as its implementation base. In order to build mod_http2 you need at least version 1.2.1 of + as its implementation base. Building mod_http2 requires at least version 1.2.1 of libnghttp2 installed on your system.

When you ./configure your Apache httpd source tree, you need to give it '--enable-http2' as additional argument to trigger the build of the module. Should your libnghttp2 reside in an unusual place (whatever that is on your operating system), you may announce its location with '--with-nghttp2=<path>' to configure.

-

While that should do the trick for most, they are people who might prefer a statically +

While that should do the trick for most, there are people who might prefer a statically linked nghttp2 in this module. For those, the option --enable-nghttp2-staticlib-deps - exists. It works quite similar to how one statically links openssl to mod_ssl.

+ exists. It works quite similarly to how one statically links openssl to mod_ssl.

Speaking of SSL, you need to be aware that most browsers will speak HTTP/2 only on https: - URLs, so you need a server with SSL support. But not only that, you will need a SSL library + URLs, so you need a server with SSL support. But not only that, you will need an SSL library that supports the ALPN extension. If OpenSSL is the library you use, you need at least version 1.0.2.

top
@@ -107,54 +121,54 @@

When you have a httpd built with mod_http2 you need some - basic configuration for it becoming active. The first thing, as with every Apache module, + basic configuration for it becoming active. The first thing, as with every httpd module, is that you need to load it:

-
LoadModule http2_module modules/mod_http2.so
- +
LoadModule http2_module modules/mod_http2.so
+

The second directive you need to add to your server configuration is

-
Protocols h2 http/1.1
- +
Protocols h2 http/1.1
+

This allows h2, the secure variant, to be the preferred protocol on your server - connections. When you want to enable all HTTP/2 variants, you simply write:

-
Protocols h2 h2c http/1.1
- -

Depending on where you put this directive, it affects all connections or just - the ones to a certain virtual host. You can nest it, as in:

-
Protocols http/1.1
+    connections. When you want to enable all HTTP/2 variants, write:

+
Protocols h2 h2c http/1.1
+
+

Depending on where you put this directive, it affects all connections or only + those to a specific virtual host. You can nest it, as in:

+
Protocols http/1.1
 <VirtualHost ...>
-    ServerName test.example.org
-    Protocols h2 http/1.1
+ServerName test.example.org
+Protocols h2 http/1.1
 </VirtualHost>
- +

This allows only HTTP/1 on connections, except SSL connections to test.example.org which offer HTTP/2.

Choose a strong SSLCipherSuite

The SSLCipherSuite needs to be configured with a strong TLS cipher suite. The current version of mod_http2 does not enforce any cipher but most - clients do so. Pointing a browser to a h2 enabled server with a inappropriate - cipher suite will force it to simply refuse and fall back to HTTP 1.1. This is a common mistake - that is done while configuring httpd for HTTP/2 the first time, so please keep it in mind to avoid + clients do so. Pointing a browser to a h2 enabled server with an inappropriate + cipher suite causes it to refuse and fall back to HTTP 1.1. This is a common mistake + made while configuring httpd for HTTP/2 the first time, so please keep it in mind to avoid long debugging sessions! If you want to be sure about the cipher suite to choose please avoid - the ones listed in the HTTP/2 TLS reject list (RFC 7540).

+ the ones listed in the HTTP/2 TLS reject list (RFC 9113).

The order of protocols mentioned is also relevant. By default, the first one is the most preferred protocol. When a client offers multiple choices, the one most to the left is selected. In

-
Protocols http/1.1 h2
- +
Protocols http/1.1 h2
+

the most preferred protocol is HTTP/1 and it will always be selected unless a client only supports h2. Since we want to talk HTTP/2 to clients that support it, the better order is

-
Protocols h2 h2c http/1.1
- +
Protocols h2 h2c http/1.1
+

There is one more thing to ordering: the client has its own preferences, too. If you want, you can configure your server to select the protocol most preferred by the client:

-
ProtocolsHonorOrder Off
- +
ProtocolsHonorOrder Off
+

makes the order you wrote the Protocols irrelevant and only the client's ordering will decide.

A last thing: the protocols you configure are not checked for correctness @@ -171,7 +185,7 @@

HTTP/2 is supported in all multi-processing modules that come with httpd. However, if you use the prefork mpm, there will be severe restrictions.

-

In prefork, mod_http2 will only process one request at at time +

In prefork, mod_http2 will only process one request at a time per connection. But clients, such as browsers, will send many requests at the same time. If one of these takes long to process (or is a long polling one), the other requests will stall.

@@ -187,9 +201,9 @@

Clients

-

Almost all modern browsers support HTTP/2, but only over SSL connections: Firefox (v43), - Chrome (v45), Safari (since v9), iOS Safari (v9), Opera (v35), Chrome for Android (v49) - and Internet Explorer (v11 on Windows10) (source).

+

All modern browsers support HTTP/2 over TLS connections + (source). Support has been universal across + major browsers since approximately 2015.

Other clients, as well as servers, are listed on the Implementations wiki, among them implementations for c, c++, common lisp, dart, erlang, haskell, java, nodejs, php, @@ -202,14 +216,16 @@

The first tool to mention is of course curl. Please make sure that your version supports HTTP/2 checking its Features:

-
    $ curl -V
-    curl 7.45.0 (x86_64-apple-darwin15.0.0) libcurl/7.45.0 OpenSSL/1.0.2d zlib/1.2.8 nghttp2/1.3.4
-    Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 [...] 
-    Features: IPv6 Largefile NTLM NTLM_WB SSL libz TLS-SRP HTTP2
-    
- -

Mac OS homebrew notes

- brew install curl --with-openssl --with-nghttp2 +
$ curl -V
+curl 8.20.0 (x86_64-pc-linux-gnu) libcurl/8.20.0 OpenSSL/3.5.7 zlib/1.3.1 nghttp2/1.69.0
+Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 [...]
+Features: IPv6 Largefile NTLM NTLM_WB SSL libz TLS-SRP HTTP2
+
+
+

macOS Homebrew notes

+

Homebrew's curl includes HTTP/2 support by default. Install with + brew install curl and follow the displayed caveats to put it ahead + of the system curl in your PATH.

And for really deep inspection wireshark.

The nghttp2 package also includes clients, such as:

@@ -219,13 +235,19 @@

Chrome offers detailed HTTP/2 logs on its connections via the special net-internals page. There is also an - interesting extension for Chrome - and Firefox - to visualize when your browser is using HTTP/2.

+ interesting extension for Chrome + and Firefox + to indicate when your browser is using HTTP/2.

top

Server Push

+

Deprecation Notice

+

Server Push is deprecated in RFC 9113. Major browsers + (Chrome 106+, Edge 106+) have removed support for it. While mod_http2 + still implements push, new deployments should use 103 Early Hints + instead as a more reliable way to inform clients about needed resources.

+

The HTTP/2 protocol allows the server to PUSH responses to a client it never asked for. The tone of the conversation is: "here is a request that you never sent and the response to it will arrive soon..."

@@ -242,53 +264,53 @@

To summarize: there is no one good strategy on how to make best use of this feature of HTTP/2 and everyone is still experimenting. So, how do you experiment with it in Apache httpd?

-

mod_http2 inspect response header for Link headers +

mod_http2 inspects response headers for Link headers in a certain format:

-
Link </xxx.css>;rel=preload, </xxx.js>; rel=preload
- +
Link </xxx.css>;rel=preload, </xxx.js>; rel=preload
+

If the connection supports PUSH, these two resources will be sent to the client. As a web developer, you may set these headers either directly in your application response or you configure the server via

-
<Location /xxx.html>
-    Header add Link "</xxx.css>;rel=preload"
-    Header add Link "</xxx.js>;rel=preload"
+
<Location /xxx.html>
+Header add Link "</xxx.css>;rel=preload"
+Header add Link "</xxx.js>;rel=preload"
 </Location>
- +

If you want to use preload links without triggering a PUSH, you can use the nopush parameter, as in

-
Link </xxx.css>;rel=preload;nopush
- +
Link </xxx.css>;rel=preload;nopush
+

or you may disable PUSHes for your server entirely with the directive

-
H2Push Off
- +
H2Push Off
+

And there is more:

The module will keep a diary of what has been PUSHed for each connection (hashes of URLs, basically) and will not PUSH the same resource twice. When the connection closes, this information is discarded.

There are people thinking about how a client can tell a server what it - already has, so PUSHes for those things can be avoided, but this is all - highly experimental right now.

-

Another experimental draft that has been implemented in mod_http2 + already has, so PUSHes for those things can be avoided, but no standard + emerged before push was deprecated.

+

An experimental draft that was implemented in mod_http2 is the Accept-Push-Policy Header Field where a client can, for each request, define - what kind of PUSHes it accepts.

+ what kind of PUSHes it accepts. This draft expired and was never adopted.

PUSH might not always trigger the request/response/performance that one expects or hopes for. There are various studies on this topic to be found on the web that explain benefits and weaknesses and how different features of client and network influence - the outcome. For example: just because the server PUSHes a resource does not mean + the outcome. For example: the fact that the server PUSHes a resource does not mean a browser will actually use the data.

The major thing that influences the response being PUSHed is the request that was simulated. The request URL for a PUSH is given by the application, but where do the request headers come from? For example, will the PUSH request a accept-language header and if yes with what value?

-

Apache will look at the original request (the one that triggered the PUSH) and copy the +

httpd will look at the original request (the one that triggered the PUSH) and copy the following headers over to PUSH requests: user-agent, accept, accept-encoding, accept-language, cache-control.

All other headers are ignored. Cookies will also not be copied over. PUSHing resources that require a cookie to be present will not work. This can be a matter of debate. But - unless this is more clearly discussed with browser, let's err on the side of caution and - not expose cookie where they might ordinarily not be visible.

+ unless this is more clearly discussed with browsers, let's err on the side of caution and + not expose cookies where they might ordinarily not be visible.

top

Early Hints

@@ -296,23 +318,23 @@

An alternative to PUSHing resources is to send Link headers to the client before the response is even ready. This uses the HTTP feature called "Early Hints" and is described in RFC 8297.

-

In order to use this, you need to explicitly enable it on the server via

-
H2EarlyHints on
- +

To use this, you need to explicitly enable it on the server via

+
H2EarlyHints on
+

(It is not enabled by default since some older browser tripped on such responses.)

If this feature is on, you can use the directive H2PushResource to trigger early hints and resource PUSHes:

-
<Location /xxx.html>
-    H2PushResource /xxx.css
-    H2PushResource /xxx.js
+
<Location /xxx.html>
+H2PushResource /xxx.css
+H2PushResource /xxx.js
 </Location>
- +

This will send out a "103 Early Hints" response to a client as soon - as the server starts processing the request. This may be much early than + as the server starts processing the request. This may be much earlier than the time the first response headers have been determined, depending on your web application.

If H2Push is enabled, this will also start the PUSH right after the - 103 response. If H2Push is disabled however, the 103 response will be send + 103 response. If H2Push is disabled however, the 103 response will be sent nevertheless to the client.

diff -Nru apache2-2.4.68/docs/manual/howto/http2.html.fr.utf8 apache2-2.4.69/docs/manual/howto/http2.html.fr.utf8 --- apache2-2.4.68/docs/manual/howto/http2.html.fr.utf8 2026-06-05 12:03:44.000000000 +0000 +++ apache2-2.4.69/docs/manual/howto/http2.html.fr.utf8 2026-07-01 15:26:27.000000000 +0000 @@ -42,7 +42,7 @@
  • Clients
  • Outils efficaces pour déboguer HTTP/2
  • Push serveur
  • -
  • Suggestions précoces
  • +
  • EarlyHints
  • Voir aussi

    top
    @@ -53,47 +53,46 @@ plus efficace des ressources réseau. Il ne modifie pas les aspects fondamentaux de HTTP (sa sémantique). Entre autres, il y a toujours des requêtes, des réponses et des en-têtes. Par conséquent, si vous connaissez - HTTP/1, vous connaissez déjà 95% de HTTP/2.

    -

    Beaucoup a déjà été écrit à propos de HTTP/2 et de son fonctionnement. La - documentation la plus officielle est bien entendu sa RFC 7540 (ou cette version au format plus - lisible : YMMV (RFC 7540). Vous trouverez ici une description des rouages de HTTP/2 dans - leurs moindres détails.

    -

    Le premier document à lire lorsqu'on ne connaît pas un mécanisme n'est - cependant pas sa RFC. Il est préférable de comprendre tout d'abord ce - que ce mécanisme est censé faire, et seulement ensuite de lire sa RFC - pour comprendre comment il fonctionne. http2 explained de Daniel Stenberg - (l'auteur de curl) - est un bien meilleur document pour démarrer l'étude de HTTP/2. En outre, de - nouveaux langages s'ajoutent régulièrement à sa liste de traductions - disponibles !

    -

    Si vous n'avez pas envie de le lire parce que vous le trouvez trop long, - voici certains pièges à éviter et nouveaux termes à connaître avant de lire - ce document :

    + HTTP/1, vous connaissez déjà 95% deHTTP/2.

    + +

    Le protocole est définii dans la RFC 9113 (qui rend obsolète la + RFC 7540 originale). Pour une approche plus abordable, voir le + document http2 explained par Daniel + Stenberg, l’auteur de curl. Il couvre les + but et conception de HTTP/2 sans nécessiter d’analyse de la notation RFC + préalable.

    + +

    En bref, il y a quelques nouveaux termes et pièges à éviter que vous + devez garder à l’esprit lors de la lecture de ce document :

    +
      -
    • A la différence de HTTP/1 qui est en texte pur, HTTP/2 est un - protocole binaire, et alors que le premier est lisible par - un humain (par exemple pour sniffer le trafic réseau), le second ne - l'est pas. Voir la FAQ - officielle pour plus de détails.
    • +
    • À l’opposé de HTTP 1.1 qui est un protocole en texte pur, HTTP/2 est + un protocol binaire. Le premier a été pensé pour être + lisible par un humain (par exemple pour surveiller le trafic réseau), + alors que ce n’est pas le cas pour le second. Vous trouverez plus + d’information dans cette question de + la FAQ officielle.
    • h2 correspond à HTTP/2 sur TLS (négociation de protocole via ALPN).
    • -
    • h2c correspond à HTTP/2 sur TCP.
    • -
    • Une frame ou trame est la plus petite unité de - communication au sein d'une connexion HTTP/2 et comporte une en-tête et - une séquence d'octets de longueur variable dont la structure correspond - au type de trame. Voir la section correspondante de la documentation - officielle pour plus de détails (RFC 7540).
    • Un - stream est un flux bidirectionnel de frames au sein - d'une connexion HTTP/2. La notion correspondante dans HTTP/1 est un - échange de messages de type requête et réponse. Voir la section - correspondante de la documentation officielle pour plus de détails - (RFC 7540).
    • -
    • HTTP/2 peut gérer plusieurs streams de données sur - la même connexion TCP, ce qui permet d'éviter le point de blocage - classique de HTTP/1 pour les requêtes lentes, et de ne pas avoir à - ouvrir de nouvelles connexions TCP pour chaque requête/réponse (les - connexions persistantes ou KeepAlive avaient contourné le problème dans - HTTP/1 mais ne l'avaient pas entièrement résolu)
    • +
    • h2c correspond à HTTP/2 sur TCP en texte clair + (sans TLS). Notez que h2c a été supprimé de la spécification actuelle + mais que httpd le prend encore en charge.
    • +
    • Une trame (frame) est la plus petite unité de + communication au sein d’une connexion HTTP/2 ; elle comporte un en-tête + et une séquence d’octets de longueur variable structurée en fonction du + type de trame. Vous trouverez plus d’informations dans la documentation + officielle de la RFC 9113.
    • +
    • Un flux (stream) est une circulation + bidirectionnelle de trames au sein d’une connexion HTTP/2. Le concept + correspondant dans HTTP 1.1 est un échange de messages requête/réponse. + Vous trouverez plus d’informations dans la documentation officielle de + la RFC 9113.
    • +
    • HTTP/2 peut gérer plusieurs flux de données sur la + même connexion TCP, évitant le classique blocage en tête de file + des requêtes HTTP 1.1 lentes, ainsi que la nécessité de réinitier des + connexions TCP pour chaque requête/réponse (KeepAlive contournait le + problème dans HTTP 1.1, mais ne le résolvait pas entièrement).
    • +
    top
    @@ -101,14 +100,15 @@

    Le protocole HTTP/2 est implémenté dans Apache httpd via un module propre, pertinemment nommé mod_http2. Ce - module implémente toutes les fonctionnalités décrites par la RFC 7540 et + module implémente toutes les fonctionnalités décrites par la RFC 9113 et supporte les connexions en texte pur (http:), ou sécurisées (https:). La variante texte pur se nomme 'h2c', et la variante sécurisée 'h2'. h2c peut être en mode direct ou Upgrade: via une requête initiale en HTTP/1.

    -

    Server Push est une nouvelle fonctionnalité offerte - aux développeurs web par HTTP/2. La section correspondante de ce document - vous indiquera comment votre application peut en tirer parti.

    +

    Server Push était une nouvelle fonctionnalité offerte + aux développeurs web par HTTP/2, mais elle est maintenant obsolète. Voir la + section EarlyHints pour l’alternative + recommandée.

    top

    Compilation de httpd avec le support de HTTP/2

    @@ -143,32 +143,31 @@

    Maintenant que vous disposez d'un binaire httpd compilé avec le module mod_http2, l'activation de ce dernier nécessite un minimum de configuration supplémentaire. En premier lieu, comme pour tout - module Apache, vous devez le charger :

    -
    LoadModule http2_module modules/mod_http2.so
    - + module de httpd, vous devez le charger :

    +
    LoadModule http2_module modules/mod_http2.so
    +

    La seconde directive que vous devez ajouter à votre fichier de configuration est

    -
    Protocols h2 http/1.1
    - +
    Protocols h2 http/1.1
    +

    Ceci permet de définir h2, la variante sécurisée, comme le protocole préféré pour les connexions à votre serveur. Si vous souhaitez que toutes les variantes soient disponibles, utilisez la directive suivante :

    -
    Protocols h2 h2c http/1.1
    - -

    Selon l'endroit où vous placez cette directive, elle affectera l'ensemble - de votre serveur, ou seulement un ou plusieurs serveurs virtuels. Vous +

    Protocols h2 h2c http/1.1
    +
    +

    Selon l'endroit où vous placez cette directive, elle affectera toute les + connexions, ou seulement celles vers un serveur virtuel spécifique. Vous pouvez aussi l'imbriquer comme dans l'exemple suivant :

    -
    Protocols http/1.1
    +
    Protocols http/1.1
     <VirtualHost ...>
    -    ServerName test.example.org
    -    Protocols h2 http/1.1
    +ServerName test.example.org
    +Protocols h2 http/1.1
     </VirtualHost>
    +
    - -

    Seules les connexions en HTTP/1 seront alors permises, sauf pour le serveur - virtuel test.example.org qui acceptera aussi les connexions SSL - en HTTP/2.

    +

    Seules les connexions en HTTP/1 seront alors permises, sauf pour les + connexions SSL vers test.example.org qui propose aussi HTTP/2.

    Utilisez une chaîne d'algorithmes de chiffrement forte

    La directive SSLCipherSuite doit être définie avec une chaîne d'algorithmes de chiffrement TLS forte. Même si @@ -186,21 +185,22 @@

    L'ordre des protocoles indiqués est aussi important. Par défaut, le premier sera le protocole préféré. Lorsqu'un client offre plusieurs choix, c'est le plus à gauche qui sera sélectionné. Dans

    -
    Protocols http/1.1 h2
    - +
    Protocols http/1.1 h2
    +

    le protocole préféré sera HTTP/1 et il sera toujours sélectionné sauf si un client ne supporte que h2. Comme nous souhaitons communiquer en HTTP/2 avec les clients qui le supportent, la meilleure définition de la directive est

    -
    Protocols h2 h2c http/1.1
    - +
    Protocols h2 h2c http/1.1
    +

    Toujours à propos de l'ordre des protocoles, le client a lui aussi ses propres préférences en la matière. À ce titre, si vous le souhaitez, vous pouvez configurer votre serveur pour qu'il sélectionne non plus son protocole préféré, mais au contraire le protocole préféré du client :

    -
    ProtocolsHonorOrder Off
    +
    ProtocolsHonorOrder Off
    +

    Avec cette directive, l'ordre des protocoles que vous avez défini devient caduque et seul l'ordre défini par le client sera pris en @@ -244,10 +244,10 @@

    Clients

    -

    La plupart des navigateurs modernes supportent HTTP/2, mais seulement sur - des connexions SSL : Firefox v43, Chrome v45, Safari v9, iOS Safari v9, - Opera v35, Chrome pour Android v49 et - Internet Explorer v11 sous Windows10 (selon cette source).

    +

    Tous les navigateurs modernes prennent en charge HTTP/2 sur + des connexions TLS (source). La + prise en charge est devenue universelle sur les navigateurs principaux à peu + près en 2015.

    D'autres clients et serveurs sont listés dans le wiki des implémentations ; entre autres des implémentations pour c, c++, common lisp, dart, erlang, haskell, java, nodejs, php, python, perl, ruby, rust, @@ -261,14 +261,17 @@

    Le premier d'entre eux est bien entendu curl. Assurez-vous au préalable que votre version supporte HTTP/2 en vérifiant ses Fonctionnalités :

    -
        $ curl -V
    -    curl 7.45.0 (x86_64-apple-darwin15.0.0) libcurl/7.45.0 OpenSSL/1.0.2d zlib/1.2.8 nghttp2/1.3.4
    -    Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 [...]
    -    Features: IPv6 Largefile NTLM NTLM_WB SSL libz TLS-SRP HTTP2
    -    
    - -

    homebrew sous Mac OS :

    - brew install curl --with-openssl --with-nghttp2 +
    $ curl -V
    +curl 8.20.0 (x86_64-pc-linux-gnu) libcurl/8.20.0 OpenSSL/3.5.7 zlib/1.3.1 nghttp2/1.69.0
    +Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 [...]
    +Features: IPv6 Largefile NTLM NTLM_WB SSL libz TLS-SRP HTTP2
    +
    +
    +

    Notes à propos de macOS Homebrew

    +

    curl de Homebrew inclut par défaut la prise en charge de + HTTP/2. Installez le avec la commande brew install curl et + suivez les instructions affichées pour le mettre en tête du PATH de votre + système.

    Pour une inspection en profondeur : wireshark.

    Le paquet nghttp2 inclut aussi des @@ -282,13 +285,21 @@

    Chrome fournit des journaux détaillés des connexions HTTP/2 via la page special net-internals page. Il y - a aussi cette extension intéressante pour Chrome - et Firefox + a aussi cette extension intéressante pour Chrome + et Firefox qui permet d'indiquer que votre navigateur utilise HTTP/2.

    top

    Push serveur

    +

    Notification d’obsolescence

    +

    Server Push est obsolète dans la RFC 9113. Les + navigateurs principaux (Chrome 106+, Edge 106+) ont supprimé sa prise en + charge. Bien que mod_http2 implémente encore push, les + nouveaux déploiements doivent utiliser 103 Early + Hints à titre de méthode plus fiable pour informer les clients à propos + des ressources nécessaires.

    +

    Le protocole HTTP/2 permet au serveur de proposer (PUSH) des réponses pour lesquelles le client n'a rien demandé. La communication autour de ces réponses est du style : "voici une requête que vous n'avez jamais @@ -313,25 +324,25 @@ procéder vous-même à ces expérimentations :

    mod_http2 inspecte l'en-tête de la réponse et recherche les en-têtes Link sous un certain format :

    -
    Link </xxx.css>;rel=preload, </xxx.js>; rel=preload
    - +
    Link </xxx.css>;rel=preload, </xxx.js>; rel=preload
    +

    Si la connexion supporte PUSH, ces deux ressources seront envoyées au client. En tant que développeur web vous pouvez définir ces en-têtes soit directement au niveau de la réponse de votre application, soit en configurant votre serveur via

    -
    <Location /xxx.html>
    -    Header add Link "</xxx.css>;rel=preload"
    -    Header add Link "</xxx.js>;rel=preload"
    +
    <Location /xxx.html>
    +Header add Link "</xxx.css>;rel=preload"
    +Header add Link "</xxx.js>;rel=preload"
     </Location>
    - +

    Si vous souhaitez utiliser des liens preload sans déclencher de PUSH, vous pouvez utiliser le paramètre nopush comme suit :

    -
    Link </xxx.css>;rel=preload;nopush
    - +
    Link </xxx.css>;rel=preload;nopush
    +

    Vous pouvez aussi désactiver les PUSHes pour l'ensemble de votre serveur via la directive

    -
    H2Push Off
    - +
    H2Push Off
    +

    À savoir aussi :

    Le module maintient un journal des ressources ayant fait l'objet d'un PUSH pour chaque connexion (en général des condensés hash des URLs), et @@ -339,14 +350,13 @@ lorsque la connexion est fermée, le journal de ses PUSHes est supprimé.

    Certains développeurs planchent sur la manière de permettre au client d'informer le serveur des ressources qu'il possède déjà dans son cache afin - d'éviter les PUSHes pour ces dernières, mais ceci n'en est actuellement qu'à - un stade très expérimental.

    + d'éviter les PUSHes pour ces dernières, mais aucune norme n’a émergé avant + que push ne devienne obsolète.

    L' - en-tête Accept-Push-Policy est un autre dispositif expérimental + en-tête Accept-Push-Policy est un dispositif expérimental implémenté dans mod_http2 ; il permet au client de définir pour - chaque requête quels genres de PUSHes il accepte.

    - - + chaque requête quels genres de PUSHes il accepte. Ce dispositif a été + abandonné et n’a jamais été adopté.

    La fonctionnalité PUSH n'apportera pas toujours le gain de performances dans l'obtention de réponses aux requêtes. Vous trouverez plusieurs études sur ce @@ -370,7 +380,7 @@ d'exposer les cookies là où ils ne sont pas censés être visibles.

    top
    -

    Suggestions précoces

    +

    EarlyHints

    A l'instar des ressources PUSHées, une autre méthode consiste à envoyer des en-têtes Link au client avant même que la réponse ne soit @@ -378,18 +388,18 @@ précoces" (Early Hints) décrite dans la RFC 8297.

    Pour utiliser cette fonctionnalité, vous devez l'activer explicitement sur le serveur via :

    -
    H2EarlyHints on
    - +
    H2EarlyHints on
    +

    Elle n'est en effet pas activée par défaut car certains navigateurs anciens perdent pied avec de telles réponses.

    Une fois cette fonctionnalité activée, vous pouvez utiliser la directive H2PushResource pour déclencher les suggestions précoces et les PUSHes de ressources :

    -
    <Location /xxx.html>
    -    H2PushResource /xxx.css
    -    H2PushResource /xxx.js
    +
    <Location /xxx.html>
    +H2PushResource /xxx.css
    +H2PushResource /xxx.js
     </Location>
    - +

    Le serveur enverra alors au client une réponse "103 Early Hints" dès qu'il commencera à traiter la requête. Selon votre application web, cet envoi peut intervenir beaucoup plus tôt que le diff -Nru apache2-2.4.68/docs/manual/howto/public_html.html.en apache2-2.4.69/docs/manual/howto/public_html.html.en --- apache2-2.4.68/docs/manual/howto/public_html.html.en 2026-05-31 13:57:20.000000000 +0000 +++ apache2-2.4.69/docs/manual/howto/public_html.html.en 2026-06-19 14:27:29.000000000 +0000 @@ -36,14 +36,20 @@ to a URL http://example.com/~username/ will get content out of the home directory of the user "username", out of the subdirectory specified by the UserDir directive.

    -

    Note that, by default, access to these directories is not +

    By default, access to these directories is not enabled. You can enable access when using UserDir by uncommenting the line:

    -
    #Include conf/extra/httpd-userdir.conf
    - +
    #Include conf/extra/httpd-userdir.conf
    +

    in the default config file conf/httpd.conf, and adapting the httpd-userdir.conf file as necessary, or by including the appropriate directives in a <Directory> block within the main config file.

    + +
    Third-party distributions of httpd (from your OS vendor or + package manager) often place the mod_userdir + configuration in a separate file, and may enable it by default. + Check your distribution's documentation for specifics. The examples + in this document assume a default source build of httpd.
    • Per-user web directories
    • Setting the file path with UserDir
    • @@ -71,8 +77,8 @@ assumed to be a directory path relative to the home directory of the specified user. Given this configuration:

      -
      UserDir public_html
      - +
      UserDir public_html
      +

      the URL http://example.com/~rbowen/file.html will be translated to the file path @@ -82,8 +88,8 @@ constructed using that path, plus the username specified. Given this configuration:

      -
      UserDir /var/html
      - +
      UserDir /var/html
      +

      the URL http://example.com/~rbowen/file.html will be translated to the file path /var/html/rbowen/file.html

      @@ -92,8 +98,8 @@ in which the asterisk is replaced with the username. Given this configuration:

      -
      UserDir /var/www/*/docs
      - +
      UserDir /var/www/*/docs
      +

      the URL http://example.com/~rbowen/file.html will be translated to the file path @@ -101,14 +107,14 @@

      Multiple directories or directory paths can also be set.

      -
      UserDir public_html /var/html
      - +
      UserDir public_html /var/html
      +
      -

      For the URL http://example.com/~rbowen/file.html, - Apache will search for ~rbowen. If it isn't found, - Apache will search for rbowen in /var/html. If - found, the above URL will then be translated to the file path - /var/html/rbowen/file.html

      +

      The arguments are considered in the order they appear. + For the URL http://example.com/~rbowen/file.html, + httpd will search for ~rbowen. If it isn't found, + httpd will then search for rbowen in /var/html. + The file will be served from whichever location is found first.

    top
    @@ -117,8 +123,8 @@

    The UserDir directive can be used to redirect user directory requests to external URLs.

    -
    UserDir http://example.org/users/*/
    - +
    UserDir http://example.org/users/*/
    +

    The above example will redirect a request for http://example.com/~bob/abc.html to @@ -132,17 +138,17 @@

    Using the syntax shown in the UserDir documentation, you can restrict what users are permitted to use this functionality:

    -
    UserDir disabled root jro fish
    - +
    UserDir disabled root jro fish
    +

    The configuration above will enable the feature for all users except for those listed in the disabled statement. You can, likewise, disable the feature for all but a few users by using a configuration like the following:

    -
    UserDir disabled
    +
    UserDir disabled
     UserDir enabled rbowen krietz
    - +

    See UserDir documentation for additional examples.

    @@ -152,16 +158,16 @@

    Enabling a cgi directory for each user

    -

    In order to give each user their own cgi-bin directory, you can use +

    To give each user their own cgi-bin directory, you can use a <Directory> directive to make a particular subdirectory of a user's home directory cgi-enabled.

    -
    <Directory "/home/*/public_html/cgi-bin/">
    -    Options ExecCGI
    -    SetHandler cgi-script
    +
    <Directory "/home/*/public_html/cgi-bin/">
    +Options ExecCGI
    +SetHandler cgi-script
     </Directory>
    - +

    Then, presuming that UserDir is set to public_html, a cgi program example.cgi @@ -176,7 +182,7 @@

    Allowing users to alter configuration

    -

    If you want to allows users to modify the server configuration in +

    If you want to allow users to modify the server configuration in their web space, they will need to use .htaccess files to make these changes. Ensure that you have set AllowOverride to a value sufficient for the directives that you want to permit the users diff -Nru apache2-2.4.68/docs/manual/howto/public_html.html.es apache2-2.4.69/docs/manual/howto/public_html.html.es --- apache2-2.4.68/docs/manual/howto/public_html.html.es 2026-05-31 13:57:20.000000000 +0000 +++ apache2-2.4.69/docs/manual/howto/public_html.html.es 2026-06-19 14:27:29.000000000 +0000 @@ -30,6 +30,10 @@  ko  |  tr 

    +
    Esta traducción podría estar + obsoleta. Consulte la versión en inglés de la + documentación para comprobar si se han producido cambios + recientemente.

    En sistemas con múltiples usuarios, cada usuario puede tener un website en su directorio home usando la directiva UserDir. Los visitantes de una URL diff -Nru apache2-2.4.68/docs/manual/howto/public_html.html.fr.utf8 apache2-2.4.69/docs/manual/howto/public_html.html.fr.utf8 --- apache2-2.4.68/docs/manual/howto/public_html.html.fr.utf8 2026-05-31 13:57:20.000000000 +0000 +++ apache2-2.4.69/docs/manual/howto/public_html.html.fr.utf8 2026-07-01 15:26:27.000000000 +0000 @@ -38,18 +38,25 @@ recevront un contenu situé dans le répertoire home de l'utilisateur "nom_utilisateur", et dans le sous-répertoire spécifié par la directive UserDir.

    -

    Notez que par défaut, l'accès à ces répertoires n'est +

    Par défaut, l'accès à ces répertoires n'est pas permis. Vous pouvez en permettre l'accès à l'aide de la directive UserDir en décommentant la ligne :

    -
    #Include conf/extra/httpd-userdir.conf
    - +
    #Include conf/extra/httpd-userdir.conf
    +

    dans le fichier de configuration par défaut conf/httpd.conf, et en adaptant le fichier httpd-userdir.conf selon vos besoins, ou en incluant les directives appropriées dans une section <Directory> du fichier de configuration principal.

    + +
    Les distributions tierces de httpd (fournies par le fabricant de votre + OS ou par le gestionnaire de paquets) placent souvent la configuration de + mod_userdir dans un fichier séparé, et peuvent l’activer + par défaut. Consultez la documentation de votre distribution pour les + spécificités. Les exemples de ce document présupposent une construction par + défaut à partir des sources de httpd.
    • Répertoires web utilisateurs
    • Définition du chemin des fichiers avec UserDir
    • @@ -80,8 +87,8 @@ interprété comme chemin relatif au répertoire home de l'utilisateur considéré. Par exemple, avec cette configuration :

      -
      UserDir public_html
      - +
      UserDir public_html
      +

      l'URL http://example.com/~rbowen/fichier.html correspondra au chemin fichier @@ -91,9 +98,8 @@ sera construit en utilisant ce chemin, suivi du nom de l'utilisateur considéré. Par exemple, avec cette configuration :

      -
      UserDir /var/html
      - - +
      UserDir /var/html
      +

      l'URL http://example.com/~rbowen/fichier.html correspondra au chemin fichier /var/html/rbowen/fichier.html

      @@ -102,8 +108,8 @@ remplacé par le nom de l'utilisateur dans le chemin du fichier correspondant. Par exemple, avec cette configuration :

      -
      UserDir /var/www/*/docs
      - +
      UserDir /var/www/*/docs
      +

      l'URL http://example.com/~rbowen/fichier.html correspondra au chemin fichier @@ -112,14 +118,14 @@

      On peut aussi définir plusieurs répertoires ou chemins de répertoires.

      -
      UserDir public_html /var/html
      - +
      UserDir public_html /var/html
      +
      -

      Avec l'URL http://example.com/~rbowen/fichier.html, - Apache va rechercher ~rbowen. S'il ne le trouve pas, - Apache va rechercher rbowen dans - /var/html. S'il le trouve, l'URL ci-dessus correspondra - au chemin fichier /var/html/rbowen/file.html

      +

      Les arguments sont pris en compte selon l’ordre dans lequel ils + apparaissent. Pour l’URL http://example.com/~rbowen/file.html, + httpd recherchera d’abord ~rbowen. Si ce dernier n’est pas + trouvé, httpd cherchera rbowen dans /var/html. Le + fichier sera servi depuis le premier emplacement trouvé.

    top
    @@ -128,8 +134,8 @@

    On peut utiliser la directive UserDir pour rediriger les requêtes relatives aux répertoires utilisateurs vers des URLs externes.

    -
    UserDir http://example.org/users/*/
    - +
    UserDir http://example.org/users/*/
    +

    L'exemple ci-dessus va rediriger une requête pour http://example.com/~bob/abc.html vers @@ -144,8 +150,8 @@ vous pouvez définir quels utilisateurs sont autorisés à utiliser cette fonctionnalité :

    -
    UserDir disabled root jro fish
    - +
    UserDir disabled root jro fish
    +

    La configuration ci-dessus va autoriser l'utilisation de la fonctionnalité pour tous les utilisateurs, à l'exception de ceux @@ -154,10 +160,9 @@ utilisateurs sauf certains d'entre eux en utilisant une configuration du style :

    -
    UserDir disabled
    +
    UserDir disabled
     UserDir enabled rbowen krietz
    - - +

    Vous trouverez d'autres exemples dans la documentation de UserDir.

    @@ -170,12 +175,11 @@ vous pouvez utiliser une section <Directory> pour activer CGI dans un sous-répertoire particulier d'un répertoire home utilisateur.

    -
    <Directory "/home/*/public_html/cgi-bin/">
    -    Options ExecCGI
    -    SetHandler cgi-script
    +
    <Directory "/home/*/public_html/cgi-bin/">
    +Options ExecCGI
    +SetHandler cgi-script
     </Directory>
    - - +

    Avec la configuration ci-dessus, et en supposant que UserDir est défini à public_html, un programme CGI exemple.cgi pourra être chargé depuis ce diff -Nru apache2-2.4.68/docs/manual/howto/public_html.html.tr.utf8 apache2-2.4.69/docs/manual/howto/public_html.html.tr.utf8 --- apache2-2.4.68/docs/manual/howto/public_html.html.tr.utf8 2026-05-31 13:57:20.000000000 +0000 +++ apache2-2.4.69/docs/manual/howto/public_html.html.tr.utf8 2026-06-19 14:27:29.000000000 +0000 @@ -30,6 +30,7 @@  ko  |  tr 

    +
    Bu çeviri güncel olmayabilir. Son değişiklikler için İngilizce sürüm geçerlidir.

    Çok kullanıcılı sistemlerde, UserDir yönergesi ile her kullanıcının kendi ev dizininde bir sitesi olması sağlanabilir. diff -Nru apache2-2.4.68/docs/manual/howto/reverse_proxy.html.en apache2-2.4.69/docs/manual/howto/reverse_proxy.html.en --- apache2-2.4.68/docs/manual/howto/reverse_proxy.html.en 2026-05-31 13:57:20.000000000 +0000 +++ apache2-2.4.69/docs/manual/howto/reverse_proxy.html.en 2026-06-19 14:27:29.000000000 +0000 @@ -27,26 +27,19 @@  fr 

    -

    In addition to being a "basic" web server, and providing static and - dynamic content to end-users, Apache httpd (as well as most other web - servers) can also act as a reverse proxy server, also-known-as a - "gateway" server.

    - -

    In such scenarios, httpd itself does not generate or host the data, - but rather the content is obtained by one or several backend servers, - which normally have no direct connection to the external network. As - httpd receives a request from a client, the request itself is proxied - to one of these backend servers, which then handles the request, generates - the content and then sends this content back to httpd, which then - generates the actual HTTP response back to the client.

    - -

    There are numerous reasons for such an implementation, but generally - the typical rationales are due to security, high-availability, load-balancing - and centralized authentication/authorization. It is critical in these - implementations that the layout, design and architecture of the backend - infrastructure (those servers which actually handle the requests) are - insulated and protected from the outside; as far as the client is concerned, - the reverse proxy server is the sole source of all content.

    +

    Besides serving static and dynamic content directly, Apache httpd + can act as a reverse proxy server (sometimes called a gateway).

    + +

    In this mode, httpd does not generate the content itself. Instead, + it forwards each client request to one or more backend servers that + have no direct connection to the external network. The backend + processes the request and returns the content to httpd, which then + delivers the HTTP response to the client.

    + +

    Common reasons include security, high availability, load balancing, + and centralized authentication. The backend infrastructure should be isolated from the external + network; as far as the client is concerned, the reverse proxy + is the sole source of all content.

    A typical implementation is below:

    reverse-proxy-arch

    @@ -79,28 +72,28 @@ to a single backend:

    -
    ProxyPass "/"  "http://www.example.com/"
    - +
    ProxyPass "/"  "http://www.example.com/"
    +

    - To ensure that and Location: headers generated from + To ensure that Location: headers generated from the backend are modified to point to the reverse proxy, instead of back to itself, the ProxyPassReverse directive is most often required:

    -
    ProxyPass "/"  "http://www.example.com/"
    +
    ProxyPass "/"  "http://www.example.com/"
     ProxyPassReverse "/"  "http://www.example.com/"
    - +

    Only specific URIs can be proxied, as shown in this example:

    -
    ProxyPass "/images"  "http://www.example.com/"
    +
    ProxyPass "/images"  "http://www.example.com/"
     ProxyPassReverse "/images"  "http://www.example.com/"
    - +

    In the above, any requests which start with the /images - path with be proxied to the specified backend, otherwise it will be handled + path will be proxied to the specified backend, otherwise it will be handled locally.

    top
    @@ -109,27 +102,24 @@

    - As useful as the above is, it still has the deficiencies that should - the (single) backend node go down, or become heavily loaded, that proxying - those requests provides no real advantage. What is needed is the ability - to define a set or group of backend servers which can handle such - requests and for the reverse proxy to load balance and failover among - them. This group is sometimes called a cluster but Apache httpd's - term is a balancer. One defines a balancer by leveraging the + The single-backend setup above has an obvious weakness: if that + node goes down or becomes overloaded, the proxied content is unavailable. + What you need is a group of backend servers that the reverse proxy can + load-balance and failover among. This group is sometimes called a cluster; Apache httpd's + term is a balancer. You define a balancer using the <Proxy> and - BalancerMember directives as - shown: + BalancerMember directives:

    -
    <Proxy balancer://myset>
    -    BalancerMember http://www2.example.com:8080
    -    BalancerMember http://www3.example.com:8080
    -    ProxySet lbmethod=bytraffic
    +
    <Proxy balancer://myset>
    +BalancerMember http://www2.example.com:8080
    +BalancerMember http://www3.example.com:8080
    +ProxySet lbmethod=bytraffic
     </Proxy>
     
     ProxyPass "/images/"  "balancer://myset/"
     ProxyPassReverse "/images/"  "balancer://myset/"
    - +

    The balancer:// scheme is what tells httpd that we are creating @@ -153,23 +143,21 @@

    - You can adjust numerous configuration details of the balancers - and the workers via the various parameters defined in - ProxyPass. For example, - assuming we would want http://www3.example.com:8080 to - handle 3x the traffic with a timeout of 1 second, we would adjust the - configuration as follows: + You can tune balancers and workers through + parameters on ProxyPass. + For example, to have http://www3.example.com:8080 + handle 3× the traffic with a 1-second timeout:

    -
    <Proxy balancer://myset>
    -    BalancerMember http://www2.example.com:8080
    -    BalancerMember http://www3.example.com:8080 loadfactor=3 timeout=1
    -    ProxySet lbmethod=bytraffic
    +
    <Proxy balancer://myset>
    +BalancerMember http://www2.example.com:8080
    +BalancerMember http://www3.example.com:8080 loadfactor=3 timeout=1
    +ProxySet lbmethod=bytraffic
     </Proxy>
     
     ProxyPass "/images"  "balancer://myset/"
     ProxyPassReverse "/images"  "balancer://myset/"
    - +
    top
    @@ -177,9 +165,9 @@

    - You can also fine-tune various failover scenarios, detailing which workers - and even which balancers should be accessed in such cases. For example, the - below setup implements three failover cases: + You can fine-tune failover scenarios, specifying which workers and + balancers handle traffic when others fail. The setup below + implements three failover cases:

    1. @@ -202,32 +190,30 @@

    - Thus, it is possible to have one or more hot spares and hot standbys for - each load balancer set. + You can have one or more hot spares and hot standbys for each + load balancer set.

    -
    <Proxy balancer://myset>
    -    BalancerMember http://www2.example.com:8080
    -    BalancerMember http://www3.example.com:8080 loadfactor=3 timeout=1
    -    BalancerMember http://spare1.example.com:8080 status=+R
    -    BalancerMember http://spare2.example.com:8080 status=+R
    -    BalancerMember http://hstandby.example.com:8080 status=+H
    -    BalancerMember http://bkup1.example.com:8080 lbset=1
    -    BalancerMember http://bkup2.example.com:8080 lbset=1
    -    ProxySet lbmethod=byrequests
    +
    <Proxy balancer://myset>
    +BalancerMember http://www2.example.com:8080
    +BalancerMember http://www3.example.com:8080 loadfactor=3 timeout=1
    +BalancerMember http://spare1.example.com:8080 status=+R
    +BalancerMember http://spare2.example.com:8080 status=+R
    +BalancerMember http://hstandby.example.com:8080 status=+H
    +BalancerMember http://bkup1.example.com:8080 lbset=1
    +BalancerMember http://bkup2.example.com:8080 lbset=1
    +ProxySet lbmethod=byrequests
     </Proxy>
     
     ProxyPass "/images/"  "balancer://myset/"
     ProxyPassReverse "/images/"  "balancer://myset/"
    - +

    - For failover, hot spares are used as replacements for unusable workers in - the same load balancer set. A worker is considered unusable if it is - draining, stopped, or otherwise in an error/failed state. Hot standbys are - used if all workers and spares in the load balancer set are - unavailable. Load balancer sets (with their respective hot spares and - standbys) are always tried in order from lowest to highest. + Hot spares replace unusable workers (draining, stopped, or in an + error state) within the same load balancer set. Hot standbys + activate only when all workers and spares in a set are unavailable. + Sets are tried in order from lowest to highest.

    top
    @@ -236,22 +222,19 @@

    - One of the most unique and useful features of Apache httpd's reverse proxy is - the embedded balancer-manager application. Similar to - mod_status, balancer-manager displays - the current working configuration and status of the enabled - balancers and workers currently in use. However, not only does it - display these parameters, it also allows for dynamic, runtime, on-the-fly - reconfiguration of almost all of them, including adding new BalancerMembers - (workers) to an existing balancer. To enable these capability, the following - needs to be added to your configuration: + Apache httpd includes an embedded balancer-manager + application. Like mod_status, it displays the + current configuration and status of your balancers and workers. + It also lets you reconfigure them at runtime—including adding + new BalancerMembers to an existing balancer. To enable + it, add the following to your configuration:

    -
    <Location "/balancer-manager">
    -    SetHandler balancer-manager
    -    Require host localhost
    +
    <Location "/balancer-manager">
    +SetHandler balancer-manager
    +Require host localhost
     </Location>
    - +

    Warning

    Do not enable the balancer-manager until you have secured your server. In @@ -260,16 +243,16 @@

    - When the reverse proxy server is accessed at that url - (eg: http://rproxy.example.com/balancer-manager/, you will see a - page similar to the below: + When you access that URL + (e.g. http://rproxy.example.com/balancer-manager/), you + will see a page like this:

    balancer-manager page

    - This form allows the devops admin to adjust various parameters, take - workers offline, change load balancing methods and add new works. For - example, clicking on the balancer itself, you will get the following page: + From here you can adjust parameters, take workers offline, change + load balancing methods, and add new workers. Clicking on the + balancer itself shows:

    balancer-manager page

    @@ -279,8 +262,8 @@

    balancer-manager page

    - To have these changes persist restarts of the reverse proxy, ensure that - BalancerPersist is enabled. + To persist these changes across restarts, enable + BalancerPersist.

    top
    @@ -289,12 +272,11 @@

    - Before httpd proxies a request to a worker, it can "test" if that worker - is available via setting the ping parameter for that worker using - ProxyPass. Oftentimes it is - more useful to check the health of the workers out of band, in a - dynamic fashion. This is achieved in Apache httpd by the - mod_proxy_hcheck module. + Before proxying a request, httpd can test whether a worker is + available using the ping parameter in + ProxyPass. Often it is + more useful to check worker health out of band. + mod_proxy_hcheck provides this capability.

    top
    diff -Nru apache2-2.4.68/docs/manual/howto/reverse_proxy.html.fr.utf8 apache2-2.4.69/docs/manual/howto/reverse_proxy.html.fr.utf8 --- apache2-2.4.68/docs/manual/howto/reverse_proxy.html.fr.utf8 2026-05-31 13:57:20.000000000 +0000 +++ apache2-2.4.69/docs/manual/howto/reverse_proxy.html.fr.utf8 2026-07-01 15:26:27.000000000 +0000 @@ -27,27 +27,19 @@  fr 

    -

    En plus de ses fonctions de serveur web "basique", à savoir fournir du - contenu statique et dynamique à l'utilisateur, Apache httpd (comme la - plupart des autres serveurs web) peut aussi assurer les fonctions de serveur - mandataire inverse, connu aussi sous le nom de serveur "passerelle".

    - -

    Dans un tel scénario, httpd ne génère et n'héberge pas lui-même les - données, le contenu étant en général obtenu à partir d'un ou plusieurs serveurs - d'arrière-plan qui n'ont normalement aucune connexion directe avec le réseau - externe. Lorsque httpd reçoit une requête en provenance d'un client, la - requête proprement dite est mandatée vers un de ces serveurs - d'arrière-plan qui traite la requête, génère le contenu et l'envoie à httpd, - ce dernier générant la véritable réponse HTTP à destination du client.

    - -

    De nombreuses raisons peuvent vous motiver à utiliser cette - fonctionnalité, mais elles sont souvent du domaine de la sécurité, de - la haute disponibilité, de la répartition de charge et de - l'authentification/autorisation centralisée. Il est alors indispensable que - l'organisation, la conception et l'architecture de l'infrastructure - d'arrière-plan (les serveurs qui traitent au sens propre les requêtes) soient - isolées et protégées de l'extérieur ; vu du client, le serveur mandataire - inverse est le seul serveur accessible pouvant lui fournir du +

    En plus de servir directement du contenu statique et dynamique, Apache + httpd peut remplir les fonctions d’un serveur mandataire inverse (parfois + appelé passerelle).

    + +

    Dans ce mode, httpd ne génère pas le contenu lui-même. Il redirige chaque + requête client vers un ou plusieurs serveurs dorsaux qui n’ont pas d’accès + direct au réseau externe. Le serveur dorsal traite la requête et renvoie le + contenu à httpd qui, à son tour, envoie la réponse HTTP au client.

    + +

    Les buts courants de ce dispositif comprennent la sécurité, la haute + disponibilité, la répartition de charge et l’authentification centralisée. + L’infrastructure dorsale doit être isolée du réseau externe ; du point de + vue du client, le mandataire inverse est la seule source de tout contenu.

    Voici un exemple typique d'implémentation de cette fonctionnalité :

    @@ -56,12 +48,12 @@
    top
    @@ -83,26 +75,25 @@ unique :

    -
    ProxyPass "/"  "http://www.example.com/"
    - +
    ProxyPass "/"  "http://www.example.com/"
    +

    - Pour être sur que cette redirection soit effectuée et que les en-têtes - Location: générés par le serveur d'arrière-plan soient - modifiés pour pointer vers le mandataire inverse, et non vers le serveur - d'arrière-plan, la directive ProxyPassReverse est souvent requise : + Pour s’assurer que les en-têtes Location: générés par le + serveur dorsal soient modifiés pour pointer vers le mandataire inverse, et + non vers le serveur d'arrière-plan, la directive ProxyPassReverse est en général requise :

    -
    ProxyPass "/"  "http://www.example.com/"
    +
    ProxyPass "/"  "http://www.example.com/"
     ProxyPassReverse "/"  "http://www.example.com/"
    +
    - -

    Seules des URIs spécifiques peuvent être mandatées, comme le montre +

    Il est possible de spécifier les URIs qui peuvent être mandatés, comme le montre l'exemple suivant :

    -
    ProxyPass "/images"  "http://www.example.com/"
    +
    ProxyPass "/images"  "http://www.example.com/"
     ProxyPassReverse "/images"  "http://www.example.com/"
    - +

    Dans l'exemple précédent, si le chemin d'une requête commence par /images, elle sera redirigée vers le serveur d'arrière-plan @@ -110,39 +101,38 @@

    top
    -

    Clusters et Balancers

    +

    Grappes et répartiteurs de charge

    - Utiliser un serveur d'arrière-plan unique n'est cependant pas une solution - idéale car ce dernier peut devenir indisponible ou surchargé, et le - mandatement inverse vers ce serveur ne présente alors plus aucun avantage. - La solution réside dans la définition d'un groupe de serveurs - d'arrière-plan qui vont se partager le traitement des requêtes via un - mécanisme de répartition de charge et de gestion des indisponibilités pris - en charge par le mandataire. Ce groupe de répartition est plus connu sous le nom de - cluster, mais dans la terminologie d'Apache httpd, on utilise - plutôt le terme de balancer. Un balancer se définit en - utilisant les directives <Proxy> et BalancerMember comme suit : -

    - -
    <Proxy balancer://myset>
    -    BalancerMember http://www2.example.com:8080
    -    BalancerMember http://www3.example.com:8080
    -    ProxySet lbmethod=bytraffic
    +       La configuration à un seul serveur dorsal ci-avant comporte un défaut
    +       évident : si ce serveur dorsal est éteint ou surchargé, le contenu
    +       mandaté ne sera pas disponible. Ce dont on a besoin ici est un groupe de
    +       serveurs dorsaux parmi lesquels le serveur mandataire pourra basculer et
    +       répartir la charge. Ce groupe est parfois appelé grappe
    +       (cluster) ; Apache httpd le nomme répartiteur de charge
    +       (balancer). Un répartiteur de charge se définit en utilisant les
    +       directives <Proxy>
    +       et BalancerMember :
    +    

    + +
    <Proxy balancer://myset>
    +BalancerMember http://www2.example.com:8080
    +BalancerMember http://www3.example.com:8080
    +ProxySet lbmethod=bytraffic
     </Proxy>
     
     ProxyPass "/images/"  "balancer://myset/"
     ProxyPassReverse "/images/"  "balancer://myset/"
    - +

    Le protocole balancer:// indique à httpd que l'on souhaite - créer un balancer nommé myset. Ce balancer comporte deux serveurs + créer un répartiteur de charge nommé myset. Ce répartiteur comporte deux serveurs d'arrière-plan référencés dans la terminologie httpd sous le nom de BalancerMembers. Avec cet exemple, toute requête dont le chemin commence par /images sera mandatée vers un des deux - serveurs d'arrière-plan. La directive ProxySet définit ici pour le balancer + serveurs d'arrière-plan. La directive ProxySet définit ici pour le répartiteur myset un algorithme de répartition de charge basé sur le trafic entrées/sorties.

    @@ -156,25 +146,25 @@
    top
    -

    Configuration du Balancer et des BalancerMembers

    +

    Configuration du répartiteur de charge et de ses membres (workers)

    - Vous pouvez configurer de manière détaillée les balancers et - workers via les nombreux paramètres de la directive ProxyPass. Par exemple, si vous souhaitez - que http://www3.example.com:8080 traite avec un facteur 3 le - trafic avec un timeout d'une seconde, utilisez la configuration suivante : + Les répartiteurs de charge et leurs membres sont configurés à l’aide de + paramètres de la directive ProxyPass. Par exemple, pour que + http://www3.example.com:8080 gère le trafic avec un facteur 3 + et un délai d’une seconde :

    -
    <Proxy balancer://myset>
    -    BalancerMember http://www2.example.com:8080
    -    BalancerMember http://www3.example.com:8080 loadfactor=3 timeout=1
    -    ProxySet lbmethod=bytraffic
    +
    <Proxy balancer://myset>
    +BalancerMember http://www2.example.com:8080
    +BalancerMember http://www3.example.com:8080 loadfactor=3 timeout=1
    +ProxySet lbmethod=bytraffic
     </Proxy>
     
     ProxyPass "/images"  "balancer://myset/"
     ProxyPassReverse "/images"  "balancer://myset/"
    - +
    top
    @@ -182,10 +172,10 @@

    - Vous pouvez aussi définir finement des scénarios pour les cas - d'indisponibilité d'un ou plusieurs serveurs d'arrière-plan en spécifiant - quels serveurs doivent alors prendre le relai. Dans l'exemple suivant, - trois scénarios sont envisagés : + Vous pouvez définir finement des scénarios pour les cas d'indisponibilité + d'un ou plusieurs serveurs dorsaux en spécifiant quels répartiteurs et + leurs membres doivent alors prendre le relai. Dans l'exemple suivant, + trois scénarios sont envisagés :

    1. @@ -211,32 +201,31 @@

      Il est ainsi possible de définir un ou plusieurs serveurs de remplacement ou de standby pour chaque jeu de serveurs du répartiteur de charge. -

      +

      -
      <Proxy balancer://myset>
      -    BalancerMember http://www2.example.com:8080
      -    BalancerMember http://www3.example.com:8080 loadfactor=3 timeout=1
      -    BalancerMember http://spare1.example.com:8080 status=+R
      -    BalancerMember http://spare2.example.com:8080 status=+R
      -    BalancerMember http://hstandby.example.com:8080 status=+H
      -    BalancerMember http://bkup1.example.com:8080 lbset=1
      -    BalancerMember http://bkup2.example.com:8080 lbset=1
      -    ProxySet lbmethod=byrequests
      +
      <Proxy balancer://myset>
      +BalancerMember http://www2.example.com:8080
      +BalancerMember http://www3.example.com:8080 loadfactor=3 timeout=1
      +BalancerMember http://spare1.example.com:8080 status=+R
      +BalancerMember http://spare2.example.com:8080 status=+R
      +BalancerMember http://hstandby.example.com:8080 status=+H
      +BalancerMember http://bkup1.example.com:8080 lbset=1
      +BalancerMember http://bkup2.example.com:8080 lbset=1
      +ProxySet lbmethod=byrequests
       </Proxy>
       
       ProxyPass "/images/"  "balancer://myset/"
       ProxyPassReverse "/images/"  "balancer://myset/"
      - +

      Les serveurs de remplacement à chaud remplacent les serveurs indisponibles - du même jeu de serveurs du répartiteur de charge. Un serveur est - considéré comme indisponible s'il est en maintenance, arrêté ou en erreur. - Les serveurs de standby à chaud sont utilisés si tous les serveurs et - serveurs de remplacement du jeu de serveurs du répartiteur de charge sont - indisponibles. Les jeux de serveurs du répartiteur de charge (avec leurs - serveurs de standby et de remplacement à chaud respectifs) sont toujours - sollicités dans l'ordre du plus bas lbset vers le plus haut. + (en phase de vidage, arrêtés ou en état d’erreur) du même jeu de serveurs + du répartiteur de charge. Les serveurs de standby à chaud ne sont activés + que si tous les serveurs et serveurs de remplacement du jeu de serveurs du + répartiteur de charge sont indisponibles. Les jeux de serveurs du + répartiteur de charge sont sollicités dans l'ordre du plus bas lbset vers + le plus haut.

    top
    @@ -245,21 +234,19 @@

    - L'application balancer-manager fournie avec le mandataire inverse - d'Apache httpd en est un des outils les plus utiles. Comme - mod_status, balancer-manager affiche la - configuration et l'activité actuelles des balancers actifs. L'affichage de - ces informations n'est cependant pas sa seule fonction ; il permet aussi de - modifier la plupart d'entre elles et même d'ajouter des membres au groupe - de répartition de charge en temps réel. Pour activer ces fonctionnalités, - vous devez ajouter les lignes suivantes à votre fichier de configuration : + Apache httpd comporte un gestionnaire de répartiteur de charge + (balancer-manager) intégré. Comme mod_status, il affiche + la configuration et l’état actuels de vos répartiteurs de charge et de + leurs membres. Il vous permet aussi de les reconfigurer à l’exécution + — par exemple pour ajouter de nouveaux membres à un répartiteur existant. + Pour l’activer, ajoutez les lignes suivantes à votre configuration :

    -
    <Location "/balancer-manager">
    -    SetHandler balancer-manager
    -    Require host localhost
    +
    <Location "/balancer-manager">
    +SetHandler balancer-manager
    +Require host localhost
     </Location>
    - +

    Avertissement

    N'activez le balancer-manager que si vous avez déjà sécurisé votre serveur. @@ -274,9 +261,9 @@

    balancer-manager page

    - Ce formulaire permet à l'administrateur de modifier certains paramètres, - de désactiver ou d'ajouter certains serveurs d'arrière-plan, et de - modifier les règles de répartition de charge. Par exemple, si on clique + Ce formulaire permet de modifier certains paramètres, + de désactiver ou d'ajouter des serveurs dorsaux, et de + modifier les règles de répartition de charge. Si l’on clique sur le répartiteur, la page suivante s'affiche :

    balancer-manager page

    @@ -295,16 +282,15 @@
    top

    Vérification dynamique du bon fonctionnement d'un serveur - d'arrière-plan

    + dorsal

    - Avant que le mandataire httpd ne fasse appel à un serveur d'arrière-plan, il - peut "tester" si ce dernier est disponible en définissant le - paramètre ping de ce serveur via la directive ProxyPass. Cependant, il est souvent plus + Avant de mandater une requête, httpd peut "tester" si le serveur + dorsal est disponible en définissant le paramètre ping de ce + serveur via la directive ProxyPass. Cependant, il est souvent plus judicieux de vérifier le bon fonctionnement d'un serveur hors - bande et de manière dynamique via le module - mod_proxy_hcheck d'Apache httpd. + ibande via le module mod_proxy_hcheck.

    top
    diff -Nru apache2-2.4.68/docs/manual/howto/ssi.html.en apache2-2.4.69/docs/manual/howto/ssi.html.en --- apache2-2.4.68/docs/manual/howto/ssi.html.en 2026-05-31 13:57:20.000000000 +0000 +++ apache2-2.4.69/docs/manual/howto/ssi.html.en 2026-06-19 14:27:29.000000000 +0000 @@ -30,15 +30,17 @@  ko 

    -

    Server-side includes provide a means to add dynamic content to -existing HTML documents.

    +

    Server Side Includes (SSI) provide a way to add dynamic content to +existing HTML documents without requiring a full application framework. +They are particularly useful for inserting common elements — headers, +footers, navigation, timestamps — into otherwise static pages.

    top

    What are SSI?

    -

    SSI (Server Side Includes) are directives that are placed in - HTML pages, and evaluated on the server while the pages are - being served. They let you add dynamically generated content to - an existing HTML page, without having to serve the entire page - via a CGI program, or other dynamic technology.

    +

    SSI directives are HTML comments with a specific syntax that + mod_include recognizes and evaluates before the + page is sent to the client. They look like this:

    -

    For example, you might place a directive into an existing HTML - page, such as:

    - -

    - <!--#echo var="DATE_LOCAL" --> -

    +
    <!--#echo var="DATE_LOCAL" -->
    +
    -

    And, when the page is served, this fragment will be evaluated and replaced with its value:

    +

    When the page is served, this fragment is replaced with its + value:

    - Tuesday, 15-Jan-2013 19:28:54 EST + Thursday, 18-Jun-2026 14:22:07 EDT

    -

    The decision of when to use SSI, and when to have your page - entirely generated by some program, is usually a matter of how - much of the page is static, and how much needs to be - recalculated every time the page is served. SSI is a great way - to add small pieces of information, such as the current time - shown - above. But if a majority of your page is being generated at the time - that it is served, you need to look for some other solution.

    +

    Because the directives are embedded in HTML comments, if SSI + is not enabled, browsers ignore them (though they remain + visible in the page source).

    top

    Configuring your server to permit SSI

    -

    To permit SSI on your server, you must have the following - directive either in your httpd.conf file, or in a - .htaccess file:

    -
    Options +Includes
    - - -

    This tells Apache that you want to permit files to be parsed - for SSI directives. Note that most configurations contain - multiple Options directives - that can override each other. You will probably need to apply the - Options to the specific directory where you want SSI - enabled in order to assure that it gets evaluated last.

    - -

    Not just any file is parsed for SSI directives. You have to - tell Apache which files should be parsed. There are two ways to - do this. You can tell Apache to parse any file with a - particular file extension, such as .shtml, with - the following directives:

    -
    AddType text/html .shtml
    +    

    To enable SSI processing, add the following directive to your + httpd.conf file or to a .htaccess + file:

    + +
    Options +Includes
    +
    + +

    This tells httpd to parse files for SSI directives. Since most + configurations contain multiple Options directives that can override each other, apply + this to the specific directory where you want SSI enabled.

    + +

    You also need to tell httpd which files to parse. There are + two common approaches.

    + +

    The first is to designate a file extension (typically + .shtml) for SSI-enabled pages:

    + +
    AddType text/html .shtml
     AddOutputFilter INCLUDES .shtml
    +
    +

    The disadvantage here is that adding SSI to an existing page + requires renaming the file (and updating all links to it) to use + the .shtml extension.

    -

    One disadvantage to this approach is that if you wanted to - add SSI directives to an existing page, you would have to - change the name of that page, and all links to that page, in - order to give it a .shtml extension, so that those - directives would be executed.

    - -

    The other method is to use the XBitHack directive:

    -
    XBitHack on
    - - -

    XBitHack - tells Apache to parse files for SSI - directives if they have the execute bit set. So, to add SSI - directives to an existing page, rather than having to change - the file name, you would just need to make the file executable - using chmod.

    -

    - chmod +x pagename.html -

    +

    The second approach uses the XBitHack directive:

    + +
    XBitHack on
    +
    -

    A brief comment about what not to do. You'll occasionally - see people recommending that you just tell Apache to parse all - .html files for SSI, so that you don't have to - mess with .shtml file names. These folks have - perhaps not heard about XBitHack. The thing to - keep in mind is that, by doing this, you're requiring that - Apache read through every single file that it sends out to - clients, even if they don't contain any SSI directives. This - can slow things down quite a bit, and is not a good idea.

    - -

    Of course, on Windows, there is no such thing as an execute - bit to set, so that limits your options a little.

    - -

    In its default configuration, Apache does not send the last - modified date or content length HTTP headers on SSI pages, - because these values are difficult to calculate for dynamic - content. This can prevent your document from being cached, and - result in slower perceived client performance. There are two - ways to solve this:

    +

    XBitHack tells + httpd to parse any file that has its execute bit set. To enable + SSI on an existing page, make the file executable:

    + +
    chmod +x pagename.html
    +
    + +

    + Avoid configuring httpd to parse all .html + files for SSI directives. This forces the server to read through + every HTML file it serves, even those without any SSI content, + which adds unnecessary overhead. +

    + +

    On Windows, there is no execute bit, so the + XBitHack approach is + not available. Use the file-extension method instead.

    + +

    By default, httpd does not send the last-modified date or + content-length headers on SSI pages, since these values are + difficult to calculate for dynamic content. This can prevent + caching and result in slower perceived performance. Two + approaches can help:

      -
    1. Use the XBitHack Full configuration. This - tells Apache to determine the last modified date by looking - only at the date of the originally requested file, ignoring - the modification date of any included files.
    2. - -
    3. Use the directives provided by - mod_expires to set an explicit expiration - time on your files, thereby letting browsers and proxies - know that it is acceptable to cache them.
    4. +
    5. Use XBitHack Full, which tells httpd to + determine the last-modified date from the originally requested + file, ignoring the modification dates of included files.
    6. + +
    7. Use mod_expires to set an explicit + expiration time, letting browsers and proxies know the content + is safe to cache.
    top

    Basic SSI directives

    -

    SSI directives have the following syntax:

    -

    - <!--#function attribute=value attribute=value ... --> -

    +

    SSI directives use the following syntax:

    +
    <!--#function attribute=value attribute=value ... -->
    +
    -

    It is formatted like an HTML comment, so if you don't have - SSI correctly enabled, the browser will ignore it, but it will - still be visible in the HTML source. If you have SSI correctly - configured, the directive will be replaced with its - results.

    - -

    The function can be one of a number of things, and we'll talk - some more about most of these in the next installment of this - series. For now, here are some examples of what you can do with - SSI

    +

    If SSI is correctly configured, the directive is replaced with + its output. If not, it remains as an HTML comment — invisible to + the end user but present in the source.

    Today's date

    -

    - <!--#echo var="DATE_LOCAL" --> -

    +
    <!--#echo var="DATE_LOCAL" -->
    +
    -

    The echo function just spits out the value of a - variable. There are a number of standard variables, which - include the whole set of environment variables that are - available to CGI programs. Also, you can define your own - variables with the set function.

    - -

    If you don't like the format in which the date gets printed, - you can use the config function, with a - timefmt attribute, to modify that formatting.

    +

    The echo function outputs the value of a variable. + Standard variables include the full set of environment variables + available to CGI programs, plus variables you define with + set.

    -

    - <!--#config timefmt="%A %B %d, %Y" -->
    - Today is <!--#echo var="DATE_LOCAL" --> -

    +

    To customize the date format, use the config + function with the timefmt attribute:

    + +
    <!--#config timefmt="%A %B %d, %Y" -->
    +Today is <!--#echo var="DATE_LOCAL" -->
    +

    Modification date of the file

    -

    - This document last modified <!--#flastmod file="index.html" --> -

    +
    This document last modified <!--#flastmod file="index.html" -->
    +
    -

    This function is also subject to timefmt format - configurations.

    +

    This function is also subject to timefmt + configuration.

    Including the results of a CGI program

    -

    This is one of the more common uses of SSI - to output the - results of a CGI program, such as everybody's favorite, a ``hit - counter.''

    +

    SSI can include the output of a CGI program directly in the + page:

    -

    - <!--#include virtual="/cgi-bin/counter.pl" --> -

    +
    <!--#include virtual="/cgi-bin/counter.pl" -->
    +
    top
    @@ -233,242 +202,182 @@

    Additional examples

    -

    Following are some specific examples of things you can do in - your HTML documents with SSI.

    +

    The following are practical examples of common SSI use + cases.

    -

    When was this document -modified?

    +

    When was this document modified?

    -

    Earlier, we mentioned that you could use SSI to inform the - user when the document was most recently modified. However, the - actual method for doing that was left somewhat in question. The - following code, placed in your HTML document, will put such a - time stamp on your page. Of course, you will have to have SSI - correctly enabled, as discussed above.

    -

    - <!--#config timefmt="%A %B %d, %Y" -->
    - This file last modified <!--#flastmod file="ssi.shtml" --> -

    +

    A common use of SSI is to display a "last modified" timestamp + on each page. The following code uses the + LAST_MODIFIED variable so you can paste the same + snippet into any file without changing the filename:

    -

    Of course, you will need to replace the - ssi.shtml with the actual name of the file that - you're referring to. This can be inconvenient if you're just - looking for a generic piece of code that you can paste into any - file, so you probably want to use the - LAST_MODIFIED variable instead:

    -

    - <!--#config timefmt="%D" -->
    - This file last modified <!--#echo var="LAST_MODIFIED" --> -

    +
    <!--#config timefmt="%D" -->
    +This file last modified <!--#echo var="LAST_MODIFIED" -->
    +
    -

    For more details on the timefmt format, go to - your favorite search site and look for strftime. The - syntax is the same.

    +

    For details on timefmt format strings, see the + documentation for strftime in your system's C + library reference.

    -

    If you are managing any site that is more than a few pages, - you may find that making changes to all those pages can be a - real pain, particularly if you are trying to maintain some kind - of standard look across all those pages.

    - -

    Using an include file for a header and/or a footer can - reduce the burden of these updates. You just have to make one - footer file, and then include it into each page with the - include SSI command. The include - function can determine what file to include with either the - file attribute, or the virtual - attribute. The file attribute is a file path, - relative to the current directory. That means that it - cannot be an absolute file path (starting with /), nor can it - contain ../ as part of that path. The virtual - attribute is probably more useful, and should specify a URL - relative to the document being served. It can start with a /, - but must be on the same server as the file being served.

    -

    - <!--#include virtual="/footer.html" --> -

    +

    On a site with more than a few pages, maintaining a + consistent header or footer across all pages can be tedious. + SSI solves this by letting you keep shared content in a single + file and include it everywhere:

    + +
    <!--#include virtual="/footer.html" -->
    +
    -

    I'll frequently combine the last two things, putting a - LAST_MODIFIED directive inside a footer file to be - included. SSI directives can be contained in the included file, - and includes can be nested - that is, the included file can - include another file, and so on.

    +

    The include function accepts two attributes: + file specifies a path relative to the current + directory (it cannot be an absolute path or contain + ../), while virtual specifies a URL + relative to the document being served (it can start with + / but must be on the same server).

    + +

    SSI directives inside included files are evaluated normally, + and includes can be nested. This means you can put a + LAST_MODIFIED timestamp in your footer file, and + it will be evaluated in the context of each page that includes + it.

    top
    -

    What else can I config?

    +

    Other config options

    -

    In addition to being able to config the time - format, you can also config two other things.

    +

    In addition to timefmt, the config + function supports two other attributes.

    -

    Usually, when something goes wrong with your SSI directive, - you get the message

    +

    The errmsg attribute changes the error message + displayed when an SSI directive fails. The default is:

    - [an error occurred while processing this directive] +[an error occurred while processing this directive]

    -

    If you want to change that message to something else, you - can do so with the errmsg attribute to the - config function:

    -

    - <!--#config errmsg="[It appears that you don't know how to use SSI]" --> -

    +

    You can replace it with something more appropriate for your + site:

    +
    <!--#config errmsg="[Content unavailable]" -->
    +
    -

    Hopefully, end users will never see this message, because - you will have resolved all the problems with your SSI - directives before your site goes live. (Right?)

    - -

    And you can config the format in which file - sizes are returned with the sizefmt attribute. You - can specify bytes for a full count in bytes, or - abbrev for an abbreviated number in Kb or Mb, as - appropriate.

    -
    top
    +

    The sizefmt attribute controls how file sizes + are formatted: bytes for a full byte count, or + abbrev for an abbreviated form in KB or MB.

    +
    top

    Executing commands

    -

    Here's something else that you can do with the exec - function. You can actually have SSI execute a command using the - shell (/bin/sh, to be precise - or the DOS shell, - if you're on Win32). The following, for example, will give you - a directory listing.

    -

    - <pre>
    - <!--#exec cmd="ls" -->
    - </pre> -

    - -

    or, on Windows

    -

    - <pre>
    - <!--#exec cmd="dir" -->
    - </pre> -

    +

    The exec function can run a shell command and + include its output in the page. On Unix-like systems, the + command is executed via /bin/sh; on Windows, via + the command shell.

    + +
    <pre>
    +<!--#exec cmd="ls" -->
    +</pre>
    +
    -

    You might notice some strange formatting with this directive - on Windows, because the output from dir contains - the string ``<dir>'' in it, which confuses - browsers.

    - -

    Note that this feature is exceedingly dangerous, as it will - execute whatever code happens to be embedded in the - exec tag. If you have any situation where users - can edit content on your web pages, such as with a - ``guestbook'', for example, make sure that you have this - feature disabled. You can allow SSI, but not the - exec feature, with the IncludesNOEXEC - argument to the Options directive.

    -
    top
    +

    + The exec feature is a significant security risk. It + executes arbitrary commands with the permissions of the web + server process. If users can edit content on your site, ensure + this feature is disabled by using IncludesNOEXEC + instead of Includes in the Options directive. +

    +
    top

    Advanced SSI techniques

    -

    In addition to spitting out content, Apache SSI gives you - the option of setting variables, and using those variables in - comparisons and conditionals.

    +

    Beyond simple content inclusion, SSI supports variables and + conditional expressions, making it possible to generate + different content based on the request context.

    Setting variables

    -

    Using the set directive, you can set variables - for later use. We'll need this later in the discussion, so - we'll talk about it here. The syntax of this is as follows:

    -

    - <!--#set var="name" value="Rich" --> -

    +

    The set directive defines variables for use later + in the page:

    -

    In addition to merely setting values literally like that, you - can use any other variable, including environment variables or the variables - discussed above (like LAST_MODIFIED, for example) to - give values to your variables. You will specify that something is - a variable, rather than a literal string, by using the dollar sign - ($) before the name of the variable.

    +
    <!--#set var="name" value="Rich" -->
    +
    -

    <!--#set var="modified" value="$LAST_MODIFIED" --> -

    +

    Variables can reference other variables (including + environment variables) using the dollar + sign ($) prefix:

    -

    To put a literal dollar sign into the value of your - variable, you need to escape the dollar sign with a - backslash.

    -

    - <!--#set var="cost" value="\$100" --> -

    +
    <!--#set var="modified" value="$LAST_MODIFIED" -->
    +
    -

    Finally, if you want to put a variable in the midst of a - longer string, and there's a chance that the name of the - variable will run up against some other characters, and thus be - confused with those characters, you can place the name of the - variable in braces, to remove this confusion. (It's hard to - come up with a really good example of this, but hopefully - you'll get the point.)

    -

    - <!--#set var="date" value="${DATE_LOCAL}_${DATE_GMT}" --> -

    +

    To include a literal dollar sign, escape it with a + backslash:

    +
    <!--#set var="cost" value="\$100" -->
    +
    -

    Conditional expressions

    +

    When a variable name might be ambiguous within a longer + string, use braces to delimit it:

    +
    <!--#set var="date" value="${DATE_LOCAL}_${DATE_GMT}" -->
    +
    -

    Now that we have variables, and are able to set and compare - their values, we can use them to express conditionals. This - lets SSI be a tiny programming language of sorts. - mod_include provides an if, - elif, else, endif - structure for building conditional statements. This allows you - to effectively generate multiple logical pages out of one - actual page.

    -

    The structure of this conditional construct is:

    -

    - <!--#if expr="test_condition" -->
    - <!--#elif expr="test_condition" -->
    - <!--#else -->
    - <!--#endif --> -

    +

    Conditional expressions

    -

    A test_condition can be any sort of logical - comparison - either comparing values to one another, or testing - the ``truth'' of a particular value. (A given string is true if - it is nonempty.) For a full list of the comparison operators - available to you, see the mod_include - documentation.

    - -

    For example, if you wish to customize the text on your web page - based on the time of day, you could use the following recipe, placed - in the HTML page:

    -

    - Good - <!--#if expr="%{TIME_HOUR} <12" -->
    - morning!
    - <!--#else -->
    - afternoon!
    - <!--#endif -->
    -

    +

    mod_include provides if, + elif, else, and endif + constructs for building conditional logic. This lets you + generate different output from a single physical page.

    + +

    The structure is:

    + +
    <!--#if expr="test_condition" -->
    +<!--#elif expr="test_condition" -->
    +<!--#else -->
    +<!--#endif -->
    +
    + +

    A test_condition can compare values or test whether a + variable is non-empty. See the mod_include + documentation for the full list of comparison operators.

    + +

    For example, to display different greetings based on the time + of day:

    + +
    Good
    +<!--#if expr="%{TIME_HOUR} <12" -->
    +morning!
    +<!--#else -->
    +afternoon!
    +<!--#endif -->
    +
    +
    -

    Any other variable (either ones that you define, or normal - environment variables) can be used in conditional statements. - See Expressions in Apache HTTP Server for - more information on the expression evaluation engine.

    - -

    With Apache's ability to set environment variables with the - SetEnvIf directives, and other related directives, - this functionality can let you do a wide variety of dynamic content - on the server side without resorting a full web application.

    +

    Any variable — user-defined or from the environment — can be + used in conditional expressions. See + Expressions in Apache HTTP Server for + full details on the expression evaluation engine.

    + +

    Combined with httpd's ability to set environment variables + using SetEnvIf and + related directives, conditional SSI can handle a wide variety of + dynamic content scenarios without a full application + framework.

    top

    Conclusion

    -

    SSI is certainly not a replacement for CGI, or other - technologies used for generating dynamic web pages. But it is a - great way to add small amounts of dynamic content to pages, - without doing a lot of extra work.

    +

    For sites that are mostly static but need a few dynamic + touches, SSI avoids the overhead of setting up a full + application stack. It requires only mod_include + and a few lines of configuration to get started.

    Available Languages:  en  | diff -Nru apache2-2.4.68/docs/manual/howto/ssi.html.es apache2-2.4.69/docs/manual/howto/ssi.html.es --- apache2-2.4.68/docs/manual/howto/ssi.html.es 2026-05-31 13:57:20.000000000 +0000 +++ apache2-2.4.69/docs/manual/howto/ssi.html.es 2026-06-19 14:27:29.000000000 +0000 @@ -31,6 +31,10 @@  ja  |  ko 

    +
    Esta traducción podría estar + obsoleta. Consulte la versión en inglés de la + documentación para comprobar si se han producido cambios + recientemente.

    Los Server Side Includes (Inclusiones en la parte Servidor) facilitan un método para añadir contenido dinámico a documentos HTML existentes.

    diff -Nru apache2-2.4.68/docs/manual/howto/ssi.html.fr.utf8 apache2-2.4.69/docs/manual/howto/ssi.html.fr.utf8 --- apache2-2.4.68/docs/manual/howto/ssi.html.fr.utf8 2026-05-31 13:57:20.000000000 +0000 +++ apache2-2.4.69/docs/manual/howto/ssi.html.fr.utf8 2026-06-29 16:23:26.000000000 +0000 @@ -33,14 +33,17 @@

    Les SSI permettent d'ajouter du contenu dynamique à des documents -HTML préexistants.

    +HTML préexistants sans nécessiter de cadriciel complet d’application. Ils +s’avèrent particulièrement utiles pour insérer des éléments courants — en-têtes, +pieds de page, navigation, horodatages — dans des pages qui, sans cela, seraient +statiques.

    top

    Qu'est-ce que SSI ?

    -

    SSI (Server Side Includes) est constitué de directives placées dans - des pages HTML, et évaluées par le serveur au moment où les pages - sont servies. Elles vous permettent d'ajouter du contenu généré - dynamiquement à une page HTML préexistante, sans avoir à servir la - page entière via un programme CGI, ou toute autre technologie de - contenu dynamique.

    - -

    Par exemple, vous pouvez insérer la directive suivante dans une - page HTML existante :

    - -

    - <!--#echo var="DATE_LOCAL" --> -

    +

    Les directives SSI sont des commentaires HTML avec une syntaxe spécifique + que le module mod_include reconnaît et évalue avant que la + page ne soit envoyée au client. Elle sont de la forme suivante :

    -

    Ainsi, lorsque la page sera servie, la directive sera évaluée et - remplacée par sa valeur :

    +
    <!--#echo var="DATE_LOCAL" -->
    +
    +

    Lorsque la page est servie, ce fragment est remplacé par sa valeur :

    +

    - Tuesday, 15-Jan-2013 19:28:54 EST + Thursday, 18-Jun-2026 14:22:07 EDT

    -

    Le choix entre l'utilisation des SSI et la génération entière de - la page par un programme quelconque, est en général dicté par la - proportion de contenu statique et de contenu devant être généré - chaque fois que la page est servie. SSI est idéal pour ajouter de - petites quantités d'information, comme l'heure courante dans - l'exemple précédent. Mais si la - plus grande partie de votre page est générée au moment où elle est - servie, vous devez vous tourner vers une autre solution.

    +

    Les directives étant intégrées dans des commentaires HTML, les + navigateurs les ignoreront si les SSI ne sont pas activées (bien qu’elles + demeurent visibles dans le code source de la page).

    top

    Configurer votre serveur pour permettre les SSI

    -

    Pour permettre l'utilisation des SSI sur votre serveur, vous - devez ajouter la directive suivante dans votre fichier - httpd.conf, ou dans un fichier .htaccess - :

    -
    Options +Includes
    - - -

    Cette directive indique à Apache que vous désirez permettre la - recherche de directives SSI lors de l'interprétation des fichiers. - Notez cependant que la plupart des configurations contiennent de - nombreuses directives Options - qui peuvent s'écraser les unes les autres. Vous devrez probablement - appliquer ces directives Options au répertoire - spécifique pour lequel vous voulez activer les SSI, afin d'être sûr - qu'elles y seront bien activées.

    - -

    Tout fichier ne fera cependant pas l'objet de recherche de - directives SSI. Vous devez indiquer à Apache quels fichiers seront - concernés. Vous pouvez y parvenir en indiquant une extension, comme - .shtml, à l'aide des directives suivantes :

    -
    AddType text/html .shtml
    +    

    Pour activer le traitement des SSI, ajoutez la directive suivante à votre + fichier httpd.conf ou à un fichier .htaccess :

    + +
    Options +Includes
    +
    + +

    Si cette option est définie, httpd va analyser les fichiers en y + recherchant des directives SSI. Comme la plupart des configurations + contiennent plusieurs directives Options qui peuvent s’outrepasser les unes les autres, + appliquez la directive d’activation au répertoire spécifique pour lequel + vous voulez activer les SSI.

    + +

    Vous devez aussi indiquer à httpd les fichiers qu’il doit analyser. Pour + ce faire, il existe deux approches courantes.

    + +

    La première consiste à indiquer une extension de nom de fichier (en + général .shtml) pour les pages pour lesquelles les SSI sont + activées :

    + +
    AddType text/html .shtml
     AddOutputFilter INCLUDES .shtml
    +
    +

    Cette approche a pour désavantage de nécessiter, pour ajouter des SSI à + une page existante, de renommer le fichier (et de mettre à jour tous les + liens vers ce dernier) pour utiliser l’extension .shtml.

    -

    Un des désavantages de cette approche réside dans le fait que si - vous voulez ajouter des directives SSI à une page préexistante, vous - devrez changer le nom de cette page, et donc tout lien qui la - contient, de façon à ce qu'elle possède l'extension - .shtml, condition nécessaire pour que les directives - SSI qu'elle contient soient traitées.

    - -

    Une autre méthode consiste à utiliser la directive XBitHack :

    -
    XBitHack on
    - - -

    La directive XBitHack - indique à Apache qu'il doit rechercher des directivves SSI dans les - fichiers si leur bit d'exécution est positionné. Il n'est ainsi plus - nécessaire de changer le nom du fichier pour ajouter des directives - SSI à une page préexistante ; vous devez simplement attribuer les - droits d'exécution au fichier à l'aide de chmod.

    -

    - chmod +x pagename.html -

    +

    La seconde approche consiste à utiliser la directive XBitHack :

    -

    Un bref commentaire sur ce qu'il ne faut pas faire. Certaines - personnes peuvent vous conseiller de tout simplement indiquer à - Apache de rechercher des directives SSI dans tous les fichiers - .html, ce qui vous évite d'avoir à gérer les noms de - fichiers avec extension .shtml. Ils n'ont probablement - pas entendu parler de la directive XBitHack. En effet, vous devez - garder à l'esprit qu'en faisant ceci, Apache va devoir rechercher - des directives SSI dans chaque fichier qu'il sert, même s'il n'en - contient aucune. Ce n'est donc pas une bonne idée car les - performances peuvent en être sensiblement affectées.

    - -

    Bien entendu, sous Windows, il n'y a pas de bit d'exécution à - positionner, ce qui limite un peu vos choix.

    - -

    Dans sa configuration par défaut, Apache n'envoie pas la date de - dernière modification ou les en-têtes HTTP relatifs à la taille des - contenus dans les pages SSI, car ses valeurs sont difficiles à - calculer pour les contenus dynamiques. Ceci peut induire une - impression de diminution des performances côté client, en empêchant - la mise en cache de votre document. Il existe deux méthodes pour - résoudre ce problème :

    +
    XBitHack on
    +
    + +

    La directive XBitHack indique + à httpd qu’il doit analyser tout fichier dont le bit d’exécution est + positionné. Ainsi, pour activer les SSI pour une page existante, il suffit + de rendre le fichier exécutable :

    + +
    chmod +x pagename.html
    +
    + +

    + Évitez de configurer httpd pour analyser tous les fichiers + .html pour y trouver des directives SSI. Cela force en effet le + serveur à parcourir tous les fichiers HTML qu’il sert, même ceux qui n’ont + pas de contenu SSI, ce qui ajoute une surcharge de travail inutile. +

    + +

    Sous Windows, il n’y a pas de bit d’exécution ; l’approche avec la + directive XBitHack n’est donc + pas valable dans ce cas. Vous devrez alors utiliser l’approche par extension + de nom de fichier.

    + +

    Par défaut, httpd n’envoie pas la date de dernière modification ou les + en-têtes content-length sur les pages SSI, car ces valeurs sont difficiles à + calculer pour un contenu dynamique. Cela peut empêcher la mise en cache et + induire un ressenti de performances plus lentes. Deux approches peuvent + aider :

      -
    1. Utilisez la configuration XBitHack Full. Elle - indique à Apache de déterminer la date de dernière modification en - ne regardant que la date du fichier à l'origine de la requête, - tout en ignorant la date de modification de tout fichier inclus.
    2. - -
    3. Utilisez les directives fournies par le module - mod_expires pour définir de manière explicite la - date d'expiration de vos fichiers, laissant par la-même - aux navigateurs et aux mandataires le soin de déterminer s'il est - opportun ou non de les mettre en cache.
    4. +
    5. Utilisez la directive XBitHack Full qui indique à httpd + qu’il doit déterminer la date de dernière modification à partir du fichier + initialement demandé, tout en ignorant les dates de dernière modification + des fichiers inclus.
    6. + +
    7. Utilisez le module mod_expires pour définir un moment + d’expiration explicite, indiquant ainsi aux navigateurs et aux mandataires + que le contenu peut être mis en cache.
    8. +
    top

    Directives SSI de base

    -

    Les directives SSI adoptent la syntaxe suivante :

    -

    - <!--#fonction attribut=valeur attribut=valeur ... --> -

    +

    Les directives SSI utilisent la syntaxe suivante :

    +
    <!--#function attribute=value attribute=value ... -->
    +
    -

    Le format d'une directive SSI étant similaire à celui d'un - commentaire HTML, si vous n'avez pas activé correctement SSI, le - navigateur l'ignorera, mais elle sera encore visible dans le source - HTML. Si SSI est correctement configuré, la directive sera remplacée - par ses résultats.

    - -

    "fonction" peut prendre de nombreuses formes, et nous décrirons - plus précisément la plupart d'entre eux dans la prochaine version de - ce document. Pour le moment, voici quelques exemples de ce que vous - pouvez faire avec SSI.

    +

    Si les SSI sont correctement configurées, la directive sera remplacée par + sa sortie. Dans le cas contraire, elle demeurera en tant que commentaire + HTML — invisible à l’utilisateur final, mais présente dans le code source de + la page.

    La date courante

    -

    - <!--#echo var="DATE_LOCAL" --> -

    +
    <!--#echo var="DATE_LOCAL" -->
    +
    -

    La fonction echo permet d'afficher la valeur d'une - variable. Il existe un grand nombre de variables standards, y - compris l'ensemble des variables d'environnement disponibles pour - les programmes CGI. De plus, vous pouvez définir vos propres - variables à l'aide de la fonction set.

    - -

    Si vous n'aimez pas le format sous lequel la date s'affiche, vous - pouvez utiliser la fonction config avec un attribut - timefmt, pour le modifier.

    +

    La fonction echo a pour sortie la valeur d’une variable. Les + variables standard incluent le jeu complet de variables d’environnement + disponibles pour les programmes CGI, ainsi que les variables que vous pouvez + définir avec set.

    -

    - <!--#config timefmt="%A %B %d, %Y" -->
    - Today is <!--#echo var="DATE_LOCAL" --> -

    +

    Pour personnaliser le format de la date, utilisez la fonction + config avec l’attribut timefmt :

    + +
    <!--#config timefmt="%A %B %d, %Y" -->
    +Today is <!--#echo var="DATE_LOCAL" -->
    +

    Date de modification du fichier

    -

    - Dernière modification du document <!--#flastmod file="index.html" --> -

    +
    Dernière modification du document <!--#flastmod file="index.html" -->
    +

    Le format peut là aussi être modifié à l'aide de l'attribut timefmt.

    @@ -231,13 +200,11 @@

    Inclusion des résultats d'un programme CGI

    -

    C'est le cas le plus courant d'utilisation des SSI - afficher les - résultats d'un programme CGI, comme l'universellement adoré - "compteur d'accès".

    +

    Les SSI permettent d’inclure directement la sortie d’un programme CGI + dans la page :

    -

    - <!--#include virtual="/cgi-bin/counter.pl" --> -

    +
    <!--#include virtual="/cgi-bin/counter.pl" -->
    +
    top
    @@ -245,245 +212,180 @@

    Exemples additionnels

    -

    Vous trouverez dans ce qui suit quelques exemples spécifiques de - ce que vous pouvez faire de vos documents HTML avec SSI.

    +

    Vous trouverez dans les exemples pratiques suivants des cas d’utilisation + courants des SSI.

    Quand ce document a-t-il été modifié ?

    -

    Nous avons mentionné plus haut que vous pouviez utiliser SSI pour - informer l'utilisateur de la date de dernière modification du - document. Cependant, la méthode pour y parvenir n'a pas été vraiment - abordée. Placé dans votre document HTML, le code suivant va insérer - un repère de temps dans votre page. Bien entendu, SSI devra avoir - été correctement activé, comme décrit plus haut.

    -

    - <!--#config timefmt="%A %B %d, %Y" -->
    - Dernière modification du fichier <!--#flastmod file="ssi.shtml" --> -

    +

    Une des utilisations courantes des SSI est l’affichage d’un horodatage + « date de dernière modification » sur chaque page. Le code suivant utilise + la variable LAST_MODIFIED ; vous pouvez donc coller le même + extrait dans tout fichier sans modifier son nom :

    -

    Bien entendu, vous devez remplacer ssi.shtml par le - nom du fichier auquel vous faites référence. Ceci ne conviendra pas - si vous recherchez un morceau de code générique que vous pourrez - insérer dans tout fichier ; dans ce cas, il est préférable - d'utiliser la variable LAST_MODIFIED :

    -

    - <!--#config timefmt="%D" -->
    - This file last modified <!--#echo var="LAST_MODIFIED" --> -

    +
    <!--#config timefmt="%D" -->
    +Date de dernière modification de ce fichier <!--#echo var="LAST_MODIFIED" -->
    +
    -

    Pour plus de détails sur le format timefmt, tapez - strftime dans votre moteur de recherche préferé. La - syntaxe est identique.

    +

    Pour des détails à propos des chaînes de formatage de + timefmt, voir la documentation de strftime dans le + manuel de référence de la bibliothèque C de votre système.

    -

    Si le site que vous gérez comporte plus que quelques pages, vous - allez vite vous apercevoir qu'effectuer des modifications sur toutes - ces pages peut devenir très contraignant, en particulier si vous - voulez qu'elles conservent un aspect homogène.

    - -

    Inclure un fichier pour un en-tête et/ou un pied de page peut - simplifier cette corvée de mises à jour. Il vous suffit de - confectionner un fichier de pied de page, et de l'inclure dans - chaque page à l'aide de l'élément SSI include. Pour - définir le fichier à inclure, la fonction include peut - utiliser soit l'attribut file, soit l'attribut - virtual. L'attribut file est un chemin de - fichier relatif au répertoire courant. C'est à dire qu'il - ne peut ni avoir pour valeur un chemin absolu (commençant par /), ni - comporter "../" dans son chemin. L'attribut virtual est - probablement plus commode, et peut spécifier une URL relative au - document servi. Elle peut commencer par un /, mais le fichier inclus - et le fichier servi doivent résider sur le même serveur.

    -

    - <!--#include virtual="/footer.html" --> -

    +

    Sur un site qui comporte plus que quelques pages, maintenir un + en-tête ou un pied de page cohérent sur toutes les pages peut s’avérer + fastidieux. Les SSI résolvent ce problème en permettant de stocker le + contenu partagé dans un seul fichier et d’inclure ce dernier n’importe + où :

    + +
    <!--#include virtual="/footer.html" -->
    +
    + +

    La fonction include accepte deux attributs : + file qui spécifie un chemin relatif au répertoire actuel (il ne + peut pas spécifier un chemin absolu ou contenant ../), et + virtual qui spécifie un URL relatif au document servi (et qui + peut commencer par /, mais doit être sur le même serveur).

    + +

    Les directives SSI au sein des fichiers inclus sont évaluées normalement + et les inclusions peuvent être imbriquées. Cela signifie que vous pouvez + placer un horodatage LAST_MODIFIED dans votre fichier de pied + de page, et qu’il sera évalué dans le contexte de chaque page qui l’inclut.

    -

    Je combinerai souvent ces deux derniers points, en ajoutant une - directive LAST_MODIFIED dans un fichier de pied de page - destiné à être inclus. Le fichier inclus peut contenir des - directives SSI, et les inclusions peuvent être imbriquées - à - savoir, le fichier inclus peut inclure un autre fichier, etc...

    top
    -

    Que puis-je configurer d'autre ?

    +

    Autres options de configuration

    -

    En plus du format de date, vous pouvez utiliser l'élément - config pour configurer deux autres choses.

    +

    En plus de timefmt, la fonction config accepte + deux autres attributs.

    -

    En général, lorsque quelque chose se passe mal avec votre - directive SSI, vous recevez le message :

    +

    L’attribut errmsg modifie le message d’erreur affiché + lorsqu’une directive SSI échoue. Le message par défaut est :

    - [an error occurred while processing this directive] +[an error occurred while processing this directive]

    -

    Pour modifier ce message, vous pouvez utiliser l'attribut - errmsg avec la fonction config :

    -

    - <!--#config errmsg="[Il semblerait que vous ne sachiez pas - utiliser les SSI]" --> -

    +

    Vous pouvez le remplacer par un contenu plus adapté à votre site :

    +
    <!--#config errmsg="[Content unavailable]" -->
    +
    -

    Il est cependant probable que les utilisateurs finaux ne voient - jamais ce message, car vous aurez résolu tous les problèmes issus de - vos directives SSI avant que votre site ne soit mis en production. - (N'est-ce pas ?)

    - -

    Vous pouvez aussi modifier le format sous lequel les tailles de - fichiers sont affichées à l'aide de l'attribut sizefmt. - Vous pouvez spécifier bytes pour un affichage en - octets, ou abbrev pour un affichage plus concis en Ko - ou Mo, selon le cas.

    -
    top
    +

    L’attribut sizefmt contrôle la manière dont les tailles de + fichier sont spécifiées : bytes pour un décompte en octets ou + abbrev pour une forme abrégée en Ko ou Mo.

    +
    top

    Exécution de commandes

    -

    Voici autre chose que vous pouvez faire avec la fonction - exec. Vous pouvez vraiment faire exécuter une commande - par SSI en utilisant le shell (/bin/sh, pour être plus - précis - ou le shell DOS, si vous êtes sous Win32). Par exemple, ce - qui suit vous permet d'afficher le contenu d'un répertoire.

    -

    - <pre>
    - <!--#exec cmd="ls" -->
    - </pre> -

    - -

    ou, sous Windows

    -

    - <pre>
    - <!--#exec cmd="dir" -->
    - </pre> -

    - -

    Vous noterez probablement l'étrange formatage provoqué par cette - directive sous Windows, car la sortie de dir contient - la chaîne de caractères "<dir>", ce qui trompe le - navigateur.

    - -

    Notez que cette fonctionnalité est très dangereuse, car elle va - permettre d'exécuter tout code associé à l'élément - exec. Si vous êtes dans la situation où les - utilisateurs peuvent éditer le contenu de vos pages web, dans le cas - d'un "livre d'or" par exemple, assurez-vous de désactiver cette - fonctionnalité. Vous pouvez, tout en permettant les SSI, désactiver - la fonctionnalité exec à l'aide de l'argument - IncludesNOEXEC de la directive - Options.

    -
    top
    +

    La fonction exec permet d’exécuter une commande du shell et + d’inclure sa sortie dans la page. Sur les systèmes de style Unix, la + commande est exécutée via /bin/sh, et sous Windows via + l’interpréteur de commande.

    + +
    <pre>
    +<!--#exec cmd="ls" -->
    +</pre>
    +
    +

    + La fonctionnalité exec constitue un risque de sécurité + significatif. En effet, elle exécute des commandes arbitraires avec les + privilèges du processus du serveur web. Si les utilisateurs peuvent éditer + du contenu sur votre site, assurez-vous que cette fonctionnalité soit + désactivée en spécifiant IncludesNOEXEC au lieu de + Includes dans la définition de la directive Options. +

    +
    top

    Techniques SSI avancées

    -

    Outre l'affichage de contenu, les SSI d'Apache vous permettent de - définir des variables, et de les utiliser dans des comparaisons et - des conditions.

    +

    Au-delà de la simple inclusion de contenu, les SSI prennent en charge les + variables et les expressions conditionnelles, rendant possible la génération + de contenus différents en fonction du contexte de la requête.

    Définition de variables

    -

    Avec l'élément set, vous pouvez définir des - variables pour un usage ultérieur. Comme nous en aurons besoin plus - loin, nous allons en parler tout de suite. La syntaxe se présente - comme suit :

    -

    - <!--#set var="name" value="Rich" --> -

    +

    La directive set permet de définir des variables à utiliser + plus tard dans la page :

    -

    Pour affecter une valeur à vos variables, en plus de la - définition littérale de l'exemple ci-dessus, vous pouvez utiliser - une autre variable, y compris les variables d'environnement, ou les variables - décrites plus haut (comme LAST_MODIFIED par exemple). - Pour indiquer qu'il s'agit d'une variable et non d'une chaîne, vous - devez utiliser le symbole dollar ($) devant le nom de la - variable.

    +
    <!--#set var="name" value="Rich" -->
    +
    -

    <!--#set var="modified" value="$LAST_MODIFIED" --> -

    +

    Les variables peuvent référencer d’autres variables (y compris des variables d’environnement) en utilisant le signe dollar + ($) comme préfixe :

    -

    Pour insérer un caractère $ dans la valeur de votre variable, - vous devez l'échapper à l'aide d'un backslash.

    -

    - <!--#set var="cost" value="\$100" --> -

    +
    <!--#set var="modified" value="$LAST_MODIFIED" -->
    +
    -

    Enfin, si vous voulez insérer une variable dans une chaîne, et - s'il y a une chance pour que le nom de la variable se confonde avec - le reste de la chaîne, vous pouvez l'entourer d'accolades pour - eviter toute confusion (Il est difficile de trouver un bon exemple - pour illustrer ceci, mais j'espère que vous comprendrez).

    -

    - <!--#set var="date" value="${DATE_LOCAL}_${DATE_GMT}" --> -

    +

    Pour inclure un signe dollar littéral, protégez-le avec une + contre-oblique :

    +
    <!--#set var="cost" value="\$100" -->
    +
    -

    Expressions conditionnelles

    +

    Lorsqu'un nom de variable risque d'être ambigu au sein d'une chaîne plus + longue, utilisez des accolades pour le délimiter :

    +
    <!--#set var="date" value="${DATE_LOCAL}_${DATE_GMT}" -->
    +
    -

    Maintenent que nous avons des variables, et que nous pouvons - définir et comparer leurs valeurs, nous sommes à même de les - utiliser dans des expressions conditionnelles. Ceci confère à SSI le - statut de petit langage de programmation. - mod_include fournit une structure if, - elif, else, endif pour la - construction d'expressions conditionnelles, ce qui vous permet de - générer plusieurs pages logiques à partir d'une seule vraie - page.

    -

    La structure de l'expression conditionnelle est :

    -

    - <!--#if expr="condition" -->
    - <!--#elif expr="condition" -->
    - <!--#else -->
    - <!--#endif --> -

    +

    Expressions conditionnelles

    -

    Une condition peut revêtir la forme de toute comparaison - logique - soit une comparaison de valeurs avec une autre, soit une - vérification de la "vérité" d'une valeur particulière (Une chaîne - donnée est vraie si elle n'est pas vide). Pour une liste exhaustive - des opérateurs de comparaison disponibles, voir la documentation du - module mod_include.

    -

    Par exemple, spour insérer l'heure du jour dans votre page web, - vous pouvez ajouter ces lignes dans la page HTML :

    +

    mod_include fournit les éléments if, + elif, else et endif permettant de + construire une logique conditionnelle. Cette fonctionnalité permet de + générer des sorties différentes à partir d’une seule page physique.

    + +

    La structure est :

    + +
    <!--#if expr="test_condition" -->
    +<!--#elif expr="test_condition" -->
    +<!--#else -->
    +<!--#endif -->
    +
    -

    - Good - <!--#if expr="%{TIME_HOUR} <12" -->
    - morning!
    - <!--#else -->
    - afternoon!
    - <!--#endif -->
    -

    - -

    Toute autre variable (que vous avez définie, ou une variable - d'environnement normale) peut être utilisée dans les expressions - conditionnelles. Voir le document Expressions - rationnelles dans le serveur HTTP Apache pour plus de détails à - propos du fonctionnement du moteur d'évaluation des expressions - rationnelles.

    - -

    Associée à la possibilité avec Apache de définir - des variables d'environnement à l'aide de directives - SetEnvIf, ainsi que d'autres directives en rapport, - cette fonctionnalité vous permet d'ajouter une grande variété - de contenus dynamiques côté serveur sans avoir à concevoir une - application web de A à Z.

    +

    Une test_condition peut comparer des valeurs ou vérifier si une + variable n’est pas vide. Voir la documentation de + mod_include pour la liste complète des opérateurs de + comparaison.

    + +

    Par exemple, pour afficher des salutations différentes en fonction de + l’heure du jour :

    + +
    Good
    +<!--#if expr="%{TIME_HOUR} <12" -->
    +morning!
    +<!--#else -->
    +afternoon!
    +<!--#endif -->
    +
    +
    + +

    Toute variable — définie par l’utilisateur ou issue de l’environnement + — peut être utilisée dans les expressions conditionnelles. Voir Les expressions dans le Serveur HTTP Apache pour des + détails complets à propos du moteur d’évaluation des expressions.

    + +

    Combinées avec la capacité de httpd à définir des variables + d’environnement en utilisant SetEnvIf et les directives apparentées, + les SSI conditionnelles peuvent traiter une grande variété de scénarios de + contenu dynamique sans nécessiter de cadriciel complet d’applications.

    top

    Conclusion

    -

    SSI ne remplace certainement pas CGI, ou d'autres technologies - utilisées pour la génération de pages web dynamiques. Mais c'est une - bonne méthode pour ajouter des petits contenus dynamiques à vos - pages, sans devoir fournir un gros effort supplémentaire.

    +

    Pour les sites principalement statiques mais nécessitant quelques touches + dynamiques, les SSI évitent la surcharge de travail induite par la + configuration d’une pile complète d’applications. Elles ne requièrent que + mod_include et quelques lignes de configuration pour + fonctionner.

    Langues Disponibles:  en  | diff -Nru apache2-2.4.68/docs/manual/images/README.md apache2-2.4.69/docs/manual/images/README.md --- apache2-2.4.68/docs/manual/images/README.md 1970-01-01 00:00:00.000000000 +0000 +++ apache2-2.4.69/docs/manual/images/README.md 2026-06-16 15:24:07.000000000 +0000 @@ -0,0 +1,97 @@ +# SVG Diagram Style Guide + +This documents the style conventions used for flowchart/diagram SVGs +in this directory, so that new diagrams are visually consistent. + +## Fonts + +- **Primary:** Arial, Helvetica, sans-serif +- **Title:** 12px, bold +- **Phase/section labels:** 11px, bold, fill `#444` +- **Body text:** 10px, fill `#333` +- **Edge labels (Yes/No):** 9px, fill `#555` +- **Annotations/italic notes:** 8px, fill `#666`, italic + +## Colors + +| Element | Fill | Stroke | Notes | +|---------|------|--------|-------| +| Process box (action) | `#e8e8e8` | `#333` | `rx:4 ry:4` rounded corners | +| Decision diamond | `#fff8dc` (cornsilk) | `#333` | | +| Terminal (start/done) | `#d4edda` (light green) | `#333` | `rx:12 ry:12` pill shape | +| Redirect / error | `#f8d7da` (light red) | `#333` or `#b33` | `rx:12 ry:12` pill shape | +| Phase box (grouping) | `#fafafa` | `#888` | `rx:8 ry:8`, contains related steps | +| Warning box | `#f8d7da` | `#b33` | `rx:4 ry:4`, stroke-width 1.5 | +| Lines/arrows | — | `#333` | stroke-width 1.2 | +| Dashed lines (loops) | — | `#333` | stroke-dasharray: 5,4 | + +## Arrowhead Marker + +```xml + + + +``` + +## SVG Boilerplate + +```xml + + + + + + + + + + +``` + +## Generating PNGs from SVGs + +Use `rsvg-convert` (from `librsvg`): + +```bash +# Install (macOS): +brew install librsvg + +# Install (Fedora/RHEL/CentOS): +dnf install librsvg2-tools + +# Install (Debian/Ubuntu): +apt-get install librsvg2-bin + +# Convert at 1x (matching SVG viewBox dimensions): +rsvg-convert -o rewrite_l_flag_looping.png rewrite_l_flag_looping.svg + +# Or specify explicit dimensions: +rsvg-convert -w 520 -h 720 -o rewrite_l_flag_looping.png rewrite_l_flag_looping.svg +``` + +Existing PNGs in this directory are at 1x scale (matching their SVG +viewBox width/height). Keep PNGs at 1x for consistency with the rest +of the documentation build. + +## General Conventions + +- Diamonds for decisions, rounded rectangles for actions, pill shapes + for start/end terminals. +- Yes/No labels on decision branches (9px, gray). +- Phase boxes group related steps that occur in the same processing context. +- Dashed lines indicate loop-back paths or optional flows. +- Titles centered at the top of the SVG. +- Typical viewBox widths: 440–650px. Heights: 360–750px. Binary files /srv/release.debian.org/tmp/xDpnWyGgcR/apache2-2.4.68/docs/manual/images/rewrite_l_flag_looping.png and /srv/release.debian.org/tmp/IjglZ5i9op/apache2-2.4.69/docs/manual/images/rewrite_l_flag_looping.png differ diff -Nru apache2-2.4.68/docs/manual/images/rewrite_l_flag_looping.svg apache2-2.4.69/docs/manual/images/rewrite_l_flag_looping.svg --- apache2-2.4.68/docs/manual/images/rewrite_l_flag_looping.svg 1970-01-01 00:00:00.000000000 +0000 +++ apache2-2.4.69/docs/manual/images/rewrite_l_flag_looping.svg 2026-06-16 15:10:06.000000000 +0000 @@ -0,0 +1,153 @@ + + + + + + + + + + Per-Directory Rewriting: [L] Flag Looping + + + + Request: /app/hello + + + + + Per-directory rules (.htaccess) — one pass + + + + Strip directory prefix + + + Pattern sees: "hello" + + + + + Get next rule + + + + + Pattern + matches? + + + + No + + + + Yes + + + + Conditions + met? + + + + No + + + + Yes + + + + Substitute URL / filename + + + + + [END] flag? + + + + Yes + + Done + + + + No + + + + + + + + + [L] or end + of rules? + + + More rules + + + + + [L] stops pass + + + + Internal subrequest with + rewritten URL + + + + + Same rule + matches again? + + + + No + + Done + + + + Yes + + + + Guarded by + RewriteCond? + + + + Yes — cond + fails 2nd pass + + Done + + + + No + + Infinite loop! + (500 error after 10 cycles) + + Binary files /srv/release.debian.org/tmp/xDpnWyGgcR/apache2-2.4.68/docs/manual/images/rewrite_module_order.png and /srv/release.debian.org/tmp/IjglZ5i9op/apache2-2.4.69/docs/manual/images/rewrite_module_order.png differ diff -Nru apache2-2.4.68/docs/manual/images/rewrite_module_order.svg apache2-2.4.69/docs/manual/images/rewrite_module_order.svg --- apache2-2.4.68/docs/manual/images/rewrite_module_order.svg 1970-01-01 00:00:00.000000000 +0000 +++ apache2-2.4.69/docs/manual/images/rewrite_module_order.svg 2026-06-16 18:16:15.000000000 +0000 @@ -0,0 +1,110 @@ + + + + + + + + + + Module Processing Order: mod_rewrite vs mod_alias + + + + + + + Server / VirtualHost Context + + + + Request arrives + + + + + URL-to-filename translation phase + + + + + mod_rewrite + ← FIRST + + + + + mod_alias + second + + + + RewriteRule matches first. + If it rewrites, Redirect + never sees the request. + + + + + Content + + + + Per-Directory Context + (.htaccess / <Directory>) + + + + Request arrives + + + + + URL-to-filename translation phase + + + + + mod_alias + ← FIRST + + + + + Fixup phase (later) + + + + + mod_rewrite + second + + + + Redirect runs first. + If it matches, RewriteRule + in .htaccess never fires. + + + + + Content + + + The order reversal between contexts is a common source of confusion. Choose one module per task. + + Binary files /srv/release.debian.org/tmp/xDpnWyGgcR/apache2-2.4.68/docs/manual/images/rewrite_path_stripping.png and /srv/release.debian.org/tmp/IjglZ5i9op/apache2-2.4.69/docs/manual/images/rewrite_path_stripping.png differ diff -Nru apache2-2.4.68/docs/manual/images/rewrite_path_stripping.svg apache2-2.4.69/docs/manual/images/rewrite_path_stripping.svg --- apache2-2.4.68/docs/manual/images/rewrite_path_stripping.svg 1970-01-01 00:00:00.000000000 +0000 +++ apache2-2.4.69/docs/manual/images/rewrite_path_stripping.svg 2026-06-16 16:34:25.000000000 +0000 @@ -0,0 +1,142 @@ + + + + + + + + + + Per-Directory Path Stripping and RewriteBase + + + + Incoming request + + + + + /app/ + products/widget + ← full URL-path + + + + + Strip directory prefix + + + + Prefix = URL path to + .htaccess directory + (here: /app/) + + + + products/widget + ← no leading / + + + + + RewriteRule pattern matches + + + + e.g. RewriteRule "^products/(.+)$" "shop.php?item=$1" + + + + + Apply substitution + + + + + Substitution + type? + + + + http(s):// + + External + redirect + + 302 response + (no subrequest) + + + + starts with / + + + Absolute path: + RewriteBase + not applied + + + + relative + + + + shop.php?item=widget + ← relative + + + + + Prepend RewriteBase + + + + Default: URL path to + .htaccess directory + Or: explicit RewriteBase + + + + /app/ + shop.php?item=widget + ← full path + + + + + Issue internal subrequest + + + + + /app/shop.php?item=widget + + + + + Re-enters request cycle + + + Three possible substitution outcomes: + • Relative (e.g. "shop.php") → RewriteBase prepended → subrequest + • Absolute path (e.g. "/other/page") → used as-is → subrequest + • Absolute URI (e.g. "http://...") → external redirect (no subrequest) + + Binary files /srv/release.debian.org/tmp/xDpnWyGgcR/apache2-2.4.68/docs/manual/images/rewrite_simplified_overview.png and /srv/release.debian.org/tmp/IjglZ5i9op/apache2-2.4.69/docs/manual/images/rewrite_simplified_overview.png differ diff -Nru apache2-2.4.68/docs/manual/images/rewrite_simplified_overview.svg apache2-2.4.69/docs/manual/images/rewrite_simplified_overview.svg --- apache2-2.4.68/docs/manual/images/rewrite_simplified_overview.svg 1970-01-01 00:00:00.000000000 +0000 +++ apache2-2.4.69/docs/manual/images/rewrite_simplified_overview.svg 2026-06-16 17:32:33.000000000 +0000 @@ -0,0 +1,113 @@ + + + + + + + + + + How mod_rewrite Processes a Request + Simplified overview — see Technical Details for full processing model + + + + Request arrives + + + + + RewriteEngine + On? + + + + No + + Pass through + + + + Yes + + + + Get next rule + + + + + Any rules + left? + + + + No + + URL unchanged + + + + Yes + + + + Pattern + matches? + + + + No + + + + Yes + + + + RewriteCond + passes? + + + + No + + + + Yes + + + + Apply substitution + + + + + [L] or [END] + flag? + + + + No — try + next rule + + + + Yes + + + URL rewritten — done + + diff -Nru apache2-2.4.68/docs/manual/install.html.en apache2-2.4.69/docs/manual/install.html.en --- apache2-2.4.68/docs/manual/install.html.en 2026-05-31 13:57:20.000000000 +0000 +++ apache2-2.4.69/docs/manual/install.html.en 2026-06-11 20:15:48.000000000 +0000 @@ -34,15 +34,16 @@

    -

    This document covers compilation and installation of the Apache HTTP Server - on Unix and Unix-like systems only. For compiling and - installation on Windows, see Using Apache HTTP Server with Microsoft - Windows and Compiling Apache for Microsoft Windows. - For other platforms, see the platform documentation.

    - -

    Apache httpd uses libtool and autoconf - to create a build environment that looks like many other Open Source - projects.

    +

    The Apache HTTP Server is released as source code. This document + covers building and installing the server from source on Unix and + Unix-like systems. For Windows, see Using Apache HTTP Server with Microsoft + Windows and Compiling Apache httpd for Microsoft + Windows. For other platforms, see the platform documentation.

    + +

    If you install httpd from a distribution package (RPM, DEB, etc.), + configuration layout and defaults may differ from what is described here. + See third-party packages below, and consult your + distribution's documentation for platform-specific details.

    If you are upgrading from one minor version to the next (for example, 2.4.66 to 2.4.67), please skip down to the upgrading section.

    @@ -66,45 +67,6 @@

    Overview for the impatient

    -
    -
    Installing on Fedora/CentOS/Red Hat Enterprise Linux
    -
    -
    sudo dnf install httpd
    -
    -# Start service
    -sudo systemctl start httpd
    -
    -# Stop service
    -sudo systemctl stop httpd
    -
    -# Restart service
    -sudo systemctl restart httpd
    - - -
    See the - Fedora project's documentation for platform-specific notes.
    -
    - -
    Installing on Ubuntu/Debian
    -
    -
    sudo apt install apache2
    -
    -# Start service
    -sudo systemctl start apache2
    -
    -# Stop service
    -sudo systemctl stop apache2
    -
    -# Restart service
    -sudo systemctl restart apache2
    - - -
    See Ubuntu's documentation for platform-specific notes.
    - -
    - -
    Installing from source
    -
    @@ -164,12 +126,6 @@

    Each section of the compilation and installation process is described in more detail below, beginning with the requirements for compiling and installing Apache httpd.

    - - - -
    Don't see your favorite platform mentioned - here? Come help us - improve this doc.
    top
    @@ -187,19 +143,19 @@ (be sure the directory names do not have version numbers; for example, the APR distribution must be under /httpd_source_tree_root/srclib/apr/) and use ./configure's --with-included-apr - option. On some platforms, you may have to install the + option. On some platforms, you may have to install the corresponding -dev packages to allow httpd to build against your installed copy of APR and APR-Util. -
    Perl-Compatible Regular Expressions Library (PCRE)
    -
    This library is required but no longer bundled with httpd. - Download the source code from https://www.pcre.org, - or install a Port or Package. If your build system can't find - the pcre-config script installed by the PCRE build, point to it - using the --with-pcre parameter. On some platforms, +
    Perl-Compatible Regular Expressions Library (PCRE2)
    +
    This library is required but not bundled with httpd. + Download the source code from https://github.com/PCRE2Project/pcre2 + or install it from your system's package manager. If your build system can't find + the pcre2-config script installed by the PCRE2 build, + point to it using the --with-pcre parameter. On some platforms, you may have to install the corresponding -dev - package to allow httpd to build against your installed copy - of PCRE.
    + package (e.g. libpcre2-dev or pcre2-devel) + to allow httpd to build against your installed copy of PCRE2.
    Disk Space
    Make sure you have at least 200 MB of temporary free disk @@ -218,13 +174,11 @@ basic build tools such as make.
    Accurate time keeping
    -
    Elements of the HTTP protocol are expressed as the time of - day. So, it's time to investigate setting some time - synchronization facility on your system. Most modern Linux - distributions provide systemd-timesyncd or - chrony for this purpose. See the NTP - homepage for more details about NTP software and public - time servers.
    +
    HTTP protocol headers use timestamps, so your system clock + must be accurate. Most Linux distributions enable + systemd-timesyncd or chrony by + default. Verify that time synchronization is active on your + system before running a production server.
    Perl 5 [OPTIONAL]
    @@ -239,16 +193,13 @@

    Download

    -

    If you choose to build from source, start by downloading - the source tarball from the Apache HTTP Server - download site. The build process (described below) - allows you to customize your server to suit your - needs.

    +

    Download the source tarball from the Apache HTTP Server + download site.

    After downloading, it is important to verify that you have a complete and unmodified version of the Apache HTTP Server. This can be accomplished by testing the downloaded tarball against the - PGP signature. Details on how to do this are available on the + PGP signature. Details on how to do this are available on the verification page.

    @@ -269,11 +220,11 @@

    Configuring the source tree

    -

    The next step is to configure the Apache source tree for your +

    The next step is to configure the httpd source tree for your particular platform and personal requirements. This is done using the script configure included in the root directory of the distribution. (Developers downloading - an unreleased version of the Apache source tree will need to have + an unreleased version of the httpd source tree will need to have autoconf and libtool installed and will need to run buildconf before proceeding with the next steps. This is not necessary for official releases.)

    @@ -284,14 +235,14 @@ and command line options.

    The most important option is the location --prefix - where Apache is to be installed later, because Apache has to be - configured for this location to work correctly. More fine-tuned + where httpd is to be installed later, because httpd has to be + configured for this location to work correctly. More fine-tuned control of the location of files is possible with additional configure options.

    Also at this point, you can specify which features you - want included in Apache by enabling and disabling modules. Apache comes with a wide range of modules - included by default. They will be compiled as + want included in httpd by enabling and disabling modules. httpd comes with a wide range of modules + included by default. They will be compiled as shared objects (DSOs) which can be loaded or unloaded at runtime. You can also choose to compile modules statically by using the option @@ -301,21 +252,21 @@ --enable-module option, where module is the name of the module with the mod_ string removed and with any underscore converted - to a dash. Similarly, you can disable modules with the - --disable-module option. Be careful when + to a dash. Similarly, you can disable modules with the + --disable-module option. Be careful when using these options, since configure cannot warn you if the module you specify does not exist; it will ignore the option.

    In addition, it is sometimes necessary to provide the configure script with extra information about the - location of your compiler, libraries, or header files. This is + location of your compiler, libraries, or header files. This is done by passing either environment variables or command line - options to configure. For more information, see the + options to configure. For more information, see the configure manual page. Or invoke configure using the --help option.

    For a short impression of what possibilities you have, here - is a typical example which compiles Apache for the installation + is a typical example which compiles httpd for the installation tree /sw/pkg/apache with a particular compiler and flags plus the two additional modules mod_ldap and mod_lua:

    @@ -336,10 +287,11 @@

    Build

    -

    Now you can build the various parts which form the Apache +

    Now you can build the various parts which form the httpd package by running:

    -

    $ make

    +
    $ make
    +

    Please be patient here, since a base configuration takes several minutes to compile and the time will vary widely @@ -353,7 +305,8 @@ installation PREFIX (see --prefix option above) by running:

    -

    $ make install

    +
    $ make install
    +

    This step will typically require root privileges, since PREFIX is usually a directory with restricted write @@ -365,23 +318,24 @@

    Customize

    -

    Next, you can customize your Apache HTTP server by editing +

    Next, you can customize your Apache HTTP Server by editing the configuration files under PREFIX/conf/.

    -

    $ vi PREFIX/conf/httpd.conf

    +
    $ vi PREFIX/conf/httpd.conf
    +
    -

    Have a look at the Apache manual under +

    Have a look at the httpd manual under PREFIX/docs/manual/ or consult https://httpd.apache.org/docs/2.4/ for the most recent version of this manual and a complete reference of available configuration directives.

    top

    Test

    -

    Now you can start your Apache - HTTP server by immediately running:

    +

    Now you can start your Apache HTTP Server by immediately running:

    -

    $ PREFIX/bin/apachectl -k start

    +
    $ PREFIX/bin/apachectl -k start
    +

    You should then be able to request your first document via the URL http://localhost/. The web page you see is located @@ -390,27 +344,28 @@ Then stop the server again by running:

    -

    $ PREFIX/bin/apachectl -k stop

    +
    $ PREFIX/bin/apachectl -k stop
    +
    top

    Upgrading

    The first step in upgrading is to read the release announcement and the file CHANGES in the source distribution to - find any changes that may affect your site. When changing between + find any changes that may affect your site. When changing between major releases (for example, from 2.4 to 2.6), there will likely be major differences in the compile-time and - run-time configuration that will require manual adjustments. All + run-time configuration that will require manual adjustments. All modules will also need to be upgraded to accommodate changes in the module API.

    Upgrading from one minor version to the next (for example, from - 2.4.66 to 2.4.67) is easier. The make install + 2.4.66 to 2.4.67) is easier. The make install process will not overwrite any of your existing documents, log - files, or configuration files. In addition, the developers make + files, or configuration files. In addition, the developers make every effort to avoid incompatible changes in the configure options, run-time configuration, or the - module API between minor versions. In most cases you should be able to + module API between minor versions. In most cases you should be able to use an identical configure command line, an identical configuration file, and all of your modules should continue to work.

    @@ -418,9 +373,9 @@

    To upgrade across minor versions, start by finding the file config.nice in the build directory of your installed server or at the root of the source tree for your - old install. This will contain the exact + old install. This will contain the exact configure command line that you used to - configure the source tree. Then to upgrade from one version to + configure the source tree. Then to upgrade from one version to the next, you need only copy the config.nice file to the source tree of the new version, edit it to make any desired changes, and then run:

    @@ -433,7 +388,7 @@
    You should always test any new version in your - environment before putting it into production. For example, you + environment before putting it into production. For example, you can install and run the new version along side the old one by using a different --prefix and a different port (by adjusting the Listen directive) to test for any @@ -443,32 +398,54 @@ which will be appended to your original configure options:

    -

    - $ ./config.nice --prefix=/home/test/apache --with-port=90 -

    +
    $ ./config.nice --prefix=/home/test/apache --with-port=90
    +
    top

    Third-party packages

    -

    A large number of third parties provide their own packaged - distributions of the Apache HTTP Server for installation on - particular platforms. This includes the various Linux distributions, - various - Windows - packages, macOS, and many more.

    +

    Many operating systems ship pre-built Apache httpd packages. + These are convenient for getting started quickly, but they often + differ from a source build in configuration file layout, + compiled-in modules, and default paths. The documentation on this + site describes the server as built from source; if you are using a + platform package, consult your distribution's documentation for + platform-specific details.

    + +

    Some common examples:

    + +
    +
    Fedora / CentOS / Red Hat Enterprise Linux
    +
    +
    sudo dnf install httpd
    +sudo systemctl start httpd
    + +

    See the + Fedora project's documentation for configuration layout and + platform-specific notes.

    +
    + +
    Ubuntu / Debian
    +
    +
    sudo apt install apache2
    +sudo systemctl start apache2
    + +

    See Ubuntu's + documentation for configuration layout and + platform-specific notes.

    +
    +

    Our software license not only permits, but encourages, this kind of redistribution. However, it does result in a situation where the configuration layout and defaults on your installation of the server - may differ from what is stated in the documentation. While - unfortunate, this situation is not likely to change any time - soon.

    - -

    A description - of these third-party distributions is in the HTTP - Server wiki. However, you will need to familiarize - yourself with your particular platform's package management and - installation procedures.

    + may differ from what is stated in the documentation. A description + of these third-party distributions is available in the HTTP + Server wiki.

    + +
    Don't see your favorite platform mentioned + here? Come help us + improve this doc.
    diff -Nru apache2-2.4.68/docs/manual/install.html.fr.utf8 apache2-2.4.69/docs/manual/install.html.fr.utf8 --- apache2-2.4.68/docs/manual/install.html.fr.utf8 2026-05-31 13:57:20.000000000 +0000 +++ apache2-2.4.69/docs/manual/install.html.fr.utf8 2026-06-29 16:13:37.000000000 +0000 @@ -32,25 +32,24 @@  pt-br  |  tr 

    -
    Cette traduction peut être périmée. Vérifiez la version - anglaise pour les changements récents.
    -

    Ce document couvre l'installation et la compilation du serveur - HTTP Apache - sur les systèmes Unix et similaires seulement. Pour la compilation et - l'installation sous Windows, voir Utiliser le serveur HTTP Apache avec Microsoft - Windows et Compilation - d'Apache sous Microsoft Windows. Pour les autres plateformes, se - référer à la documentation par - plateforme.

    - -

    Apache httpd utilise libtool et autoconf - afin de créer un environnement de construction similaire à la plupart - des projets Open Source .

    +

    Le serveur HTTP Apache est distribué sous forme de code source. Ce + document décrit la construction et l’installation du serveur à partir des + sources sous Unix et les systèmes de la famille d’Unix. Pour Windows, voir + Utiliser le serveur HTTP Apache avec + Microsoft Windows et Compilation + de httpd sous Microsoft Windows. Pour les autres plateformes, se + référer à la documentation par plateforme.

    + +

    Si vous installez httpd depuis un paquet de distribution (RPM, DEB, + etc.), l’organisation de la configuration et les valeurs par défaut peuvent + être différentes de ce qui est décrit ici. Voir paquets + tiers ci-après et consultez la documentation de votre distribution pour + les détails spécifiques à la plateforme.

    Si vous effectuez une mise à jour depuis une version mineure vers - la suivante (par exemple, 2.4.8 à 2.4.9), veuillez passer à la section + la suivante (par exemple, 2.4.66 à 2.4.67), veuillez passer à la section mise à jour.

    @@ -66,53 +65,26 @@
  • Mise à jour
  • Paquets tiers
  • Voir aussi

    + des sources
  • Démarrer httpd
  • Arrêt et redémarrage
  • top

    Aperçu pour les plus pressés

    -
    -
    Installation sous Fedora/CentOS/Red Hat Enterprise Linux
    -
    -
    sudo yum install httpd
    -sudo systemctl enable httpd
    -sudo systemctl start httpd
    - - -
    Les dernières versions de ces distributions utilisent - dnf au lieu de yum. Voir la documentation du - projet Fedora pour des informations spécifiques à cette plateforme.
    -
    - -
    Installation sous Ubuntu/Debian
    -
    -
    sudo apt install apache2
    -sudo service apache2 start
    - - -
    Voir la documentation - Ubuntu pour des informations spécifiques à cette plateforme.
    - -
    - -
    Installation à partir des sources
    -
    -
    - + - + @@ -157,27 +129,20 @@

    Chaque étape du processus de compilation et d'installation est décrite plus en détails ci-dessous, à commencer par les prérequis - pour compiler et installer Apache httpd.

    - - - -
    L'installation sous votre plateforme favorite n'est pas - traitée ici ? N'hésitez pas à nous aider à compléter cette - documentation en nous faisant profiter de votre expérience.
    - - + pour compiler et installer httpd.

    top

    Prérequis

    -

    Les prérequis pour la construction d'Apache httpd sont les suivants:

    +

    Les prérequis pour la construction et l’exécution de httpd sont les + suivants:

    APR et APR-Util
    APR et APR-Util doivent être déjà installés sur votre système. Si ce n'est pas le cas, ou si vous préférez ne pas utiliser les versions fournies par le système, téléchargez les dernières - versions d'APR et APR-Util depuis Apache APR, décompressez-les + versions d'APR et APR-Util depuis Apache APR, décompressez-les respectivement dans /racine_sources_httpd/srclib/apr et /racine_sources_httpd/srclib/apr-util (les noms des répertoires ne doivent pas comporter de numéros de versions ; par exemple, la @@ -189,87 +154,70 @@ installées d'APR et APR-Util.
    Bibliothèque d'expressions rationnelles compatibles Perl - (PCRE)
    -
    Cette bibliothèque est nécessaire mais n'est plus fournie avec la - distribution de httpd. Téléchargez le code source depuis http://www.pcre.org ou installez - un portage du paquet. Si votre suite de compilation ne trouve pas - le script pcre-config installé au cours du processus de - construction de PCRE, indiquez son chemin via l'option - --with-pcre du script ./configure. Sur - certaines plateformes, vous devrez - peut-être installer les paquets -dev correspondants - pour permettre la compilation de httpd avec la version - installée de PCRE.
    + (PCRE2) +
    Cette bibliothèque est nécessaire mais n'est pas fournie avec la + distribution de httpd. Téléchargez le code source depuis https://github.com/PCRE2Project/pcre2 + ou installez le avec le gestionnaire de paquets de votre système. Si votre + système de construction ne trouve pas le script pcre2-config + installé par la construction de PCRE2, pointez vers lui en utilisant + l’option --with-pcre. Sur certaines plateformes, vous devrez + peut-être installer le paquet -dev correspondant (par exemple + libpcre2-dev ou pcre2-devel) pour permettre la + construction de httpd avec votre version installée de PCRE2.
    Espace disque
    -
    Assurez-vous d'avoir au moins 50 Mo d'espace disque disponible +
    Assurez-vous d'avoir au moins 200 Mo d'espace disque disponible temporaire. Après l'installation le serveur occupe - approximativement 10 Mo d'espace disque. L'espace disque réellement + approximativement 50 Mo d'espace disque. L'espace disque réellement nécessaire va varier considérablement en fonction de vos options de configuration, de la présence éventuelle de modules tiers, et bien entendu de la taille de votre site web et des sites que vous hébergez sur votre serveur.
    Compilateur ANSI-C et système de construction
    -
    Vous devez disposer d'un compilateur ANSI-C. Le compilateur GNU C (GCC) de la Free Software Foundation (FSF) +
    Vous devez disposer d'un compilateur ANSI-C. Le compilateur GNU C (GCC) de la Free Software Foundation (FSF) est recommandé. Si vous ne possédez pas GCC, assurez-vous au moins que votre compilateur soit compatible ANSI. En outre, votre PATH doit contenir les outils de construction de base tels que make.
    Connaissance de l'heure exacte
    -
    Les éléments du protocole HTTP font référence à l'heure du jour. - Par conséquent, il est nécessaire d'équiper votre système d'un - dispositif de synchronisation du temps. Les programmes - ntpdate ou xntpd, basés sur le protocole NTP, - sont couramment utilisés à cet effet. - Voir la page d'accueil de NTP - pour plus de détails à propos du logiciel NTP et des serveurs - de temps publics.
    +
    Les entêtes du protocole HTTP utilisent un horodatage ; l’horloge de + votre système doit donc être précise. La plupart des distributions de + Linux activent systemd-timesyncd ou chrony par + défaut. Vérifiez que la synchronisation du temps est active sur votre + système avant d’exploiter un serveur en production.
    -
    Perl 5 +
    Perl 5 [OPTIONNEL]
    -
    L'interpréteur Perl 5 (les versions 5.003 ou supérieures conviennent) - est nécessaire pour l'exécution de certains scripts comme - apxs ou dbmmanage - (qui sont écrits en Perl). - Si le script configure ne trouve pas d'interpréteur - Perl 5, vous ne pourrez pas utiliser les scripts qui en ont besoin. - Bien entendu, vous pourrez tout de même construire et utiliser - Apache httpd.
    +
    L'interpréteur Perl 5 est nécessaire pour l'exécution de certains + scripts comme apxs ou dbmmanage (qui + sont écrits en Perl). Si le script configure ne trouve + pas d'interpréteur Perl 5, vous ne pourrez pas utiliser les scripts qui en + ont besoin. Bien entendu, vous pourrez tout de même construire et + utiliser httpd.
    top

    Téléchargement

    -

    Le serveur HTTP Apache peut être téléchargé à partir du - site de téléchargement - du serveur HTTP Apache, qui fournit la liste de nombreux miroirs. - Il sera plus commode à la plupart des utilisateurs d'Apache sur les - systèmes UNIX ou similaires de télécharger et de compiler - la version sources. Le processus de construction (décrit ci-dessous) est - simple, et vous permet de personnaliser votre serveur selon vos besoins. - En outre, les versions binaires sont souvent plus anciennes que les - dernières versions sources. Si vous téléchargez une version binaire, - suivez les instructions décrites dans le fichier - INSTALL.bindist inclus dans la distribution.

    - -

    Après le téléchargement, il est important de vérifier que vous - disposez d'une version complète et non modifiée du serveur HTTP Apache. - Vous pouvez le faire en testant l'archive téléchargée à l'aide de - la signature PGP. Vous trouverez les détails de cette opération sur la page de téléchargement ainsi qu'un exemple précis décrivant l'utilisation de - PGP.

    +

    Téléchargez l’archive tar du code source depuis le site de téléchargement du + serveur HTTP Apache.

    + +

    Après le téléchargement, il est important de vérifier que vous disposez + d'une version complète et non modifiée du serveur HTTP Apache. Vous pouvez + le faire en testant l'archive téléchargée à l'aide de la signature PGP. Vous + trouverez les détails de cette opération sur la page de + vérification.

    top

    Extraction

    -

    L'extraction des sources depuis l'archive du serveur HTTP Apache consiste - simplement à décompresser et à désarchiver cette dernière :

    +

    Extraire les sources depuis l'archive du serveur HTTP Apache :

    -
    $ gzip -d httpd-NN.tar.gz
    -$ tar xvf httpd-NN.tar
    +
    $ tar xzf httpd-NN.tar.gz

    Ceci créera, dans le répertoire courant, un nouveau répertoire @@ -280,45 +228,41 @@

    Configuration de l'arborescence des sources

    L'étape suivante consiste à configurer l'arborescence des sources - d'Apache en fonction de votre plateforme et de vos besoins personnels. - Le script configure, situé à la racine du - répertoire de la distribution, a été conçu à cet effet - (Les développeurs qui téléchargent - une version non officielle de l'arborescence des sources d'Apache - devront disposer de - autoconf et libtool et - exécuter buildconf avant de passer à l'étape suivante, - ce qui n'est pas nécessaire pour les versions officielles).

    + de httpd en fonction de votre plateforme et de vos besoins personnels. + Le script configure, situé à la racine du répertoire de + la distribution, a été conçu à cet effet (Les développeurs qui téléchargent + une version non officielle de l'arborescence des sources de httpd + devront disposer de autoconf et libtool et + exécuter buildconf avant de passer à l'étape suivante, ce qui + n'est pas nécessaire pour les versions officielles).

    Pour configurer l'arborescence des sources avec les valeurs par défaut - pour toutes les options, entrez simplement ./configure. + pour toutes les options, saisissez ./configure. Pour modifier les valeurs des options, configure accepte toute une variété de variables et d'options de ligne de commande.

    -

    L'option la plus importante --prefix est le chemin - du répertoire d'installation d'Apache, car Apache doit être configuré - en fonction de ce chemin pour pouvoir fonctionner correctement. - Il est possible de définir plus finement le chemin d'installation des fichiers - à l'aide d'options +

    L'option la plus importante --prefix est le chemin du + répertoire d'installation de httpd, car httpd doit être + configuré en fonction de ce chemin pour pouvoir fonctionner correctement. + Il est possible de définir plus finement le chemin d'installation des + fichiers à l'aide d'options supplémentaires de configure.

    À ce niveau, vous pouvez aussi spécifier de quelles fonctionnalités vous - voulez disposer dans Apache en activant ou désactivant des modules. Apache est fourni avec un grand nombre de - modules inclus par défaut. Ils seront compilés en tant qu'objets partagés (DSOs) qui pourront être chargés - ou déchargés à l'exécution. Vous pouvez aussi choisir de compiler - les modules statiquement via l'option - --enable-module=static.

    -

    Des modules supplémentaires peuvent être activés à l'aide de l'option - --enable-module, où - module est le nom du module sans la chaîne - mod_ et où tout caractère de soulignement est converti - en tiret. D'une manière similaire, - vous pouvez désactiver des modules à l'aide de l'option - --disable-module. Faites très attention - en utilisant ces options, car configure n'est pas en - mesure de vous avertir si le module que vous avez spécifié n'existe pas; - il ignorera tout simplement l'option.

    + voulez disposer dans httpd en activant ou désactivant des modules. httpd est fourni avec un grand nombre de + modules inclus par défaut. Ils seront compilés en tant qu'objets partagés (DSOs) qui pourront être chargés ou + déchargés à l'exécution. Vous pouvez aussi choisir de compiler les modules + statiquement via l'option + --enable-module=static.

    Des modules + supplémentaires peuvent être activés à l'aide de l'option + --enable-module, où module est le nom du + module sans la chaîne mod_ et où tout caractère de soulignement + est converti en tiret. D'une manière similaire, vous pouvez désactiver des + modules à l'aide de l'option --disable-module. + Faites très attention en utilisant ces options, car + configure n'est pas en mesure de vous avertir si le + module que vous avez spécifié n'existe pas ; il ignorera l'option.

    En outre, vous devrez peut-être fournir au script configure des informations supplémentaires sur @@ -331,7 +275,7 @@

    Pour vous faire une idée des possibilités qui s'offrent à vous, voici - un exemple typique de compilation d'Apache avec le répertoire + un exemple typique de compilation de Apache httpd avec le répertoire d'installation /sw/pkg/apache, un compilateur et des drapeaux particuliers et les deux modules additionnels mod_ldap et mod_lua :

    @@ -355,9 +299,10 @@

    Construction

    Vous pouvez maintenant construire les différents éléments qui - composent le paquet Apache en lançant tout simplement la commande :

    + composent le paquet Apache httpd en lançant :

    -

    $ make

    +
    $ make
    +

    Vous devez être patient, car il faut plusieurs minutes pour compiler une configuration de base, et cette durée peut varier considérablement @@ -370,7 +315,8 @@ d'installation défini par PREFIX (voir plus haut l'option --prefix) en lançant:

    -

    $ make install

    +
    $ make install
    +

    Cette étape nécessite habituellement les privilèges de root, car PREFIX est en général un @@ -387,20 +333,22 @@ éditant les fichiers de configuration situés dans PREFIX/conf/.

    -

    $ vi PREFIX/conf/httpd.conf

    +
    $ vi PREFIX/conf/httpd.conf
    +
    -

    Consultez le manuel d'Apache situé dans +

    Consultez le manuel de httpd situé dans PREFIX/docs/manual/ ou - http://httpd.apache.org/docs/2.4/ pour la version la plus + https://httpd.apache.org/docs/2.4/ pour la version la plus récente de ce manuel et la liste complète des directives de configuration disponibles.

    top

    Test

    Vous pouvez maintenant démarrer votre - serveur HTTP Apache en lançant:

    + Serveur HTTP Apache en lançant :

    -

    $ PREFIX/bin/apachectl -k start

    +
    $ PREFIX/bin/apachectl -k start
    +

    Vous devriez alors pouvoir requérir votre premier document à l'aide de l'URL http://localhost/. La page web que vous @@ -409,24 +357,23 @@ qui est généralement PREFIX/htdocs/. Pour arrêter le serveur, lancez:

    -

    $ PREFIX/bin/apachectl -k stop

    +
    $ PREFIX/bin/apachectl -k stop
    +
    top

    Mise à jour

    La première étape d'une mise à jour consiste à lire l'annonce de la - sortie de la nouvelle version et le fichier CHANGES - dans la distribution des sources afin de déceler toutes les modifications - qui pourraient affecter votre site. Lors d'un changement majeur de version - (par exemple de 2.0 à 2.2 ou de 2.2 à 2.4), - il y aura certainement des différences importantes quant à la - configuration de la compilation et de l'exécution qui nécessiteront des - ajustements manuels. Tous les - modules devront aussi être mis à jour pour qu'ils s'adaptent aux - changements de l'API des modules.

    + sortie de la nouvelle version et le fichier CHANGES dans la + distribution des sources afin de déceler toutes les modifications qui + pourraient affecter votre site. Lors d'un changement majeur de version (par + exemple de 2.4 à 2.6), il y aura certainement des différences importantes + quant à la configuration de la compilation et de l'exécution qui + nécessiteront des ajustements manuels. Tous les modules devront aussi être + mis à jour pour qu'ils s'adaptent aux changements de l'API des modules.

    La mise à jour d'une version mineure à la suivante (par exemple, de - 2.2.55 à 2.2.57) est plus aisée. Le processus make install + 2.4.66 à 2.4.67) est plus aisée. Le processus make install n'écrasera aucun de vos documents existants, fichiers de log, ou fichiers de configuration. De plus, les développeurs font tout leur possible pour éviter les changements entraînant une @@ -468,31 +415,56 @@ config.nice ; ils seront alors ajoutés aux options de votre script configure original :

    -

    - $ ./config.nice --prefix=/home/test/apache --with-port=90 -

    +
    $ ./config.nice --prefix=/home/test/apache --with-port=90
    +
    top

    Paquets tiers

    -

    De nombreux tiers fournissent leur propre distribution du - serveur HTTP Apache à installer sur une plate-forme particulière. On - peut citer les différentes distributions Linux, divers - paquets tiers Windows, Mac OS X, Solaris et de nombreux autres.

    - -

    Notre license logicielle non seulement permet, mais aussi - encourage ce genre de redistribution. Cependant, ceci conduit à une - situation ou l'organisation de la configuration et les valeurs par - défaut de votre installation du serveur peuvent ne pas correspondre - à ce qui est écrit dans la documentation. Bien que fâcheuse, cette - situation n'est pas appelée à évoluer de sitôt.

    - -

    Une description - de ces distributions tierces est maintenue dans le wiki du - serveur HTTP, et doit en refléter l'état actuel. Vous devrez - cependant vous familiariser par vous-même avec la gestion du paquet - de votre plate-forme particulière et les procédures d'installation.

    +

    De nombreux systèmes d’exploitation fournissent des paquets Apache httpd + préconstruits. Ces paquets permettent de démarrer rapidement, mais ils + diffèrent souvent d’une construction à partir des sources quant à + l’organisation du fichier de configuration, aux modules intégrés et aux + chemins par défaut. La documentation sur ce site décrit la construction du + serveur à partir des sources ; si vous utilisez un paquet de plateforme, + consultez la documentation de votre distribution pour les détails + spécifiques à la plateforme.

    + +

    Quelques exemples courants :

    + +
    +
    Fedora / CentOS / Red Hat Enterprise Linux
    +
    +
    sudo dnf install httpd
    +sudo systemctl start httpd
    + +

    Voir la + documentation du projet Fedora pour l’organisation de la configuration + et des notes spécifiques à la plateforme.

    +
    + +
    Ubuntu / Debian
    +
    +
    sudo apt install apache2
    +sudo systemctl start apache2
    + +

    Voir documentation + d’Ubuntu pour l’organisation de la configuration + et des notes spécifiques à la plateforme.

    +
    +
    + +

    Notre licence logicielle non seulement permet, mais aussi encourage ce + genre de distribution tierce. Cependant, cela conduit à une situation ou + l'organisation de la configuration et les valeurs par défaut de votre + installation du serveur peuvent ne pas correspondre à ce qui est écrit dans + la documentation. Une description + de ces distributions tierces est disponible dans le wiki du serveur + HTTP.

    + +
    Votre plateforme favorite n’est pas mentionnée ici ? Voilà une bonne occasion pour + vous d’améliorer cette documentation.
    diff -Nru apache2-2.4.68/docs/manual/logs.html.en apache2-2.4.69/docs/manual/logs.html.en --- apache2-2.4.68/docs/manual/logs.html.en 2026-05-31 13:57:20.000000000 +0000 +++ apache2-2.4.69/docs/manual/logs.html.en 2026-07-25 13:10:55.000000000 +0000 @@ -173,9 +173,8 @@

    Do this by specifying the name of the module in your LogLevel directive:

    -
    LogLevel info rewrite:trace5
    - - +
    LogLevel info rewrite:trace5
    +

    This sets the main LogLevel to info, but turns it up to trace5 for mod_rewrite.

    @@ -223,9 +222,9 @@

    A typical configuration for the access log might look as follows.

    -
    LogFormat "%h %l %u %t \"%r\" %>s %b" common
    -CustomLog logs/access_log common
    - +
    LogFormat "%h %l %u %t \"%r\" %>s %b" common
    +CustomLog "logs/access_log" common
    +

    This defines the nickname common and associates it with a particular log format string. The format @@ -363,9 +362,9 @@

    Another commonly used format string is called the Combined Log Format. It can be used as follows.

    -
    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"" combined
    -CustomLog log/access_log combined
    - +
    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"" combined
    +CustomLog "log/access_log" combined
    +

    This format is exactly the same as the Common Log Format, with the addition of two more fields. Each of the additional @@ -413,11 +412,11 @@ information. The last two CustomLog lines show how to mimic the effects of the ReferLog and AgentLog directives.

    -
    LogFormat "%h %l %u %t \"%r\" %>s %b" common
    -CustomLog logs/access_log common
    -CustomLog logs/referer_log "%{Referer}i -> %U"
    -CustomLog logs/agent_log "%{User-agent}i"
    - +
    LogFormat "%h %l %u %t \"%r\" %>s %b" common
    +CustomLog "logs/access_log" common
    +CustomLog "logs/referer_log" "%{Referer}i -> %U"
    +CustomLog "logs/agent_log" "%{User-agent}i"
    +

    This example also shows that it is not necessary to define a nickname with the LogFormat directive. Instead, @@ -437,31 +436,31 @@ include or exclude requests where the environment variable is set. Some examples:

    -
    # Mark requests from the loop-back interface
    +
    # Mark requests from the loop-back interface
     SetEnvIf Remote_Addr "127\.0\.0\.1" dontlog
     # Mark requests for the robots.txt file
     SetEnvIf Request_URI "^/robots\.txt$" dontlog
     # Log what remains
    -CustomLog logs/access_log common env=!dontlog
    - +CustomLog "logs/access_log" common env=!dontlog
    +

    As another example, consider logging requests from english-speakers to one log file, and non-english speakers to a different log file.

    -
    SetEnvIf Accept-Language "en" english
    -CustomLog logs/english_log common env=english
    -CustomLog logs/non_english_log common env=!english
    - +
    SetEnvIf Accept-Language "en" english
    +CustomLog "logs/english_log" common env=english
    +CustomLog "logs/non_english_log" common env=!english
    +

    In a caching scenario one would want to know about the efficiency of the cache. A very simple method to find this out would be:

    -
    SetEnv CACHE_MISS 1
    +
    SetEnv CACHE_MISS 1
     LogFormat "%h %l %u %t "%r " %>s %b %{CACHE_MISS}e" common-cache
    -CustomLog logs/access_log common-cache
    - +CustomLog "logs/access_log" common-cache
    +

    mod_cache will run before mod_env and, when successful, will deliver the @@ -471,9 +470,9 @@

    In addition to the env= syntax, LogFormat supports logging values conditional upon the HTTP response code:

    -
    LogFormat "%400,501{User-agent}i" browserlog
    +
    LogFormat "%400,501{User-agent}i" browserlog
     LogFormat "%!200,304,302{Referer}i" refererlog
    - +

    In the first example, the User-agent will be logged if the HTTP status code is 400 or 501. In other cases, a @@ -494,91 +493,99 @@

    Log Rotation

    -

    On even a moderately busy server, the quantity of - information stored in the log files is very large. The access - log file typically grows 1 MB or more per 10,000 requests. It - will consequently be necessary to periodically rotate the log - files by moving or deleting the existing logs. This cannot be - done while the server is running, because Apache httpd will continue - writing to the old log file as long as it holds the file open. - Instead, the server must be restarted after the log files are - moved or deleted so that it will open new log files.

    - -

    By using a graceful restart, the server can be - instructed to open new log files without losing any existing or - pending connections from clients. However, in order to - accomplish this, the server must continue to write to the old - log files while it finishes serving old requests. It is - therefore necessary to wait for some time after the restart - before doing any processing on the log files. A typical - scenario that simply rotates the logs and compresses the old - logs to save space is:

    - -

    - mv access_log access_log.old
    - mv error_log error_log.old
    - apachectl graceful
    - sleep 600
    - gzip access_log.old error_log.old -

    +

    On even a moderately busy server, log files grow quickly — + the access log typically grows 1 MB or more per 10,000 requests. + Without rotation, logs consume disk space indefinitely and become + unwieldy to analyze. You should set up automatic log rotation from + the start.

    + +

    Using rotatelogs (recommended)

    + + +

    The simplest approach is to use httpd's built-in + rotatelogs program via piped + logs. This rotates logs without requiring a server restart + and without any external tools. To rotate logs every 24 hours:

    + +
    CustomLog "|/usr/local/apache/bin/rotatelogs /var/log/httpd/access_log 86400" combined
    +ErrorLog  "|/usr/local/apache/bin/rotatelogs /var/log/httpd/error_log 86400"
    +
    + +

    To rotate when the log reaches a certain size (e.g., 100 MB):

    -

    Another way to perform log rotation is using piped logs as discussed in the next - section.

    +
    CustomLog "|/usr/local/apache/bin/rotatelogs /var/log/httpd/access_log 100M" combined
    +
    + +

    You can also use a time-based filename pattern with + strftime format strings:

    + +
    CustomLog "|/usr/local/apache/bin/rotatelogs /var/log/httpd/access_log.%Y-%m-%d 86400" combined
    +
    + +

    See rotatelogs for the full set of options, + including offset times, file count limits, and compression.

    + + +

    Using logrotate or system log management

    + + +

    Most Linux distributions include logrotate, which + can rotate, compress, and expire log files on a schedule. If your + distribution already ships an httpd logrotate configuration (check + /etc/logrotate.d/), it may already be handling rotation + for you.

    + +

    When using an external rotation tool like logrotate, + you need to signal httpd to reopen its log files after + the old ones are moved aside. The standard approach is a + graceful restart:

    + +
    /usr/sbin/apachectl graceful
    +
    + +

    Your logrotate configuration's postrotate script + should include this (or the equivalent + systemctl reload command). httpd continues writing to + the old file handle until it receives the signal, so any post-processing + of rotated files should allow a brief delay.

    + +
    top

    Piped Logs

    -

    Apache httpd is capable of writing error and access log - files through a pipe to another process, rather than directly - to a file. This capability dramatically increases the - flexibility of logging, without adding code to the main server. - In order to write logs to a pipe, simply replace the filename - with the pipe character "|", followed by the name - of the executable which should accept log entries on its - standard input. The server will start the piped-log process when - the server starts, and will restart it if it crashes while the - server is running. (This last feature is why we can refer to - this technique as "reliable piped logging".)

    - -

    Piped log processes are spawned by the parent Apache httpd - process, and inherit the userid of that process. This means - that piped log programs usually run as root. It is therefore - very important to keep the programs simple and secure.

    - -

    One important use of piped logs is to allow log rotation - without having to restart the server. The Apache HTTP Server - includes a simple program called rotatelogs - for this purpose. For example, to rotate the logs every 24 hours, you - can use:

    - -
    CustomLog "|/usr/local/apache/bin/rotatelogs /var/log/access_log 86400" common
    - - -

    Notice that quotes are used to enclose the entire command - that will be called for the pipe. Although these examples are - for the access log, the same technique can be used for the - error log.

    - -

    As with conditional logging, piped logs are a very powerful - tool, but they should not be used where a simpler solution like - off-line post-processing is available.

    - -

    By default the piped log process is spawned without invoking - a shell. Use "|$" instead of "|" - to spawn using a shell (usually with /bin/sh -c):

    - -
    # Invoke "rotatelogs" using a shell
    -CustomLog "|$/usr/local/apache/bin/rotatelogs   /var/log/access_log 86400" common
    - - -

    This was the default behavior for Apache 2.2. - Depending on the shell specifics this might lead to - an additional shell process for the lifetime of the logging - pipe program and signal handling problems during restart. - For compatibility reasons with Apache 2.2 the notation - "||" is also supported and equivalent to using - "|".

    +

    httpd can write error and access log files through a pipe to + another process, rather than directly to a file. To use a piped + log, replace the filename with the pipe character + "|", followed by the command that should receive + log entries on its standard input:

    + +
    CustomLog "|/usr/local/apache/bin/rotatelogs /var/log/httpd/access_log 86400" combined
    +
    + +

    httpd starts the piped-log process at server startup and + restarts it automatically if it crashes (this is sometimes called + "reliable piped logging"). The quotes enclose the entire piped + command — this syntax works for both + CustomLog and + ErrorLog.

    + +

    Piped log processes are spawned by the parent httpd process and + inherit its userid. This typically means they run as root, so keep + piped log programs simple and secure.

    + +

    By default the piped log process is spawned directly, without + invoking a shell. Use "|$" instead of + "|" to spawn via a shell (usually + /bin/sh -c):

    + +
    CustomLog "|$/usr/local/apache/bin/rotatelogs /var/log/httpd/access_log 86400" combined
    +
    + +

    The shell variant is occasionally needed if your piped command + uses shell features like globbing or variable expansion. For most + cases, the direct (non-shell) invocation is preferred.

    Windows note

    Note that on Windows, you may run into problems when running many piped @@ -625,9 +632,9 @@ later split the log into individual files. For example, consider the following directives.

    -
    LogFormat "%v %p %h %l %u %t \"%r\" %>s %b" commonvhost
    -CustomLog logs/access_log commonvhost
    - +
    LogFormat "%v %p %h %l %u %t \"%r\" %>s %b" commonvhost
    +CustomLog "logs/access_log" commonvhost
    +

    The %v is used to log the name of the virtual host that is serving the request. Then a program like split-logfile can be used to @@ -638,7 +645,7 @@

    Other Log Files

    -
    TéléchargementTéléchargez la dernière version depuis http://httpd.apache.org/download.cgi - Téléchargez la dernière version depuis https://httpd.apache.org/download.cgi +
    Extraction$ gzip -d httpd-NN.tar.gz
    - $ tar xvf httpd-NN.tar
    - $ cd httpd-NN
    $ tar xzf httpd-NN.tar.gz
    +$ cd httpd-NN
    +
    +

    Logging actual bytes sent and received

    @@ -682,6 +689,14 @@ More information is available in the mod_cgi documentation.

    +

    Configurable debug logging

    + + +

    The LogMessage + lets you create your own custom log messages to aid in debugging. +

    + +

    Available Languages:  en  | diff -Nru apache2-2.4.68/docs/manual/logs.html.fr.utf8 apache2-2.4.69/docs/manual/logs.html.fr.utf8 --- apache2-2.4.68/docs/manual/logs.html.fr.utf8 2026-05-31 13:57:20.000000000 +0000 +++ apache2-2.4.69/docs/manual/logs.html.fr.utf8 2026-07-01 15:26:27.000000000 +0000 @@ -83,7 +83,7 @@ certainement avoir accès à l'uid sous lequel le serveur est démarré, en l'occurrence habituellement root. N'accordez PAS aux utilisateurs l'accès en écriture au répertoire dans lequel les journaux sont stockés - sans savoir exactement quelles en seraient les conséquences ; voir le + sans savoir exactement quelles en seraient les conséquences ; voir le document conseils sur la sécurité pour plus de détails.

    @@ -180,8 +180,8 @@

    Pour ce faire, vous devez spécifier le nom du module dans votre directive LogLevel :

    -
    LogLevel info rewrite:trace5
    - +
    LogLevel info rewrite:trace5
    +

    Dans cet exemple, le niveau de journalisation général est défini à info, et à trace5 pour mod_rewrite.

    @@ -210,7 +210,8 @@ suivante consiste à analyser ces informations de façon à pouvoir en extraire des statistiques utiles. L'analyse de journaux en général est en dehors du sujet de ce document et ne fait pas vraiment partie intégrante - du travail du serveur web lui-même.

    + du travail du serveur web lui-même. +

    Différentes versions du démon Apache httpd utilisaient d'autres modules et directives pour contrôler la journalisation des accès, à l'instar de @@ -232,9 +233,9 @@

    Voici une configuration typique pour le journal des accès :

    -
    LogFormat "%h %l %u %t \"%r\" %>s %b" common
    -CustomLog logs/access_log common
    - +
    LogFormat "%h %l %u %t \"%r\" %>s %b" common
    +CustomLog "logs/access_log" common
    +

    Ici est définie l'identité common qui est ensuite associée à une chaîne de format de journalisation particulière. @@ -357,13 +358,14 @@

    200 (%>s)
    -
    C'est le code de statut que le serveur retourne au client. Cette +
    C'est le code de statut que le serveur retourne au client. Cette information est très importante car elle indique si la requête a fait - l'objet d'une réponse positive (codes commençant par 2), une redirection - (codes commençant par 3), une erreur due au client (codes commençant par - 4), ou une erreur due au serveur (codes commençant par 5). Vous - trouverez la liste complète des codes de statut possibles dans la - spécification HTTP (RFC 2616) (RFC2616 section 10).
    + l'objet d'une réponse positive (codes commençant par 2), une + redirection (codes commençant par 3), une erreur due au client (codes + commençant par 4), ou une erreur due au serveur (codes commençant + par 5). Vous trouverez la liste complète des codes de statut possibles + dans la spécification + HTTP (RFC 2616) (RFC2616 section 10).
    2326 (%b)
    @@ -382,9 +384,9 @@ "Combined Log Format" (Format de journalisation combiné). Il s'utilise comme suit :

    -
    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"" combined
    -CustomLog log/access_log combined
    - +
    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"" combined
    +CustomLog "log/access_log" combined
    +

    Ce format est identique au Common Log Format, avec deux champs supplémentaires. Chacun de ces deux champs utilise la directive @@ -433,11 +435,11 @@ comment simuler les effets des directives ReferLog et AgentLog.

    -
    LogFormat "%h %l %u %t \"%r\" %>s %b" common
    -CustomLog logs/access_log common
    -CustomLog logs/referer_log "%{Referer}i -> %U"
    -CustomLog logs/agent_log "%{User-agent}i"
    - +
    LogFormat "%h %l %u %t \"%r\" %>s %b" common
    +CustomLog "logs/access_log" common
    +CustomLog "logs/referer_log" "%{Referer}i -> %U"
    +CustomLog "logs/agent_log" "%{User-agent}i"
    +

    Cet exemple montre aussi qu'il n'est pas obligatoire d'associer une chaîne de format à un alias au moyen de la directive @@ -462,31 +464,31 @@ la variable d'environnement est définie. Quelques exemples :

    -
    # Marque les requêtes en provenance de l'interface loop-back
    +
    # Marque les requêtes en provenance de l'interface loop-back
     SetEnvIf Remote_Addr "127\.0\.0\.1" dontlog
     # Marque les requêtes pour le fichier robots.txt
     SetEnvIf Request_URI "^/robots\.txt$" dontlog
     # Journalise toutes les autres requêtes
    -CustomLog logs/access_log common env=!dontlog
    - +CustomLog "logs/access_log" common env=!dontlog
    +

    Autre exemple, imaginons l'enregistrement des requêtes en provenance d'utilisateurs de langue anglaise dans un journal, et celles des autres utilisateurs dans un autre journal.

    -
            SetEnvIf Accept-Language "en" english
    -        CustomLog logs/english_log common env=english
    -        CustomLog logs/non_english_log common env=!english
    - +
    SetEnvIf Accept-Language "en" english
    +CustomLog "logs/english_log" common env=english
    +CustomLog "logs/non_english_log" common env=!english
    +

    Dans le contexte d'une mise en cache, il peut être intéressant de connaître l'efficacité du cache. Pour y parvenir, on pourrait utiliser cette méthode simple :

    -
    SetEnv CACHE_MISS 1
    +
    SetEnv CACHE_MISS 1
     LogFormat "%h %l %u %t "%r " %>s %b %{CACHE_MISS}e" common-cache
    -CustomLog logs/access_log common-cache
    - +CustomLog "logs/access_log" common-cache
    +

    mod_cache va s'exécuter avant mod_env, et si son action est couronnée de @@ -499,9 +501,9 @@ valeurs de journalisation conditionnelles basées sur le code de la réponse HTTP :

    -
    LogFormat "%400,501{User-agent}i" browserlog
    +
    LogFormat "%400,501{User-agent}i" browserlog
     LogFormat "%!200,304,302{Referer}i" refererlog
    - +

    Dans le premier exemple, le User-agent sera enregistré si le code d'état HTTP est 400 ou 501. Dans le cas @@ -523,106 +525,105 @@

    Rotation des journaux

    -

    Même dans le cas d'un serveur modérément sollicité, la quantité - d'informations stockées dans les fichiers journaux est très importante. - Le fichier journal des accès grossit en général d'1 Mo ou plus toutes - les 10000 requêtes. Il est par conséquent nécessaire d'effectuer - périodiquement la rotation des journaux en déplaçant ou supprimant les - fichiers correspondants. On ne peut pas le faire pendant que le serveur - est en cours d'exécution, car Apache httpd va continuer à écrire dans l'ancien - fichier journal aussi longtemps qu'il le maintiendra ouvert. - C'est pourquoi le serveur doit être - redémarré après le déplacement ou la - suppression des fichiers journaux de façon à ce qu'il en ouvre - de nouveaux.

    - -

    Avec un redémarrage graceful, on peut faire en sorte que le - serveur ouvre de nouveaux fichiers journaux sans perdre de connexions - existantes ou en cours avec les clients. Cependant, pour que ceci soit - possible, le serveur doit continuer à écrire dans les anciens fichiers - journaux pendant qu'il termine le traitement des requêtes en cours. - Il est donc nécessaire d'attendre un certain temps après le rédémarrage - avant d'effectuer tout traitement sur les fichiers journaux. Voici un - scénario typique dans lequel on effectue une simple rotation des - journaux en compressant les anciens fichiers correspondants afin - de gagner de l'espace disque :

    +

    Même sur un serveur modérément sollicité, les fichiers journaux + grossissent rapidement — le journal des accès croît à peu près de 1 Mo ou + plus toutes les 10000 requêtes. Sans rotation, les journaux consomment de + plus en plus d’espace disque et deviennent difficiles à analyser. Il est + donc recommandé de configurer une rotation automatique des journaux dès le + départ.

    -

    - mv access_log access_log.old
    - mv error_log error_log.old
    - apachectl graceful
    - sleep 600
    - gzip access_log.old error_log.old -

    +

    Utilisation de rotatelogs (recommandé)

    + -

    La section suivante présente une autre méthode de rotation des journaux - qui consiste à utiliser les - journaux redirigés.

    -
    top
    -
    -

    Journaux redirigés

    +

    L’approche la plus simple consiste à utiliser le programme + rotatelogs intégré à httpd en utilisant la redirection des journaux. Ce programme permet une + rotation des journaux sans avoir à redémarrer le serveur et sans outil + externe. Pour une rotation des journaux toutes les 24 heures :

    + +
    CustomLog "|/usr/local/apache/bin/rotatelogs /var/log/httpd/access_log 86400" combined
    +ErrorLog  "|/usr/local/apache/bin/rotatelogs /var/log/httpd/error_log 86400"
    +
    + +

    Pour une rotation lorsque la taille du journal atteint une certaine + valeur (par exemple 100 Mo) :

    + +
    CustomLog "|/usr/local/apache/bin/rotatelogs /var/log/httpd/access_log 100M" combined
    +
    + +

    Vous pouvez aussi utiliser un motif de nom de fichier avec horodatage + sous forme d’une chaîne au format strftime :

    + +
    CustomLog "|/usr/local/apache/bin/rotatelogs /var/log/httpd/access_log.%Y-%m-%d 86400" combined
    +
    + +

    Voir rotatelogs pour une description complète de ses + options, en particulier les temps de décalage, les limitations de nombre de + fichiers et la compression.

    -

    Nous avons vu que le démon httpd écrivait les informations de - journalisation des erreurs et des accès dans un fichier journal ; - il peut aussi - rediriger ces informations vers un autre processus par l'intermédiaire d'un - tube de communication (pipe). Cette fonctionnalité améliore - considérablement la souplesse de la journalisation, sans ajouter de code - au serveur principal. Pour rediriger les informations de journalisation - vers un tube de communication, remplacez simplement le nom de fichier - journal par - le caractère pipe "|", suivi du nom de l'exécutable qui va - recueillir les entrées de journal sur son entrée - standard. Le serveur va - lancer le processus de redirection des journaux au moment du démarrage du - serveur, et le relancera s'il cesse de fonctionner - pendant l'exécution du serveur. - (Nous dénommons cette technique "journalisation - redirigée fiable" grâce à cette dernière fonctionnalité.)

    - -

    Les processus de journalisation redirigée sont lancés par le processus - httpd parent, et héritent de l'UID de ce dernier. Cela signifie que les - programmes de journalisation dirigée s'exécutent généralement en tant que - root. Il est donc très important que ces programmes soient simples et - sécurisés.

    - -

    Un des grands avantages de la journalisation redirigée est la possibilité - d'effectuer la rotation des journaux sans avoir à redémarrer le serveur. Pour - accomplir cette tâche, le serveur HTTP Apache fournit un programme simple - appelé rotatelogs. Par exemple, pour une rotation des - journaux toutes les 24 heures, ajoutez ces lignes :

    - -
    CustomLog "|/usr/local/apache/bin/rotatelogs /var/log/access_log 86400" common
    - - -

    Notez que l'ensemble de la commande qui sera appelée par le tube de - communication a été placée entre guillemets. Bien que cet exemple - concerne le journal des accès, la même technique peut être utilisée - pour le journal des erreurs.

    - -

    Comme la journalisation conditionnelle, la journalisation redirigée est - un outil très puissant, mais si elle existe, il est préférable d'utiliser - une solution plus simple comme le traitement à posteriori hors ligne.

    - - -

    Par défaut, le processus de redirection du journal est lancé sans - invoquer un shell. Pour invoquer un shell, utilisez "|$" - au lieu de "|" (en général avec /bin/sh -c) - :

    - -
    # Invocation de "rotatelogs" en utilisant un shell
    -CustomLog "|$/usr/local/apache/bin/rotatelogs   /var/log/access_log 86400" common
    +

    Utilisation de logrotate ou de la gestion des journaux par le + système

    + +

    La plupart des distributions de Linux fournissent le programme + logrotate qui effectue une rotation, une compression et une + expiration des fichiers journaux selon une planification. Si votre + distribution comporte déjà une configuration de logrotate pour httpd + (examinez /etc/logrotate.d/), elle gère peut-être déjà la + rotation pour vous.

    + +

    Lorsqu’on utilise un outil de rotation externe comme + logrotate, il faut faire en sorte que httpd réouvre ses + fichiers journaux quand les anciens ont été mis de côté. Pour ce faire, + l’approche standard est un redémarrage graceful :

    + +
    /usr/sbin/apachectl graceful
    +
    + +

    Votre script postrotate dans la configuration de logrotate + doit contenir cette dernière commande (ou la commande équivalente + systemctl reload). Comme httpd continue d’écrire dans + l’ancien fichier jusqu’à ce qu’il reçoive le signal, tout post-traitement + des fichiers ayant subi une rotation doit prévoir un bref délai.

    + +
    top
    +
    +

    Journaux redirigés

    + -

    Il s'agissait du comportement par défaut sous Apache 2.2. Selon - les spécificités du shell, ceci peut générer un processus shell - supplémentaire pour toute la durée du programme de redirection du - journal, et induire des problèmes de gestion de signaux au cours du - redémarrage. La notation "||" est aussi supportée pour - des raisons de compatibilité avec Apache 2.2 et est équivalente à - "|".

    +

    httpd peut écrire dans les fichiers journaux des erreurs et des accès à + travers un tube (pipe) vers un autre processus, plutôt que d’écrire + directement dans un fichier. Pour mettre en œuvre cette redirection, + remplacez le nom du fichier par le caractère pipe "|", suivi de + la commande qui recevra les entrées du journal sur son entrée standard :

    + +
    CustomLog "|/usr/local/apache/bin/rotatelogs /var/log/httpd/access_log 86400" combined
    +
    + +

    httpd démarre le processus de redirection des journaux au démarrage du + serveur et le redémarre automatiquement s’il se plante (ce comportement est + parfois nommé « journalisation redirigée fiable »). L’ensemble de la + commande à partir du caractère pipe doit être entourée de guillemets — cette + syntaxe fonctionne pour les deux directives CustomLog et ErrorLog.

    + +

    Les processus de redirection des journaux sont lancés par le processus + httpd parent et héritent de son identifiant utilisateur. Cela signifie en + général qu’ils s’exécutent en tant que root ; faites donc en sorte que les + programmes de redirection des journaux restent simples et sécurisés.

    + +

    Par défaut, le processus de redirection des journaux est lancé + directement, sans passer par un shell. Vous pouvez utiliser + "|$" à la place de "|" pour effectuer ce lancement + via un shell (en général /bin/sh -c) :

    + +
    CustomLog "|$/usr/local/apache/bin/rotatelogs /var/log/httpd/access_log 86400" combined
    +
    + +

    La variante avec shell est parfois requise si votre commande redirigée + utilise des fonctionnalités du shell comme les caractères génériques ou le + développement de variable. Dans la plupart des cas, il est préférable + d’utiliser l’invocation directe (sans passer par un shell).

    Note à propos de la plateforme Windows

    Notez que sous Windows, la mémoire allouée au bureau (desktop @@ -670,9 +671,9 @@ journal, puis de séparer ultérieurement le journal en plusieurs journaux individuels. Considérons par exemple les directives suivantes :

    -
    LogFormat "%v %p %h %l %u %t \"%r\" %>s %b" commonvhost
    -CustomLog logs/access_log commonvhost
    - +
    LogFormat "%v %p %h %l %u %t \"%r\" %>s %b" commonvhost
    +CustomLog "logs/access_log" commonvhost
    +

    Le champ %v sert à enregistrer le nom de l'hôte virtuel qui traite la requête. Un programme tel que split-logfile peut ensuite être utilisé @@ -682,7 +683,7 @@

    Autres fichiers journaux

    - +

    Enregistrement du nombre réel d'octets envoyés et reçus

    @@ -727,6 +728,15 @@ serveur en production. Vous trouverez plus d'informations dans la documentation du module mod_cgi.

    + +

    Journalisation de débogage configurable

    + + +

    La directive LogMessage + vous permet de créer vos propres messages de journalisation + personnalisés pour faciliter vos opérations de débogage. +

    +
    diff -Nru apache2-2.4.68/docs/manual/misc/relevant_standards.html.en apache2-2.4.69/docs/manual/misc/relevant_standards.html.en --- apache2-2.4.68/docs/manual/misc/relevant_standards.html.en 2026-05-31 13:57:20.000000000 +0000 +++ apache2-2.4.69/docs/manual/misc/relevant_standards.html.en 2026-06-08 12:25:13.000000000 +0000 @@ -28,178 +28,283 @@  ko 

    -

    This page documents all the relevant standards that the - Apache HTTP Server follows, along with brief descriptions.

    +

    This page documents the relevant standards that the + Apache HTTP Server implements or follows, along with brief + descriptions.

    In addition to the information listed below, the following resources should be consulted:

    -

    Notice

    -

    This document is not yet complete.

    -
    - -
    • HTTP Recommendations
    • -
    • HTML Recommendations
    • +
      top
      -

      HTTP Recommendations

      +

      HTTP

      Regardless of what modules are compiled and used, Apache as a - basic web server complies with the following IETF recommendations:

      + basic web server complies with the following IETF standards:

      +
      RFC 9110 + (Standards Track) - HTTP Semantics
      + +
      Defines the semantics shared by all versions of HTTP: + methods, status codes, header and trailer fields, content + negotiation, and message metadata. Obsoletes RFC 7231, 7232, + 7233, 7235, and 7694.
      + +
      RFC 9111 + (Standards Track) - HTTP Caching
      + +
      Defines HTTP caches and the associated header fields that + control cache behavior or indicate cacheable response messages. + Obsoletes RFC 7234.
      + +
      RFC 9112 + (Standards Track) - HTTP/1.1
      + +
      Defines the HTTP/1.1 message syntax and connection management. + Obsoletes RFC 7230.
      + +
      RFC 9113 + (Standards Track) - HTTP/2
      + +
      Defines an optimized expression of HTTP semantics using + binary framing and multiplexed streams over a single TCP + connection. Obsoletes RFC 7540 and 8740.
      + +
      RFC 9114 + (Standards Track) - HTTP/3
      + +
      Defines the mapping of HTTP semantics over QUIC, providing + similar features to HTTP/2 with reduced latency.
      +
      RFC 1945 - (Informational)
      + (Informational) - HTTP/1.0
    -
    The Hypertext Transfer Protocol (HTTP) is an application-level - protocol with the lightness and speed necessary for distributed, - collaborative, hypermedia information systems. This documents - HTTP/1.0.
    +
    The original HTTP/1.0 specification. Retained for historical + reference; httpd still accepts HTTP/1.0 requests.
    + -
    RFC 2616 - (Standards Track)
    +
    top
    +
    +

    URIs

    -
    The Hypertext Transfer Protocol (HTTP) is an - application-level protocol for distributed, collaborative, - hypermedia information systems. This documents HTTP/1.1.
    +
    +
    RFC 3986 + (Standards Track) - Uniform Resource Identifier (URI): Generic Syntax
    -
    RFC 2396 - (Standards Track)
    +
    The generic syntax and resolution rules for Uniform Resource + Identifiers. Obsoletes RFC 2396.
    -
    A Uniform Resource Identifier (URI) is a compact string of - characters for identifying an abstract or physical resource.
    +
    RFC 6570 + (Standards Track) - URI Template
    -
    RFC 4346 - (Standards Track)
    +
    Defines a compact sequence of characters for describing a + range of URIs through variable expansion.
    +
    + +
    top
    +
    +

    TLS/SSL

    + +

    The following standards apply when mod_ssl is + enabled:

    + +
    +
    RFC 8446 + (Standards Track) - TLS 1.3
    + +
    The current version of the Transport Layer Security protocol, + providing communications privacy over the Internet. Obsoletes + RFC 5246 (TLS 1.2 specification text).
    + +
    RFC 5246 + (Standards Track) - TLS 1.2
    + +
    The previous widely-deployed version of TLS. Still supported + by httpd for compatibility with older clients.
    + +
    RFC 6960 + (Standards Track) - OCSP
    + +
    The Online Certificate Status Protocol, used for checking + certificate revocation status in real time (OCSP stapling via + SSLStaplingCache).
    -
    The TLS protocol provides communications security over the - Internet. It provides encryption, and is designed to prevent - eavesdropping, tampering, and message forgery.
    +
    RFC 6066 + (Standards Track) - TLS Extensions
    + +
    Defines TLS extensions including Server Name Indication (SNI), + which httpd uses for name-based virtual hosting over TLS.
    top
    -

    HTML Recommendations

    +

    Authentication

    + +

    Concerning the different methods of authentication:

    + +
    +
    RFC 7617 + (Standards Track) - The 'Basic' HTTP Authentication Scheme
    + +
    HTTP Basic authentication, transmitting credentials as + user-id/password pairs encoded in Base64. Obsoletes RFC 2617 + (Basic auth portion).
    + +
    RFC 7616 + (Standards Track) - HTTP Digest Access Authentication
    + +
    HTTP Digest authentication, providing a challenge-response + mechanism that avoids sending the password in cleartext. + Obsoletes RFC 2617 (Digest auth portion).
    +
    -

    Regarding the Hypertext Markup Language, Apache complies with - the following IETF and W3C recommendations:

    +
    top
    +
    +

    Content Negotiation and Compression

    -
    RFC 2854 - (Informational)
    +
    RFC 9110 - Content Negotiation
    + +
    Proactive and reactive content negotiation, including the + Accept, Accept-Language, Accept-Encoding, and Accept-Charset + header fields.
    -
    This document summarizes the history of HTML development, - and defines the "text/html" MIME type by pointing to the relevant - W3C recommendations.
    +
    RFC 7932 + (Informational) - Brotli Compressed Data Format
    + +
    Defines the Brotli compression algorithm, supported via + mod_brotli.
    +
    -
    HTML 4.01 Specification - (Errata) -
    +
    top
    +
    +

    Proxying and Forwarding

    -
    This specification defines the HyperText Markup Language (HTML), - the publishing language of the World Wide Web. This specification - defines HTML 4.01, which is a subversion of HTML 4.
    +

    When mod_proxy is enabled:

    -
    HTML 3.2 Reference - Specification
    +
    +
    RFC 7239 + (Standards Track) - Forwarded HTTP Extension
    -
    The HyperText Markup Language (HTML) is a simple markup language - used to create hypertext documents that are portable from one - platform to another. HTML documents are SGML documents.
    +
    Defines the Forwarded header field for conveying information + about the client-facing side of proxy servers.
    -
    XHTML 1.1 - - Module-based XHTML - (Errata) -
    +
    RFC 9209 + (Standards Track) - The Proxy-Status HTTP Response Header Field
    -
    This Recommendation defines a new XHTML document type - that is based upon the module framework and modules defined in - Modularization of XHTML.
    +
    Defines a mechanism for proxies to communicate the details + of intermediary handling to the client.
    -
    XHTML 1.0 The - Extensible HyperText Markup Language (Second Edition) - (Errata) -
    +
    RFC 9220 + (Standards Track) - Bootstrapping WebSockets with HTTP/2
    -
    This specification defines the Second Edition of XHTML 1.0, - a reformulation of HTML 4 as an XML 1.0 application, and three - DTDs corresponding to the ones defined by HTML 4.
    +
    Defines a mechanism for running the WebSocket protocol over + a single HTTP/2 stream.
    top
    -

    Authentication

    +

    WebSocket

    -

    Concerning the different methods of authentication, Apache - follows the following IETF recommendations:

    +
    +
    RFC 6455 + (Standards Track) - The WebSocket Protocol
    + +
    Defines the WebSocket protocol, enabling two-way + communication between a client and server over a single TCP + connection. Supported via mod_proxy_wstunnel.
    +
    + +
    top
    +
    +

    CGI

    -
    RFC 2617 - (Standards Track)
    +
    RFC 3875 + (Informational) - The Common Gateway Interface (CGI) Version 1.1
    + +
    Defines the Common Gateway Interface for running external + programs on a web server. Implemented by + mod_cgi and mod_cgid.
    +
    + +
    top
    +
    +

    WebDAV

    -
    "HTTP/1.0", includes the specification for a Basic - Access Authentication scheme.
    +

    When mod_dav is enabled:

    +
    +
    RFC 4918 + (Standards Track) - HTTP Extensions for Web Distributed Authoring + and Versioning (WebDAV)
    + +
    Defines extensions to HTTP for distributed authoring + operations. Obsoletes RFC 2518.
    + +
    RFC 3744 + (Standards Track) - Web Distributed Authoring and Versioning (WebDAV) + Access Control Protocol
    + +
    Defines access control extensions to WebDAV.
    top

    Language/Country Codes

    -

    The following links document ISO and other language and country - code information:

    +

    Language and country codes used in content negotiation:

    -
    ISO 639-2
    +
    ISO 639-2
    ISO 639 provides two sets of language codes, one as a two-letter code set (639-1) and another as a three-letter code set (this part of ISO 639) for the representation of names of languages.
    -
    +
    ISO 3166-1
    -
    These pages document the country names (official short names - in English) in alphabetical order as given in ISO 3166-1 and the - corresponding ISO 3166-1-alpha-2 code elements.
    - -
    BCP 47 - (Best Current Practice), - RFC 3066
    - -
    This document describes a language tag for use in cases where - it is desired to indicate the language used in an information - object, how to register values for use in this language tag, - and a construct for matching such language tags.
    +
    Country names and corresponding alpha-2 and alpha-3 code + elements.
    + +
    RFC 5646 + (Best Current Practice) - Tags for Identifying Languages
    + +
    Describes the structure and registry of language tags used in + HTTP content negotiation (Accept-Language, Content-Language). + Obsoletes RFC 3066.
    RFC 3282 (Standards Track)
    -
    This document defines a "Content-language:" header, for use in - cases where one desires to indicate the language of something that - has RFC 822-like headers, like MIME body parts or Web documents, - and an "Accept-Language:" header for use in cases where one wishes - to indicate one's preferences with regard to language.
    +
    Defines the Content-Language and Accept-Language header fields + for indicating language preferences in HTTP messages.
    diff -Nru apache2-2.4.68/docs/manual/misc/relevant_standards.html.fr.utf8 apache2-2.4.69/docs/manual/misc/relevant_standards.html.fr.utf8 --- apache2-2.4.68/docs/manual/misc/relevant_standards.html.fr.utf8 2026-06-05 12:03:44.000000000 +0000 +++ apache2-2.4.69/docs/manual/misc/relevant_standards.html.fr.utf8 2026-06-15 19:22:23.000000000 +0000 @@ -28,151 +28,255 @@  ko 

    -

    Cette page documente tous les standards applicables que suit le - serveur HTTP Apache, accompagnés d'une brève description.

    +

    Cette page documente les standards applicables que le serveur HTTP Apache + implémente ou suit, avec une brève description.

    Pour compléter les informations fournies ci-dessous, vous pouvez consulter les ressources suivantes :

    -

    Avertissement

    -

    Ce document n'est pas encore finalisé.

    -
    - -
    • Recommandations HTTP
    • -
    • Recommandations HTML
    • -
    • Authentification
    • +
      top
      -

      Recommandations HTTP

      +

      HTTP

      Sans tenir compte des modules compilés et utilisés, Apache en - tant que serveur web de base respecte les recommandations IETF + tant que serveur web de base respecte les normes IETF suivantes :

      +
      RFC 9110 + (Série de standards) — Sémantique de HTTP
      + +
      Cette norme définit la sémantique partagée par toutes les versions de + HTTP : méthodes, codes d’état, champs d’en-tête et de fin de page, + négociation sur le contenu et métadonnées des messages. Elle rend + obsolètes les RFC 7231, 7232, 7233, 7235 et 7694.
      + +
      RFC 9111 + (Série de standards) — Mise en cache HTTP
      + +
      Cette norme définit les caches HTTP et les champs d’en-tête HTTP + associés qui contrôlent le comportement du cache ou indiquent des réponses + pouvant être mises en cache. Elle rend obsolète la RFC 7234.
      + +
      RFC 9112 + (Série de standards) — HTTP/1.1
      + +
      Cette norme définit la syntaxe des messages et la gestion des + connexions avec HTTP/1.1. Elle rend obsolète la RFC 7230.
      + +
      RFC 9113 + (Série de standards) — HTTP/2
      + +
      Cette norme définit et optimise l’expression de la sémantique de HTTP + en utilisant le cadrage binaire (binary framing) et des flux multiplexés + sur une seule connexion TCP. Elle rend obsolètes les RFC 7540 et 8740.
      + +
      RFC 9114 + (Série de standards) — HTTP/3
      + +
      Cette norme définit le mappage de la sémantique HTTP sur QUIC, tout en + fournissant des fonctionnalités similaires à HTTP/2 avec une latence + réduite.
      +
      RFC 1945 - (Informations)
      + (Informations) — HTTP/1.0 -
      Le Protocole de Transfert Hypertexte (Hypertext Transfer - Protocol - HTTP) est un protocole de niveau application avec la - clarté et la vitesse nécessaires pour les systèmes d'informations - distribués, collaboratifs et hypermédia. Cette RFC documente le - protocole HTTP/1.0.
      +
      La spécification HTTP/1.0 originale. Conservée à titre de référence + historique ; httpd accepte encore les requêtes HTTP/1.0.
      +
      -
      RFC 2616 - (Série de standards)
      +
      top
      +
      +

      URIs

      -
      Le Protocole de Transfert Hypertexte (Hypertext Transfer - Protocol - HTTP) est un protocole de niveau application pour les - systèmes d'informations distribués, collaboratifs et hypermédia. - Cette RFC documente le protocole HTTP/1.1.
      +
      +
      RFC 3986 + (Série de standards) — Uniform Resource Identifier (URI): Syntaxe + générique
      -
      RFC 2396 - (Série de standards)
      +
      La syntaxe générique et les règles de résolution des URIs. Cette norme + rend obsolète la RFC 2396.
      -
      Un Identificateur de Ressource Uniforme (Uniform Resource - Identifier - URI) est une chaîne de caractères compacte permettant - d'identifier une ressource physique ou abstraite.
      +
      RFC 6570 + (Série de standards) — Modèle d’URI
      -
      RFC 4346 - (Série de standards)
      +
      Cette norme définit une séquence compacte de caractères pour décrire + une gamme d’URIs à l’aide d’un développement de variable.
      +
      + +
      top
      +
      +

      TLS/SSL

      + +

      Les normes suivantes s’appliquent lorsque mod_ssl est + activé :

      + +
      +
      RFC 8446 + (Série de standards) — TLS 1.3
      + +
      La version actuelle du protocole TLS (Transport Layer Security) + assurant la confidentialité des communications sur l’Internet. Cette norme + rend obsolète la RFC 5246 (texte de la spécification de TLS 1.2).
      + +
      RFC 5246 + (Série de standards) — TLS 1.2
      + +
      La version précédente de TLS largement déployée. Encore prise en + charge par httpd pour une compatibilité avec les clients anciens.
      + +
      RFC 6960 + (Série de standards) — OCSP
      + +
      Le protocole OCSP (Online Certificate Status Protocol) utilisé pour + vérifier l’état de révocation des certificats en temps réel (l’agrafage + OCSP - OCSP stapling - à l’aide de la directive SSLStaplingCache).
      + +
      RFC 6066 + (Série de standards) — TLS Extensions
      -
      Le protocole TLS permet l'utilisation de communications - sécurisées sur l'Internet. Il fournit le chiffrement, et a été - conçu pour se prémunir contre l'interception, la modification et - la falsification de messages.
      +
      Cette norme définit les extensions de TLS, dont SNI (Server Name + Indication) qu’utilise httpd pour les serveurs virtuels à base de nom sur + TLS.
      top
      -

      Recommandations HTML

      +

      Authentication

      -

      En ce qui concerne le langage HTML, Apache respecte les - recommandations IETF et W3C suivantes :

      +

      À propos des différentes méthodes d’authentification :

      + +
      +
      RFC 7617 + (Série de standards) — Le schéma d’authentification « basique » de HTTP
      + +
      L’authentification basique de HTTP qui transmet les données + d’authentification sous la forme de paires identifiant utilisateur/mot de + passe encodées en Base64. Cette norme rend obsolète la RFC 2617 (la + portion basique de auth).
      + +
      RFC 7616 + (Série de standards) — L’authentification de l’accès par condensés de HTTP
      + +
      L’authentification par condensés de HTTP qui fournit un mécanisme de + question-réponse qui évite de transmettre le mot de passe en clair. Cette + norme rend obsolète la RFC 2617 (portion condensé de auth).
      +
      + +
      top
      +
      +

      Négociation de contenu et compression

      -
      RFC 2854 - (Informations)
      +
      RFC 9110 - Négociation de contenu
      -
      Ce document résume l'historique du développement de HTML, et - définit le type MIME "text/html" en pointant les recommandations - W3C correspondantes.
      +
      La négociation de contenu proactive et réactive à l’aide des champs + d’en-tête Accept, Accept-Language, Accept-Encoding et Accept-Charset.
      -
      Spécification HTML - 4.01 - (Corrections - Erreurs) -
      +
      RFC 7932 + (Informations) — Brotli Compressed Data Format
      -
      Cette spécification définit le Langage à Balises HyperTexte - (HyperText Markup Language - HTML), le langage de publication du - World Wide Web. Elle définit HTML 4.01, qui est une sous-version - de HTML 4.
      +
      Cette norme définit l’algorithme de compression Brotli pris en charge + par le module mod_brotli.
      +
      + +
      top
      +
      +

      Mandat et redirection

      -
      Référence HTML - 3.2
      +

      Quand mod_proxy est activé :

      -
      Le langage à Balises HyperTexte (HyperText Markup Language - - HTML) est un langage à balises simple permettant de créer des - documents hypertextes portables. Les documents HTML sont aussi des - documents SGML.
      +
      +
      RFC 7239 + (Série de standards) — L’extension HTTP Forwarded
      + +
      Cette norme définit le champ d’en-tête Forwarded pour le transport des + informations à propos de la face côté client des serveurs mandataires.
      -
      XHTML 1.1 - - XHTML sous forme de modules - (Corrections - d'erreurs) -
      +
      RFC 9209 + (Série de standards) — Le champ d’en-tête de réponse HTTP Proxy-Status
      -
      Cette recommandation définit un nouveau type de document XHTML - basé sur le cadre de développement des modules et les modules - définis dans la modularisation de XHTML.
      +
      Cette norme définit un mécanisme permettant aux mandataires de + communiquer les détails de la gestion intermédiaire au client.
      -
      XHTML 1.0, le Langage à - Balises Hypertexte Extensible (Extensible HyperText Markup - Language) - Seconde édition - (Corrections - d'erreurs) -
      +
      RFC 9220 + (Série de standards) — « Bootstrapping » des WebSockets avec HTTP/2
      -
      Cette spécification définit la seconde édition de XHTML 1.0, - une reformulation de HTML 4 en tant qu'application XML 1.0, ainsi - que trois DTDs correspondant à celles définies par HTML 4.
      +
      Cette norme définit un mécanisme permettant d’utiliser le protocole + WebSocket sur un seul flux HTTP/2.
      top
      -

      Authentification

      +

      WebSocket

      -

      En ce qui concerne les différentes méthodes d'authentification, - Apache respecte les recommandations IETF suivantes :

      +
      +
      RFC 6455 + (Série de standards) — The WebSocket Protocol
      + +
      Cette norme définit le protocole WebSocket qui permet une + communication bidirectionnelle entre un client et un serveur sur une seule + connexion TCP. Il est pris en charge par le module + mod_proxy_wstunnel.
      +
      + +
      top
      +
      +

      CGI

      -
      RFC 2617 - (Série de standards)
      +
      RFC 3875 + (Informations) — CGI (Common Gateway Interface) Version 1.1
      -
      "HTTP/1.0", y compris la spécification d'un protocole - d'authentification et de contrôle d'accès basique.
      +
      Cette norme définit l’interface CGI qui permet d’exécuter des + programmes externes sur un serveur web. Implémenté par les modules + mod_cgi et mod_cgid.
      +
      + +
      top
      +
      +

      WebDAV

      + +

      Quand mod_dav est activé :

      + +
      +
      RFC 4918 + (Série de standards) — Extensions HTTP pour WebDav (Web Distributed + Authoring and Versioning)
      + +
      Cette norme définit des extensions à HTTP pour les opérations de + création distribuée. Elle rend obsolète la RFC 2518.
      + +
      RFC 3744 + (Série de standards) — Protocole de contrôle d’accès pour WebDAV (Web + Distributed Authoring and Versioning)
      + +
      Cette norme définit des extensions de contrôle d’accès pour WebDAV.
      @@ -181,11 +285,11 @@

      Codes de langages et de pays

      -

      Les liens suivants fournissent des informations à propos des - codes de langages et de pays aux normes ISO ou autres :

      +

      Les codes de langages et de pays utilisés dans la négociation de contenu + :

      -
      ISO 639-2
      +
      ISO 639-2
      ISO 639 fournit deux jeux de codes de langages permettant de représenter les noms des langues ; le premier est @@ -193,31 +297,25 @@ présenté dans le lien ci-dessus), est un jeu de codes sur trois lettres (639-2).
      -
      +
      ISO 3166-1
      -
      Ce document présente les noms de pays (les noms raccourcis - officiels en anglais) dans l'ordre alphabétique, tels qu'ils sont - présentés dans la norme ISO 3166-1 et les éléments de codes - correspondants de la norme ISO 3166-1-alpha-2.
      - -
      BCP 47 (Les - meilleurs pratiques courantes), RFC 3066
      - -
      Ce document décrit une balise de langue permettant de - spécifier la langue utilisée dans un objet contenant des - informations, la manière d'enregistrer des valeurs à utiliser dans - cette balise de langue, et une méthode pour comparer les balises - de langue de ce style.
      +
      Noms des pays et éléments de code correspondants à deux et trois + caractères.
      + +
      RFC 5646 + (Meilleure pratique actuelle) — Symboles pour identifier les langues
      + +
      Cette norme décrit la structure et l’enregistrement des symboles de + langue utilisés dans la négociation de contenu de HTTP (Accept-Language, + Content-Language). Elle rend obsolète la RFC 3066.
      RFC 3282 (Série de standards)
      -
      Ce document définit une en-tête "Content-language:" permettant - de spécifier la langue d'un élément possédant des en-têtes du - style RFC 822, comme les portions de corps MIME ou les documents - Web, et un en-tête "Accept-Language:" permettant de spécifier des - préférences en matière de langue.
      +
      Cette norme définit les champs d’en-tête Content-Language and + Accept-Language qui indiquent les préférences en matière de langue dans + les messages HTTP.
    diff -Nru apache2-2.4.68/docs/manual/misc/relevant_standards.html.ko.euc-kr apache2-2.4.69/docs/manual/misc/relevant_standards.html.ko.euc-kr --- apache2-2.4.68/docs/manual/misc/relevant_standards.html.ko.euc-kr 2026-05-31 13:57:20.000000000 +0000 +++ apache2-2.4.69/docs/manual/misc/relevant_standards.html.ko.euc-kr 2026-06-08 12:25:13.000000000 +0000 @@ -27,8 +27,6 @@  fr  |  ko 

    -
    ÀÌ ¹®¼­´Â ÃֽÅÆÇ ¹ø¿ªÀÌ ¾ƴմϴÙ. - Ãֱٿ¡ º¯°æµÈ ³»¿ëÀº ¿µ¾î ¹®¼­¸¦ Âü°íÇϼ¼¿ä.

    ÀÌ ¹®¼­¿¡´Â °£´ÜÇÑ ¼³¸í°ú ÇԲ² ¾ÆÆÄġ À¥¼­¹ö°¡ µû¸£´Â ¸ðµç °ü·Ã ǥÁØÀ» ¿­°ÅÇѴÙ.

    diff -Nru apache2-2.4.68/docs/manual/misc/security_tips.html.en apache2-2.4.69/docs/manual/misc/security_tips.html.en --- apache2-2.4.68/docs/manual/misc/security_tips.html.en 2026-05-31 13:57:20.000000000 +0000 +++ apache2-2.4.69/docs/manual/misc/security_tips.html.en 2026-09-29 11:33:23.000000000 +0000 @@ -91,8 +91,10 @@