根据域语

时间:2016-03-23 10:52:47

标签: php wordpress http-status-code-404

对于PHP,我真的是一个菜鸟,我想请求你的帮助。我想为我的Wordpress网站创建一个404.php,用适当的语言显示404页面。该网站使用多种语言:荷兰语和英语。 (我尝试了一些插件,但它们不适用于我当前的主题)。我做了一些研究,发现了一些零碎的东西,并掌握了一段不起作用的PHP代码。如果你能够如此友善地指出我正确的方向,这将是伟大的。这就是我想出的:

<?php
$incomingUrl = $_SERVER['REQUEST_URI'];
if($incomingUrl == 'damcms.com/en') {
  wp_redirect(damcms.com/en/page-not-found-404);
  exit;
} else {
  wp_redirect(damcms.com/pagina-niet-gevonden-404);
  exit;
}
?>

我没有收到错误消息,没有显示任何内容。所以我想念一下,什么?提前谢谢。 克劳迪亚

1 个答案:

答案 0 :(得分:0)

首先,没有任何反应的原因在于:

wp_redirect(damcms.com/en/page-not-found-404);

任何时候你在PHP中都有一个字符串, 必须 在引号中;否则PHP会尝试将其解释为指令(并且damcms.com/en/page-not-found-404不是有效的PHP指令)。

所以这会奏效:

wp_redirect('damcms.com/en/page-not-found-404');

但问题更严重:您不想只检查网址 是否 damcms.com/en - 您想要检查 是否以 damcms.com/en开始。

所以,也许这就是:

if(strpos($_SERVER['REQUEST_URI'], 'damcms.com/en') !== false)) {
  wp_redirect('damcms.com/en/page-not-found-404');
} else {
  wp_redirect('damcms.com/pagina-niet-gevonden-404');
}
exit;

但更深入一级,即使这有点不确定。 WordPress已经有一个404.php模板,可以显示任何404页面。我强烈建议编辑 - 并 那里 执行if ... 'damcms.com/en'测试,然后可能只包含一个404-en.php模板。这样现有的404机制仍然有效。通过您的设置,访问者将被重定向到200页面,因此对于搜索引擎,您的网站似乎根本没有404,所有内容都是有效内容!