Перенаправление к Apache встроенные 404 страницы с mod_rewrite?

Локальные переменные Java имеют защиту, известную как определенное присваивание , это означает, что вы не можете прочитать значение из них до того, как присвоите ему значение.

Они также определены в области действия : доступ к переменной можно получить только в пределах определенного фрагмента программы.

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

Переменные - действительно просто полезная концепция в исходном коде. После компиляции байт-код не имеет имен переменных: компилятор просто определил, что он может временно использовать определенную часть памяти для хранения значения в течение ограниченного времени. Он будет многократно использовать эту память, но таким образом, чтобы она не перекрывала использование.

32
задан David Moles 16 November 2015 в 19:55
поделиться

3 ответа

Вы можете использовать флаг R на RewriteRule для принудительного перенаправления с заданным кодом статуса:

Хотя это обычно используется для перенаправления, здесь может быть указан любой правильный код статуса. Если код состояния находится вне диапазона перенаправления (300-399), то строка Substitution отбрасывается и переписывание останавливается, как если бы использовался флаг L.

Таким образом, this:

RewriteRule ^/?page\.html$ - [R=404]

вернет страницу 404 по умолчанию для /page.html. Поскольку это regexp, помните об экранировании \. и привязку $.

- игнорируется (т.е. "строка подстановки опущена"), но там все равно должно быть что-то, чтобы правило было хорошо сформировано.

47
ответ дан 27 November 2019 в 20:30
поделиться

Лучший способ сделать это - установить флаг R с кодом состояния 404:

RewriteCond %{REQUEST_URI} ^/dirname/pagename
RewriteRule ^ - [L,R=404]

Но это доступно только после Apache 2.

11
ответ дан Gumbo 27 November 2019 в 20:30
поделиться

Это должно работать:

RewriteEngine on
RewriteRule ^/page.html /error404.html [L]

Это не даст заголовок 404, хотя. Вы можете попробовать изменить флаг [L,R=404], но я сомневаюсь, что это сработает (это должно быть только для перенаправлений).

Ваша идея сделать это в PHP будет работать. Если все ваши "страницы ошибок" страницы на стороне сервера (то есть PHP), то вы можете просто использовать этот код:

<?php
header( 'HTTP/1.0 404 Not Found' );
include 'error404.html';
2
ответ дан DisgruntledGoat 27 November 2019 в 20:30
поделиться
Другие вопросы по тегам:

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