timthumb和apache mod_rewrite

时间:2014-04-04 19:51:36

标签: php .htaccess mod-rewrite apache2

我刚刚在AWS上使用Apache 2和PHP 5.4安装了一个新实例。除了timthumb.php之外,一切正常。我看到的错误是:

Negotiation: discovered file(s) matching request: /var/www/photos/thumb (None could be negotiated).

/ photos中的.htaccess文件如下所示:

RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^thumb/(.*)$ /photos/thumb.php?src=http://cdn.my-host.com/$1 [L]

在做了一些研究后,看起来我需要添加PHP类型,所以我在mime.conf文件中这样做了:

AddType application/x-httpd-php .php

重新启动apache后,我现在看到了这个错误:

PHP Fatal error:  Unknown: Failed opening required '/var/www/photos/thumb.php'

我走错了路吗?我正试图解决第一个错误,但我认为我走向了错误的方向。有什么想法有什么问题?

1 个答案:

答案 0 :(得分:1)

您需要关闭mod_negotiation

在htaccess文件的顶部,添加:

Options -MultiViews

Mod_negotiation看到/photos/thumb/something之类的请求,当它尝试将该URI映射到文件时,它会在/photos/thumb.php看到该文件,并认为该请求是针对该文件的(它是)。问题是这将完全绕过mod_rewrite,因此您的规则不会被应用。