2010-12-23 79 views
0

我们的应用程序有很多旧的链接,我试图将它们重定向到新的url。我不能做.htaccess重定向,因为这个新的url是使用php生成的。因此,我使用php的头部函数将用户从redirect.php重定向到test.php。但问题是,如果用户访问example.com/redirect.php文件被下载,但浏览器中的url仍然是example.com/redirect.php。它应该更改为example.com/test.php。我正在使用301重定向。php重定向和ical下载问题

我已经试过JavaScript的window.location.href函数,但相同的结果进来。我希望我已经正确地解释它。谢谢您的帮助。

第一个php文件,例如redirect.php有这个代码。

<? 
header("Location: http://example.com/test.php"); 
?> 

第二个文件test.php有这段代码来下载一个文件。代码是这样的。

<?php 
header("Content-Type: text/Calendar"); 
header("Content-Disposition: download; filename=calendar.ics"); 
echo "BEGIN:VCALENDAR\r\n"; 
//echo "X-WR-TIMEZONE:America/New_York\r\n"; 
echo "X-APPLE-CALENDAR-COLOR:#b91113\r\n"; 
echo "X-WR-CALNAME:$cal_name\r\n"; 
echo "VERSION:2.0\r\n"; 
echo "PRODID:-//Test//NONSGML Test//EN\r\n"; 
echo "METHOD:PUBLISH\r\n"; 
echo $data;?> 

如果我删除Ical下载的标题代码,则此重定向工作。浏览器窗口中的URL更改为新位置。

+0

你使用什么浏览器?你在其他浏览器中看到了什么行为?这可以说是一个浏览器错误,但我甚至都没有看到这是一个问题。 (有没有一个指定这个重定向的RFC?) – 2010-12-27 06:12:45

+0

嗨保罗,我使用Mozilla,IE,Google Chrome。在Mozilla中,浏览器选项卡中的url保留example.com/redirect.php,并且会下载ical文件。 Ical文件下载在test.php里面。在Chrome和Safari浏览器中,即使是redirect.php url也不会显示在窗口中,并且文件被下载。由于我们有很多旧网址,因此我希望用户在加载旧网址时能够看到新位置。 – 2010-12-27 08:49:41

回答

1

你redirect.php文件应该是这样的:

<? 
header("Location: http://example.com/test.php"); 
exit; 
?> 

试试吧,让我知道,如果它的工作。

编辑

你测试什么浏览器?任何机会的野生动物园? ,我想我想通了你是问题,网址保持不变,因为有一个下载文件在请求的URI,有些浏览器不会改变网址,当你请求文件下载(这将意味着用户看到一个空白页),我知道野生动物园4这很难,我不知道它的任何解决方案(也许改变你所有的链接在你的网站到新的URI,但你仍然有谷歌索引URI的问题)