Apache: Перенаправьте 404 и различие ErrorDocument 404

Следующее могло бы работать, отчасти:

echo list disk > list.txt
for /f "usebackq tokens=1,2" %%a in (`diskpart /s list.txt ^| findstr /r /c:"Disk [0-9]"`) do (
   echo sel %%a %%b>abc.txt
   echo create part primary>>abc.txt
   echo format FS=NTFS  label=label2 quick compress>>abc.txt
   diskpart /s abc.txt
)
del list.txt abc.txt

Это будет сначала получать список дисков от diskpart и впоследствии использовать их с Вашим файлом сценария (который будет динамично создан в цикле).

Я не попробую его здесь, так как мне нравятся мои диски путем, они в настоящее время.

5
задан 20 August 2011 в 09:50
4 ответа

Вы тестировали с ] Директива перенаправления ?

Перенаправление 404 /index.html означает, что ответ 404 вернется, когда клиент запросит /index.html (даже если он может существовать).

ErrorDocument 404 / index. html означает, что когда клиент обращается к несуществующему URL-адресу, Apache перенаправляет на страницу index.html.

В этом случае необходимо использовать ErrorDocument .

10
ответ дан 3 December 2019 в 01:04

Обычно это два не связанные. Когда я просто попытался настроить перенаправление со статусом 404, я получил сообщение об ошибке URL-адрес перенаправления недействителен для этого статуса при попытке запустить apache.

A Redirect отправляет клиент на новый адрес и предоставляет статус для клиента. Возвращаемый статус обычно представляет собой 30x значений.

Директива ErrorDocument настраивает apache для возврата определенной страницы (а не страницы по умолчанию) при возникновении ошибки типа nnn. В вашем примере вы говорите return /index.html, когда возникает ошибка 404 (Not Found).

Чего вы пытаетесь достичь?

2
ответ дан 3 December 2019 в 01:04

Если вы правильно настроили директиву ErrorDocument , все, что вам нужно сделать, это убедиться, что файл на самом деле отсутствует. Если вы пытаетесь сопоставить шаблон имени файла, вам необходимо сопоставить шаблон и переписать запрос в несуществующий ответ. И обязательно выключите просмотр каталогов:

<VirtualHost *:80>
 Options -Indexes
 ErrorDocument 404 /not-found.htm
 AliasMatch /index\.* /something/not/here
</VirtualHost>
0
ответ дан 3 December 2019 в 01:04

These are 3 different things:

  1. Где вы настраиваете свои директивы:

    • в конфигурационном файле Apache (например, в файле vhost, обычно в /etc/apache2/sites-available)
    • или в .htaccess где-нибудь в web-корневом каталоге.

    Большинство директив, вы можете поместить в любой из файлов. Директивы в .htaccess всегда применяется к текущему каталогу. Вы можете поместить их в web-корень или в подкаталог. Изменения в конфигурации Apache требуют перезагрузки веб-сервера. (что хорошо, потому что он тоже делает некоторые проверки). Обычно это рекомендуется вообще не использовать .htaccess (если не нужно) для производительности reasons.

  2. В контексте, в котором вы определяете директиву, если в она находится в контексте виртуального хоста (это значит, что она применяется для этого виртуального хоста). Также можно использовать контекст Directory, то есть применять директиву только к конкретному каталогу. Это довольно хорошо объясняется в документации Apache 2.4 "Configuration Sections". .htaccess применяется к определённым каталогам (или ко всем, если вы поставите его на верхний уровень).

  3. Как вы конфигурируете, что означает какие директивы . ErrorDocument и Redirect делают разные вещи:

    • ErrorDocument определяет, что должно отображаться в случае ошибки, используйте 404 для страницы, которая не найдена. Директива, которую вы разместили выше, означает, что в качестве страницы ошибки будет использоваться index.html. Обычно вы этого не хотите. Обычно вы хотите, чтобы была показана конкретная страница ошибки, например, ErrorDocument 404 error.html. Это рекомендуемый способ: Он вернет код статуса HTTP 404 (что хорошо, так как заставляет поисковые системы удалять страницу из индекса) и отобразит error.html в браузере.
    • оператор Redirect, который вы разместили выше, выдаст вам код статуса HTTP 404, но не отобразит указанную вами страницу, поэтому используйте ErrorDocument.
0
ответ дан 3 December 2019 в 01:04

Теги

Похожие вопросы