CentOS 6.8,Apache 2.2,稳定多年,突然间mod_rewrite似乎失败了

我有一个稳定多年的设置。 突然间,我得到的文件不应该存在于应该由mod_rewrite处理的项目上的Apache错误日志。

昨天晚上,我做了一个PHP / MySQL(不是Apache)的包更新,但我回滚了,它仍然有问题。 .htaccess和apacheconfiguration没有被触及。

我仍然在寻找线索,但到目前为止我几乎没有任何线索。

看起来像我们从本地networking(这是一个不同的服务器托pipe的networking)内的任何东西都没有问题。 如果我从我的手机打开了无线,我有时看到问题。

所有的文件不存在的path是有效的mod_rewrite处理。 我可以打他们没有问题。

有点困惑,并在接下来要寻找什么。

我inheritance了这个configuration,我试过不去碰它,但是这里是我们为这个虚拟主机准备的。

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

在公共文件夹中也有一个.htaccess与很多configuration。 这是一个相关的块:

 RewriteEngine On RewriteBase / #Correct some bad external links RewriteRule ^lh$ / [L,R=301] <FilesMatch "^cart$"> ForceType application/x-httpd-php </FilesMatch> 

我已经把mod_rewritelogging到了9,并且匹配了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 

以下是我所做的修复。

  1. 我抛弃了所有的FilesMatch / ForceType的东西。
  2. 我将所有没有扩展名的文件重命名为.php
  3. 我改变了.htaccess包括两个规则每个文件(可能可以合并为一个)

Options +FollowSymLinks

RewriteEngine On

 RewriteCond %{SCRIPT_FILENAME} !-d RewriteCond %{SCRIPT_FILENAME} !-f RewriteRule ^cart$ ./cart.php RewriteRule ^cart/(.*)$ ./cart.php` 

我开始的另一个问题是ssh2 pecl扩展导致段错误。 我升级它,它修复了段错误,但它不再function。 我用phpseclibreplace了它。 我仍然看到一些pecl zip.so segfaults。 我仍然不明白是什么造成了这一切,但我不会升级到php 5.8.2现在在centos 6.8上。 这是一个已知的问题: http : //paul-m-jones.com/archives/6439