Apache2服务器上奇怪的重定向行为?

时间:2013-02-20 10:18:28

标签: redirect amazon-web-services apache2 rewrite subdomain

我为我最近开始工作的公司构建了一个新网站,并将其部署在一个单独的子域(http://site.mysite.com)上,以免干扰某些需要保留在旧子域中的网址。

由于一些奇怪的原因,旧的HTML网站(http://www.mysite.co/site)被放置在Zend应用程序的公共/文件夹中,作为公共/站点。我们希望将此网站(以前在http://mysite.com/site文件夹中提供)重定向到我们位于http://site.mysite.com的新网站

我已经在Zend公共文件夹中编辑了现有的.htaccess文件,所以它看起来像这样:

RewriteEngine On

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

# These four lines are my only alterations to this file...
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^/(apps|site).* [NC]
RewriteRule .* http://site.mysite.com/ [R=301,L]**

RewriteRule ^cart/selectaddress$ https://%{SERVER_NAME}/cart/selectaddress [R,L]

Redirect 301 /photobook-sa http://www.mysite.com/photobooksa/
Redirect 301 /photobook-SA http://www.mysite.com/photobooksa/
Redirect 301 /photobookSA http://www.mysite.com/photobooksa/

RewriteRule ^channel\.html channel\.php

RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -f 
RewriteRule ^.*$ - [NC,L]

php_value session.auto_start 0
RewriteRule ^.*$ index.php [NC,L]
Header append P3P "CP=\"HONK IDC DSP COR CURa ADMa OUR IND PHY ONL COM STA\""

AddDefaultCharset UTF-8

我们的想法是捕获 http://mysite.com/apps/ http://mysite.com/apps/whatever http://mysite.com/site/ 并将这些全部重定向,无条件地 http://site.mysite.com

问题是,重定向仅适用于/ apps和apps /,而不适用于/ site。所以我在Zend项目文件夹结构中发现了公共/站点文件夹,它奇怪地将公司站点托管为仅HTML站点。

问题是,当我删除此文件夹时,整个mysite.com和www.mysite.com域都失败了,但是例如mysite.com/apps仍然设法重定向到site.mysite.com

所以我尝试编辑public / site / index.php,如下所示:

<?php
header('Location: http://site.mysite.com'); exit;

并且它有效,但仅针对少数请求,然后我收到服务器错误。

我还尝试在public / site / .htaccess中添加.htaccess,内容如下:

Redirect 301 http://site.mysite.com

哪个也最初有效,但在几次请求后失败并出现服务器错误?

我不知道是什么,也不知道为什么虚拟主机依赖于公共/站点文件夹才能工作,这在虚拟主机设置中甚至没有提到。

我gred了Zend应用程序/控制器文件夹中的所有控制器,试着看看我是否能找到任何远程提到这个/站点文件夹但没有找到匹配项的东西。

我用这种奇怪的行为将头发从头皮中拉出来,有人可以帮忙吗?

另外最后一点,这是一个Amason AWS服务器,我不完全熟悉,会不会是这个服务器一些有趣的事情,那就是在Apache的配置,DNS设置什么神秘的术语不规范AUTOMAGIC?

1 个答案:

答案 0 :(得分:0)

我们无法解决此问题,也无法弄清楚为什么我们的方法只能运行几分钟。我怀疑亚马逊AWS发生了一些奇怪的事情。

我们可以修复的唯一方法是在culprit / site文件夹中添加一个index.html,使用一个小的JavaScript代码段从客户端重定向该网站。