PHP永久重定向

PHP永久重定向,php,redirect,header,Php,Redirect,Header,我在PHP中遇到了一个关于永久重定向的奇怪问题 以下是我使用的代码: if ($_SERVER['HTTP_HOST'] != 'www.mydomain.ca') { header("HTTP/1.1 301 Moved Permanently"); $loc = "http://www.mydomain.ca".$_SERVER['SCRIPT_NAME']; header("Location: ".$loc); exit; } 因此,由www.my

我在PHP中遇到了一个关于永久重定向的奇怪问题

以下是我使用的代码:

if ($_SERVER['HTTP_HOST'] != 'www.mydomain.ca')   
{
    header("HTTP/1.1 301 Moved Permanently"); 
    $loc = "http://www.mydomain.ca".$_SERVER['SCRIPT_NAME'];
    header("Location: ".$loc);
    exit;
}
因此,由www.myolddomain.ca或www.myolddomain.ca/index.php引用的主页都可以工作,但站点上的其他页面都无法重定向。我花了几个小时从我所知道的所有角度看这个问题,但我无法理解。有人知道这是什么问题吗


请注意,我在没有301头的情况下也尝试了这个方法,但也遇到了同样的问题。

如果您有服务器的ftp帐户,您可以创建一个.htaccess文件,让它处理请求。只需在站点的根文件夹中创建一个名为
.htaccess
的文件,然后发布代码,并将其更改为所需的模式


如果您想通过
PHP
进行修复,我会创建一个
redirect.PHP
,并将其包含在您需要的每个站点上。很难说这是不是最好的解决方案,这取决于您的布局和结构方式。

通过htaccess尝试,创建.htaccess文件,然后尝试类似的方法

重新启动发动机 重写规则(.*)$1[R=301,L]


**Apache Mod Rewrite moduled应该启用

在该代码之前有输出吗?所有页面上都有这段代码吗?如果这段代码放在index.php中,而你有其他的.php文件,你必须将它放在所有页面中。网站是模板化的,所以这段代码在每个页面的顶部,之前没有输出。我会试试看。我没有想过在这个层次上做。嗯。没有骰子。我不得不将httpd.conf文件更改为AllowOverride,并将其设置为AllowOverride选项文件InfoI。我还尝试了AllowOverride All,但也没有成功。我已将.htaccess文件的权限设置为664。有什么想法吗?没有检查模块是否启用-下一站!是,模块已加载。请验证您的htaccess文件是否正常工作
Options +FollowSymLinks
RewriteEngine on
RewriteCond {HTTP_HOST} ^yourdomain.com
RewriteRule ^(.*)$ http://www.newdomain.com/$1 [R=301,L]