我试图解决这一整天都没有成功,所以我希望有人能帮助我。我在 有一个应用程序http://localhost/
,它使用 Pylons 作为我托管的应用程序。除此之外,我需要托管一个 PHP/MySQL 站点,所以我也必须使用 Apache。
我目前的设置是我使用 haproxy 和这个 Apache 后端的配置:
backend apache
mode http
timeout connect 4000
timeout server 30000
timeout queue 60000
balance roundrobin
server app02-8002 localhost:8002 maxconn 1000
这是由此触发的:
acl image url_sub images
use_backend apache if image
所以,当我打开我的 IP/图像时,它会触发它并打开 Apache,端口为 8002。
对于 Apache,我创建了虚拟主机,这是“图像”之一:
<VirtualHost *:8002>
ServerAdmin my@email.com
ServerName image
ServerAlias image
DocumentRoot /srv/www/image/public_html/
ErrorLog /srv/www/image/logs/error.log
CustomLog /srv/www/image/logs/access.log combined
</VirtualHost>
所以,这一切都很好,当我输入 IP/images 时,它会打开 /srv/www/image/public_html。但随后问题来了。由于我使用的是图像上传脚本,它涉及大量重写,所以我必须启用该模块。这是位于 public_html/images 文件夹中的 .htaccess(我不知何故也不得不制作这个子文件夹,以将 URL 与 public_html 中的实际位置“匹配”。SetEnv PHP_VER 5_3
RewriteEngine On
# You must define your installation directory and uncomment the line :
RewriteBase /images/
RewriteRule ^([a-zA-Z]+)\.(jpg|gif|png|wbmp)$ controller/Resizer.php?m=original&a=$1&e=$2 [L]
RewriteRule ^(icon|small|medium|square)\/([a-zA-Z]+)\.(jpg|gif|png|wbmp)$ controller/Resizer.php?m=$1&a=$2&e=$3 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*) application.php?request=$1 [L,QSA]
所以,基本上,这在某种程度上是行不通的。我想这个虚拟主机,子目录,重写或其他东西之间存在冲突,但我似乎无法隔离它。
有点令人困惑的是,当我打开 IP/images/xxxx.jpg 时,它会打开位于 public_html/images/upload/original 文件夹中的图像,因此重写工作正常。其他规则似乎不起作用。所有的缩略图和较小的版本都没有正确呈现(带有图标、小、中、方形),这使得该网站非常不可用。
这是开发服务器的链接:http://localhost/images/
提前感谢您的时间和帮助!