Почему header('HTTP/1.0 404 Not Found')
не работает, когда у меня есть эта строка в.htaccess RewriteRule ^([a-zA-Z0-9\-]+)/?$ index.php?url=$1 [L,QSA]
?
Как я могу заставить его работать, чтобы я мог сохранить RewriteRule ^([a-zA-Z0-9\-]+)/?$ index.php?url=$1 [L,QSA]
- возможно, в этом есть ошибка линия?
Кроме того, хотя я удаляю его, header('HTTP/1.0 404 Not Found')
показывает только 404.php
на browrser, вместо указания на 404.php и отображения сообщения об ошибке в этом документе.
Ниже приведены мои коды и файлы. Все они находятся в корневом каталоге для тестирования.
index.php,
header('HTTP/1.0 404 Not Found');
exit();
404.php,
echo "<h1>404 Not Found</h1>";
echo "The page that you have requested could not be found.";
.htaccess,
RewriteEngine on
RewriteRule ^([a-zA-Z0-9\-]+)/?$ index.php?url=$1 [L,QSA]
ErrorDocument 404 404.php
Есть идеи?
РЕДАКТИРОВАТЬ:
Для
ErrorDocument 404 /404.php
Я получаю эту ошибку,
Запрошенный URL/mywebsite/xxx/xxx/не найден на этом сервере.
Кроме того, при попытке использовать ErrorDocument для обработки запроса была обнаружена ошибка 404 Not Found. '
Он все еще не указывает на 404.php
Если вы посмотрите документацию по директиве ErrorDocument
, ему нужен либо абсолютный URL-путь, поэтому он начинается с "/" или "http://" (или "https://"). В противном случае он интерпретирует второй аргумент как сообщение.
Это тот же сценарий, что и:
ErrorDocument 404 Wildcard!
И если кто-то получит ошибку 404, они увидят в своем браузере "Wildcard!".
Вам нужно изменить его на URL-путь, например /404.php
.
The requested URL /mywebsite/xxx/xxx/ was not found on this server. Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.
/404.php
не может быть относительно того, где находится файл htaccess.