为什么我将 PHP 网站更新为 HTTPS 后会收到 404 错误?

问题描述 投票:0回答:1

我已将我的 PHP 网站从 HTTP 更新为 HTTPS。当然,我已经更新了代码中的 URL,并且修复了一些错误,例如混合 URL。

但是我总是被重定向到 404 页面错误,因此我暂时删除了整个网站代码,以便尽可能简单地完成它并更好地测试它。

现在,这是我的

index.php
文件:

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <title>My title</title>
        <meta name="description" content="My description."/>
        <meta name="google-site-verification" content="XXXXX"/>
        <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"/>
        <meta name="keywords" content="keyword1, keyword2, keyword3">
    </head>
    <body>
        <?php
            if (isset($_GET['lang']) && $_GET['lang'] != "") {
                echo("GET: ".isset($_GET['lang']));
            } else {
                echo('<meta http-equiv="refresh" content="0;url=https://www.mywebsite.com/en">');
            }
        ?>
    </body>
</html>

这是我的

.htaccess
文件:

Options All -Indexes
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([a-zA-Z0-9_-]+)/?$ index.php?lang=$1
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/?$ index.php?lang=$1&menu=$2
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/([a-zA-Z0-9ÑñÇçÜüÁáÉéÍíÓóÚú=_-]+)/?$ index.php?lang=$1&menu=$2&page=$3
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/([a-zA-Z0-9ÑñÇçÜüÁáÉéÍíÓóÚú=_-]+)/([a-zA-Z0-9_-]+)/?$ index.php?lang=$1&menu=$2&page=$3&key=$4
ErrorDocument 404 /pages/404-page-htaccess.php

当我加载 URL

https://mywebsite.com
时,我会被重定向到 https://mywebsite.com/en,这没问题,但它会返回
404-page-htaccess.php
的内容,因为它收到 404 错误。

说实话,我对 PHP 和这个网站不太记得了,但是谁能告诉我会发生什么?

首先我尝试使用 PHP

header("Location: ...");
进行重定向,结果相同。我也尝试了很多事情,但没有结果。

顺便说一句:如果我将重定向行替换为

echo('<meta http-equiv="refresh" content="0;url=index.php?lang=en">');
,它可以正常工作,但 URL 不干净,这不是我想要的。

php .htaccess
1个回答
0
投票

我找到了修复网站的方法:在

/
文件规则中的目标文件之前添加
.htaccess

我有这个:

RewriteRule ^([a-zA-Z0-9_-]+)/?$ index.php?lang=$1

我把它改成这样:

RewriteRule ^([a-zA-Z0-9_-]+)/?$ /index.php?lang=$1

你觉得这样做有什么意义吗?通过 HTTP 访问时,网站运行完美,没有最初的

/
...

© www.soinside.com 2019 - 2024. All rights reserved.