Centos 6.8, Apache 2.2, estável por anos de repente mod_rewrite parece estar falhando

3

Eu tenho uma configuração estável há anos. De repente, estou recebendo arquivo não existe no log de erro do apache em itens que devem ser processados por mod_rewrite.

Ontem à noite eu fiz uma atualização do pacote no php / mysql (não no apache), mas eu reverti e ainda está tendo o problema. O .htaccess e a configuração do apache não foram tocados.

Ainda estou procurando por pistas, mas não tenho quase nada até agora.

Parece que tudo o que encontramos na nossa rede local (que é uma rede diferente daquela em que o servidor está hospedado) nunca tem um problema. Se eu acertar isso do meu telefone, eu estou vendo o problema algumas vezes.

Todos os caminhos do arquivo não existem são válidos para o mod_rewrite processar. Eu posso bater neles sem problema.

Um pouco perplexa e sem saber o que procurar em seguida.

Eu herdei essa configuração e tentei não tocá-la, mas aqui está o que temos para esse vhost.

RewriteEngine on
RewriteCond %{HTTP_HOST} !^www.domain.com
RewriteRule ^(.*)$ http://www.domain.com$1 [R=301,L]

Na pasta pública existe também um .htaccess com muita config. Aqui está um pedaço relevante:

RewriteEngine On
RewriteBase /

#Correct some bad external links
RewriteRule ^lh$ / [L,R=301]

<FilesMatch "^cart$">
                ForceType application/x-httpd-php
</FilesMatch>

Transformei o mod_rewrite logando em 9 e correspondendo a uma das solicitações no log de erros do apache.

init rewrite engine with requested uri /cart/ViewItem/6054668
applying pattern '^(.*)$' to uri '/cart/ViewItem/6054668'
RewriteCond: input='www.domain.com' pattern='!^www.domain.com' => not-matched
pass through /cart/ViewItem/6054668
[perdir /home/user/domains/domain.com/public_html/] add path info postfix: /home/user/domains/domain.com/public_html/cart -> /home/user/domains/domain.com/public_html/cart/ViewItem/6054668
[perdir /home/user/domains/domain.com/public_html/] strip per-dir prefix: /home/user/domains/domain.com/public_html/cart/ViewItem/6054668 -> cart/ViewItem/6054668
[perdir /home/user/domains/domain.com/public_html/] applying pattern '^lh$' to uri 'cart/ViewItem/6054668'
[perdir /home/user/domains/domain.com/public_html/] pass through /home/user/domains/domain.com/public_html/cart
    
por mkaatman 30.11.2016 / 19:30

1 resposta

1

Veja o que eu fiz para corrigir isso.

  1. Eu abandonei todas as coisas do FilesMatch / ForceType.
  2. renomeei todos os arquivos que não tinham extensões para .php
  3. Eu alterei o .htaccess para incluir duas regras por arquivo (que provavelmente podem ser combinadas em uma)

Options +FollowSymLinks

RewriteEngine On

RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f

RewriteRule ^cart$ ./cart.php
RewriteRule ^cart/(.*)$ ./cart.php'

O outro problema que comecei a ter foi a extensão ssh2 pecl estava causando segfaults. Eu atualizei e consertei os segfaults, mas não era mais funcional. Eu substituí tudo com phpseclib. Eu ainda estou vendo alguns pecl zip.so segfaults. Eu ainda não entendo o que causou tudo isso, mas eu não atualizaria para o PHP 5.6.28 no centos 6.8 agora. Este é agora um problema conhecido: link

    
por 01.12.2016 / 08:31