我在Apache面前遇到Nginx(设置为反向代理)的问题。我正在使用Apache来提供PHP文件和应用.htaccess规则。
Nginx有效,但.htaccess中的一些重写没有。
我使用timthumb.php管理以下媒体:
/cache/150/100/file.jpg > /media/thumb.php?src=images/file.jpg&w=150&h=100
重写规则仅适用于PHP应用程序,但它不适用于上面的静态文件。 当我尝试执行自己的静态规则时,Nginx返回404。
RewriteEngine On
RewriteRule ^cache/([0-9]+)/([0-9]+)/([a-z0-9_\-\.\/]+)$ /media/thumb.php?src=images/$3&w=$1&h=$2 [L]
RewriteRule ^upload/([0-9]+)/([0-9]+)/([a-z0-9_\-\.\/]+)$ /media/thumb.php?src=upload/$3&w=$1&h=$2 [L]
<Files .*>
Order Deny,Allow
Deny From All
</Files>
RewriteRule ^(?:application|modules|system)\b.* index.php/$0 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT]
答案 0 :(得分:1)
我猜你是通过nginx直接提供你的“/ upload”和“/ cache”目录 - 而不是把它传递给apache。
请尝试以下规则:
location ^~ /upload {
.......
}
location ^~ /cache {
.......
}
在nginx配置中为静态文件提供服务的地方之前。让我知道它是否有效 - 如果没有 - 粘贴也是nginx配置的一部分。
更多阅读:http://wiki.nginx.org/HttpCoreModule#location
取决于您在代理期间如何配置您的位置 - 它们具有不同的优先级。