我已将我的 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 不干净,这不是我想要的。
我找到了修复网站的方法:在
/
文件规则中的目标文件之前添加 .htaccess
。
我有这个:
RewriteRule ^([a-zA-Z0-9_-]+)/?$ index.php?lang=$1
我把它改成这样:
RewriteRule ^([a-zA-Z0-9_-]+)/?$ /index.php?lang=$1
你觉得这样做有什么意义吗?通过 HTTP 访问时,网站运行完美,没有最初的
/
...