多语言站点的 ErrorDocument 404

ErrorDocument 404 for a multi-lingual site

我遇到了一个小问题,导致我的网站发生冲突。例如,当我在此页面 /en/pagenotexists/ 上时,我如何才能简单地引用 /en/404.php?

我在我的 .htaccess 中使用了以下指令:

ErrorDocument 404 /404.php

我试过这个解决方案,但根本不起作用:

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^([a-z]{2})/ //404.php [R=404,L]

您需要删除 R=404 :

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^([a-z]{2})/ //404.php [R,L]

否则规则会将请求重定向到默认的 404 页面而不是规则的目标。

要使用正确的 404 状态代码显示特定语言 404.php 的内容,您可以使用此内部重写规则:

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([a-z]{2})/ /404.php [L]

然后让你的/en/404.php变成这样:

<?php
// return correct 404 status code
http_response_code(404);

// rest of the 404 handler content
?>