Почему мои заголовки HTTP применяются только к поддокументам? - PullRequest
0 голосов
/ 30 марта 2020

Я создал файл htaccess для своего многосайтового веб-сайта Wordpress, который содержит стандартные правила перезаписи, за которыми следует раздел mod_headers, с условными директивами FilesMatch.

Все заголовки http правильно применяются к поддокументам любого Страница WordPress (например, png, jpg, js, css et c), но никогда применяется к документу root. Другой чистый html сайт на том же хосте действительно получает заголовки правильно.

Например: https://www.somedomain.com/site.css возвращает:

    HTTP/2 200 OK
    content-type: text/css
    date: Mon, 30 Mar 2020 09:36:10 GMT
    server: Apache
    x-content-type-options: nosniff
    last-modified: Sun, 29 Mar 2020 12:55:43 GMT
    etag: "14546d-5a1fdda3e88c5-gzip"
    accept-ranges: bytes
    cache-control: must-revalidate, public, max-age=31536000
    expires: Sat, 20 Mar 2021 09:36:10 GMT
    vary: Accept-Encoding,User-Agent
    content-encoding: gzip

, но https://www.somedomain.com/ возвращает только:

HTTP/1.1 200 Connection established
content-type: text/html; charset=UTF-8
date: Mon, 30 Mar 2020 09:36:09 GMT
server: Apache
x-powered-by: PHP/7.3.16
cache-control: no-cache
content-encoding: gzip

Код доступа ниже:

#BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
    RewriteBase /
    RewriteRule ^index\.php$ - [L]

#add a trailing slash to /wp-admin
    RewriteRule ^wp-admin$ wp-admin/ [R=301,L]

    RewriteCond %{REQUEST_FILENAME} -f [OR]
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule ^ - [L]
    RewriteRule ^(wp-(content|admin|includes).*) web/$1 [L]
    RewriteRule ^(.*\.php)$ web/$1 [L]
    RewriteRule . index.php [L]
</IfModule>
#END WordPress

#BEGIN Headers
<IfModule mod_headers.c>
#Remove server headers
    Header always unset X-Redirect-By
    Header always unset X-Powered-By
    Header always unset Location
#Set server headers
    Header always set X-Content-Type-Options nosniff
    Header append Vary "Accept-Encoding, User-Agent"
#Set Cache-Control
    <FilesMatch "\.(ico|jpe?g|png|gif|svg|webp|swf|css|mp4)$">
        Header set Cache-Control "must-revalidate, public, max-age=31536000"
    </FilesMatch>
    <FilesMatch "\.(js)$">
        Header set Cache-Control "private"
    </FilesMatch>
    <FilesMatch "\.(php|x?html?|pdf|xlsx?|docx?|pptx?|zipx?)$">
        Header set Cache-Control "private, must-revalidate"
    </FilesMatch>
#PHP/HTML specific headers
    <FilesMatch "\.(php|x?html?)$">
        Header always set X-Frame-Options "SAMEORIGIN"
        Header always set X-DNS-Prefetch-Control "on"
        Header always set Connection "keep-alive"
        Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
        Header always set Referrer-Policy "strict-origin-when-cross-origin"
        Header always set X-Clacks-Overhead "GNU Terry Pratchett"
    </FilesMatch>
 </IfModule>
#END Headers
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...