多语言站点的 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
?>
我遇到了一个小问题,导致我的网站发生冲突。例如,当我在此页面 /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
?>