php - 尝试创建搜索引擎友好 URL 时出现索引 404 错误

标签 php apache .htaccess error-handling url-rewriting

我正在尝试将我的网站网址切换为“SEO 友好”,我通过 php 发现了一个简单的想法: 因此,通过 .htaccess 将每个未找到的页面移动到 index.php:

ErrorDocument 404 /index.php

从那里我在index.php中:

   $url = explode('/', urldecode($_SERVER['REQUEST_URI']));

    
if (empty($url[1])){
    include "home.php";
    die();
}  else if($url[1] == "p"){
    include "s/xp.php";
    die();
} else if ( $url[1] == "d"){
    include "s/xd.php";
    die();
} else if ( $url[1] == "c"){
    include "s/xc.php";
    die();
} else {
    http_response_code(404);
    include('s/error.php');
    die();
}

但是,服务器发现这是404,所以我找到了一个解决方案来添加:

header("HTTP/1.1 200 OK");

现在页面打开一切正常,没有任何问题!但是当涉及到索引时! google发现页面都是404!即使它们工作得很好!

有没有办法让服务器相信自己没有错误?或者更好的解决方案?

最佳答案

ErrorDocument 404 /index.php

这确实是一种实现前端 Controller 模式的hacky方式。 Apache 将设置一个 404 HTTP 响应代码,然后您必须在脚本中覆盖该代码。

Apache 为此提供了一个指令:

FallbackResource /index.php

行为类似...任何通常返回 404 的请求都会发送到 /index.php,除非设置了 200 OK 响应代码。然后,您必须在代码中设置 404 响应(看起来您正在这样做)。

引用:

关于php - 尝试创建搜索引擎友好 URL 时出现索引 404 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66821596/

相关文章:

javascript - 将 Json_encode 获取到不同的 jQuery 页面

php - WKHTMLTOPDF 抛出错误代码 127

apache - 仅允许外部承包商访问 apache web 文件夹。选项 : SFTP Jailing

php - 具有动态页面 (php) 性能的 apache .htaccess 规则

phpMailer发送附件名称,而不是附件

php - Docker Nextcloud 无法加载 Collabora Online - 请稍后重试

linux - AWS亚马逊Linux EC2实例: apache user permission denied for write to directories

apache - 如何在 EC2 机器上安装 Wordpress?

regex - 使用 Redirect 与 RewriteRule 的速度影响

php - 如何使用htaccess限制对文件夹及其子文件夹中所有文件的访问并重定向到主文件夹?