【问题标题】:PHP redirect for www to non-www with 301 on IIS在 IIS 上使用 301 将 www 的 PHP 重定向到非 www
【发布时间】:2013-05-06 01:06:02
【问题描述】:

我想一劳永逸地解决这个问题:

<?php if ($_SERVER['HTTP_HOST'] != 'domain.com'){
header("Location: http://domain.com"
.$_SERVER['REQUEST_URI']);
} ?>

这会将所有流量发送到非 WWW 版本。

我的问题是 - 我可以添加 'header('HTTP/1.1 301 Moved Permanently');'安全而不搞砸一切?

我使用的是 IIS 服务器,所以 .htaccess 不好,所有页面都用 PHP 编码 - 欢迎所有解决方案。

【问题讨论】:

    标签: php redirect no-www


    【解决方案1】:

    当然可以。利用header()提供的所有参数:

    <?php
    
    if ($_SERVER['HTTP_HOST'] != 'domain.com'){
        header("HTTP/1.1 301 Moved Permanently", true, 301);
        header("Location: http://domain.com".$_SERVER['REQUEST_URI']);
    }
    

    最后一个参数强制响应代码为 301,如你所愿。

    【讨论】:

    • 谢谢 - 很高兴确认。
    • 是的接受了 - 但是我/我们的代码有问题...应该是:&lt;?php if ($_SERVER['HTTP_HOST'] != 'www.domain.com'){ header("HTTP/1.1 301 Moved Permanently", true, 301); header("Location: http://domain.com".$_SERVER['REQUEST_URI']); } ?&gt;
    【解决方案2】:

    当然可以,它不会搞砸任何事情!但它必须在标头位置行后面的 if 子句中:

    <?php
    if ($_SERVER['HTTP_HOST'] != 'domain.com'){
        header('HTTP/1.1 301 Moved Permanently');
        header("Location: http://domain.com".$_SERVER['REQUEST_URI']);
    }
    ?>
    

    但如果你使用 URL 重写(又名“IIS mod_rewrite”)会更好:http://www.iis.net/downloads/microsoft/url-rewrite 或其他一些不在你的 php 代码中的重定向。

    【讨论】:

    • 天哪,几乎在同一时间得到相同的答案:D
    猜你喜欢
    • 1970-01-01
    • 2016-10-14
    • 2018-05-01
    • 2021-12-03
    • 2017-05-03
    • 2018-10-19
    • 2012-03-08
    • 2011-01-05
    • 2010-11-27
    相关资源
    最近更新 更多