针对多语言网站的ErrorDocument 404

时间:2016-11-04 11:52:49

标签: .htaccess redirect multilingual errordocument

我正面临一个小问题,导致我的网站发生冲突。当我在这个页面上/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})/ /$1/404.php [R=404,L]

2 个答案:

答案 0 :(得分:0)

您需要删除R = 404:

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

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

答案 1 :(得分:0)

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

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

然后让你的/en/404.php

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

// rest of the 404 handler content
?>