【问题标题】:timthumb and apache mod_rewritetimthumb 和 apache mod_rewrite
【发布时间】:2014-04-04 19:51:35
【问题描述】:

我刚刚使用 Apache 2 和 PHP 5.4 在 AWS 上安装了一个新实例。除了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'

我是不是走错了路?我正在尝试解决第一个错误,但我认为我走错了方向。有什么想法吗?

【问题讨论】:

    标签: php .htaccess mod-rewrite apache2


    【解决方案1】:

    你需要关闭 mod_negotiation

    在您的 htaccess 文件顶部,添加:

    Options -MultiViews
    

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

    【讨论】:

    • 执行此操作时,我现在看到:PHP 警告:未知:无法打开流:第 0 行未知中的权限被拒绝 PHP 致命错误:未知:需要打开失败 '/var/www/photos/thumb .php'
    • @Paul 您在/photos/ 下设置了适当的权限?
    • 我相信... thumb.php 有 644
    • @Paul 出现该错误的原因有很多,例如 /photos/ 不是 755many other similar reasons,但它与 htaccess 无关,这是权限问题
    • 好的......你帮助我摆脱了这个错误,所以我会调查它。再次感谢!
    猜你喜欢
    • 2016-01-19
    • 2010-11-09
    • 2012-11-12
    • 1970-01-01
    • 2011-05-03
    • 2011-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多