Локальные переменные Java имеют защиту, известную как определенное присваивание , это означает, что вы не можете прочитать значение из них до того, как присвоите ему значение.
Они также определены в области действия : доступ к переменной можно получить только в пределах определенного фрагмента программы.
Вместе с этими двумя вещами вам не нужна отдельная переменная для каждой итерации цикла: вы гарантированно присваиваете локальной переменной значение перед ее использованием, поэтому вы гарантированно перезаписываете любое значение, которое было хранится в нем раньше, если таковые имеются.
Переменные - действительно просто полезная концепция в исходном коде. После компиляции байт-код не имеет имен переменных: компилятор просто определил, что он может временно использовать определенную часть памяти для хранения значения в течение ограниченного времени. Он будет многократно использовать эту память, но таким образом, чтобы она не перекрывала использование.
Вы можете использовать флаг R
на RewriteRule
для принудительного перенаправления с заданным кодом статуса:
Хотя это обычно используется для перенаправления, здесь может быть указан любой правильный код статуса. Если код состояния находится вне диапазона перенаправления (300-399), то строка Substitution отбрасывается и переписывание останавливается, как если бы использовался флаг L.
Таким образом, this:
RewriteRule ^/?page\.html$ - [R=404]
вернет страницу 404 по умолчанию для /page.html
. Поскольку это regexp, помните об экранировании \.
и привязку $
.
-
игнорируется (т.е. "строка подстановки опущена"), но там все равно должно быть что-то, чтобы правило было хорошо сформировано.
Лучший способ сделать это - установить флаг R с кодом состояния 404:
RewriteCond %{REQUEST_URI} ^/dirname/pagename
RewriteRule ^ - [L,R=404]
Но это доступно только после Apache 2.
Это должно работать:
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';