Eu estava tentando fazer com que meu Apache Server (v2.4.7) respondesse a um cabeçalho If-Modified-Since enviado por navegadores e spiders como o Google. Eu encontrei isso em uma recomendação no Google Webmaster. Eu nunca soube disso até ontem, nem sabia que o Apache não estava respondendo a esse cabeçalho e, portanto, não enviando de volta um cabeçalho Last-Modified para o navegador ou spider.
Eu também notei que cada solicitação do meu servidor estava enviando de volta o pragma: nocache
Depois de ler e mexer muito, eu consegui trabalhar no meu site principal.
Isso foi somente depois de descobrir que uma configuração em php.ini para php-fpm chamava session.cache_limiter que era configurada para nocache, então eu a configurei para session.cache_limiter = public
Reinicializou o servidor e voila, esse site estava fornecendo os cabeçalhos corretos e passou em vários testadores de cabeçalho If-Modified-Since.
Agora, o problema .... em todos os meus outros 15 sites wordpress, eles ainda estão enviando o cabeçalho pragma: nocache e nenhum dos outros cabeçalhos de cache que estão sendo exibidos no site principal.
Todos os sites têm exatamente a mesma configuração em seus arquivos apache .conf
Todos os sites têm exatamente a mesma configuração em seus .htaccess
Todos os sites estão executando o Wordpress
Eu tentei nos outros sites definir e desmarcar cabeçalhos nos arquivos .conf do apache, mas eles estão simplesmente sendo ignorados.
Para a vida de mim estou faltando alguma coisa e eu não sei onde ou o quê, estão passando por arquivos .conf e .htaccess e php.ini durante todo o dia.
Algo está interferindo nos cabeçalhos e eu não sei o quê.
Estes são os meus módulos do Apache carregados, se isso ajudar
Loaded Modules:
core_module (static)
so_module (static)
watchdog_module (static)
http_module (static)
log_config_module (static)
logio_module (static)
version_module (static)
unixd_module (static)
access_compat_module (shared)
actions_module (shared)
alias_module (shared)
auth_basic_module (shared)
authn_core_module (shared)
authn_file_module (shared)
authz_core_module (shared)
authz_host_module (shared)
authz_user_module (shared)
autoindex_module (shared)
deflate_module (shared)
dir_module (shared)
env_module (shared)
evasive20_module (shared)
expires_module (shared)
fastcgi_module (shared)
filter_module (shared)
headers_module (shared)
mime_module (shared)
mpm_event_module (shared)
negotiation_module (shared)
pagespeed_module (shared)
rewrite_module (shared)
setenvif_module (shared)
socache_shmcb_module (shared)
spamhaus_module (shared)
ssl_module (shared)
status_module (shared)
e esta é a saída de -V
Server version: Apache/2.4.7 (Ubuntu)
Server built: Jan 14 2016 17:45:23
Server's Module Magic Number: 20120211:27
Server loaded: APR 1.5.1-dev, APR-UTIL 1.5.3
Compiled using: APR 1.5.1-dev, APR-UTIL 1.5.3
Architecture: 64-bit
Server MPM: event
threaded: yes (fixed thread count)
forked: yes (variable process count)
Server compiled with....
-D APR_HAS_SENDFILE
-D APR_HAS_MMAP
-D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
-D APR_USE_SYSVSEM_SERIALIZE
-D APR_USE_PTHREAD_SERIALIZE
-D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
-D APR_HAS_OTHER_CHILD
-D AP_HAVE_RELIABLE_PIPED_LOGS
-D DYNAMIC_MODULE_LIMIT=256
-D HTTPD_ROOT="/etc/apache2"
-D SUEXEC_BIN="/usr/lib/apache2/suexec"
-D DEFAULT_PIDLOG="/var/run/apache2.pid"
-D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
-D DEFAULT_ERRORLOG="logs/error_log"
-D AP_TYPES_CONFIG_FILE="mime.types"
-D SERVER_CONFIG_FILE="apache2.conf"
Estou realmente perplexo agora, mas ainda não desisti de esperar, esperando que alguém possa esclarecer o que pode estar interferindo / anulando os cabeçalhos enviados.
Para aumentar a minha confusão agora ... o site onde está enviando o cabeçalho Last-Modified está errado em todas as páginas
Última modificação: terça, 02 dez 2014 11:21:14 GMT
Se eu examinar recursos individuais dentro da página, eles terão a Última modificação correta
como meu style.css mostra Last-Modified: qui, 02 jun 2016 09:41:24 GMT
Por isso, está dando respostas Last-Modified, mas no nível superior, ou seja. a página em si tem uma data distante no passado.
No site onde ele não está enviando o cabeçalho Last-Modified, ele está, na verdade, enviando apenas recursos na página como css, jpg, etc, mas NÃO para a própria página.
Então .... 1 problema se transforma em 2.
Onde diabos isso está acontecendo e de onde está tirando essa data?
Este é um bug do Apache? Um bug do Wordpress?
Eu já passei por desabilitar plugins nos sites wordpress que não enviam o cabeçalho Last-Modified para a página, mas isso não tem efeito.
Eu ainda acho que isso está acontecendo dentro do Apache ou PHP em algum lugar.