重定向到不使用可湿性粉剂插件的子目录首页-要编辑哪些文件,以及如何编辑?

时间:2020-02-17 作者:yarimoto

我的情况是,我有一个多站点设置,在那里我使用不同语言的子目录。我使用英语的主主页和其他语言的子目录,如下所示:

Mywesmite。com:英文frontpage

我的网站。com/jp/:日文frontpage

我想做什么我想把住在日本的人重定向到日文首页without using a WordPress plugin.

我使用geoplugin.com , 灵感来自3rd answer of this stack 我编辑了主题header.php 通过在最开始添加以下内容

$a = unserialize(file_get_contents(\'http://www.geoplugin.net/php.gp?ip=\'.$_SERVER[\'REMOTE_ADDR\']));
$countrycode= $a[\'geoplugin_countryCode\'];
if ($countrycode==\'JP\'){
        header( \'Location: https://mywebsite.com/jp/\' );
        exit;
    }
然而,我得到了以下错误

页面未正确重定向

连接到mywebsite时出错。com。

此问题有时可能是由于禁用或拒绝接受Cookie造成的。

Note: 例如,重定向可以在外部网站上正常工作

$a = unserialize(file_get_contents(\'http://www.geoplugin.net/php.gp?ip=\'.$_SERVER[\'REMOTE_ADDR\']));
$countrycode= $a[\'geoplugin_countryCode\'];
if ($countrycode==\'JP\'){
        header( \'Location: https://anotherwebsite.com\' );
        exit;
    }
有没有办法修复此错误?

我也愿意接受其他不使用WP插件的解决方案。

1 个回复
最合适的回答,由SO网友:WebElaine 整理而成

听起来好像每次加载任何页面时,如果它满足条件,就会尝试重定向。因此,如果您是从日本观看,并且访问顶级网站,您将被重定向。但当你被重定向时header.php 代码将再次看到您正在从日本观看,并尝试重定向。等等,等等。

因此,解决眼前问题的方法是添加一个条件。仅当访问者当前正在查看顶级网站时才尝试重定向。

<?php
// Only if this is the top-level site
if(get_current_blog_id() == 1) {
    $a = unserialize(file_get_contents(\'http://www.geoplugin.net/php.gp?ip=\'.$_SERVER[\'REMOTE_ADDR\']));
    $countrycode= $a[\'geoplugin_countryCode\'];
    if ($countrycode==\'JP\'){
        header( \'Location: https://mywebsite.com/jp/\' );
    exit;
    }
}
?>
然而,这可能并不理想。如果您有其他访问者将在顶级网站上查看的内容,则每次他们加载页面时,此检查都会运行并减慢速度。因此,最好找到一种cookie访问者的方法,而不是每次加载页面时都运行服务器端逻辑。

此外,如果您已将此代码添加到现有主题的header.php 文件,它将在每次更新主题时被覆盖。因此,如果这仍然是您想要采取的方法,那么您将需要创建一个子主题。

相关推荐

301 Redirect Link to Media

今天我给一些人发了一封电子邮件,其中有一个指向wordpress上托管的word文档的链接。电子邮件中的URL类似于:www.mycompany。com/media/2018/06/somedocument。docx公司不幸的是,有些文档。docx实际位于:www.mycompany。com/media/2018/05/somedocument。docx公司当人们点击电子邮件中的链接时,他们会得到404。我们尝试了从一个301重定向到另一个301重定向,但这似乎不起作用。我假设这是因为它是指向文件的直接链