0

我的脚本有一个奇怪的错误,如果 URL 以“/”结尾,则我只想将用户重定向到最后没有任何“/”的相同 URL。

我收到此错误:

Warning: Cannot modify header information - headers already sent by (output started at /home/httpd/vhosts/xxx/httpdocs/series.php:1) in /home/httpd/vhosts/xxx/httpdocs/series.php on line 7

Warning: Cannot modify header information - headers already sent by (output started at /home/httpd/vhosts/mxxx/httpdocs/series.php:1) in /home/httpd/vhosts/xxx/httpdocs/series.php on line 8

代码:

<?php
$urlLast = $_SERVER['REQUEST_URI'];
$urlLast = substr($urlLast, -1);
if (($urlLast == '/') && (!strstr($_SERVER['REQUEST_URI'], 'en-streaming')))
{
    $newURL = substr($_SERVER['REQUEST_URI'],0,-1).'-en-streaming';
    header("Status: 301 Moved Permanently", false, 301);
    header("Location: ".$newURL."");
}
4

3 回答 3

3

您可以通过使用修复它

ob_start(); 在脚本的顶部。

于 2013-09-04T09:12:56.957 回答
1

之前有 Unicode BOM<?php吗?

当您使用编码“UTF-8 with BOM(字节顺序标记)”保存文件时,特殊字符序列(0xEF 0xBB 0xBF)将自动插入文件开头。

只需尝试使用“UTF-8 WITHOUT BOM”(如果存在)保存文件或尝试其他编辑器。

notepad.exe 中的 AFAIK UTF-8 是“WITH BOM”。

于 2013-09-04T09:22:55.557 回答
0

删除之前的尾随空格<?php

另外,删除之后的空格?>(如果有的话)

另外,ob_start()在文件开头添加。

这会将输出保存在缓冲区缓存中,而不是在浏览器上打印。

于 2013-09-04T10:26:42.233 回答