ErrorDocument 404 для многоязычного сайта

Добрый день всем, я столкнулся с небольшой проблемой, которая вызывает конфликт на моем сайте. например, когда я на этой странице / 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 ответа

Решение

Чтобы показать содержание ланг конкретных 404.php с правильным 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
?>

Вам необходимо удалить R=404:

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

В противном случае правило перенаправит запрос на страницу 404 по умолчанию вместо места назначения правила.

Другие вопросы по тегам