Серия переписывающих без Last [L] Flag

ОБНОВЛЕНИЕ: сегодня я как бы выясняю, в чем проблема: теперь взгляните на уменьшенную версию

RewriteCond %{REQUEST_FILENAME} (.+)
RewriteRule first /landingpage1.php [R,ENV=lang:hi]

RewriteCond %{REQUEST_FILENAME} (.+)
RewriteRule second /landingpage2.php?id=%1&%{ENV:lang} [R,L]

мое расположение файла htaccess - / www / h / folder, если я наберу localhost / h / firstsecond, он возвращает localhost / landingpage1.php, шаблон не удовлетворен в 4-й строкено если я наберу localhost / h / first / second, проблема начинается, она = приземляется на localhost / landingpage2.php? id = localhost / landingpage1.php & hi, фактически один раз, только один раз, я не знаю как, я узнаю во время эксперимента что с localhost / h / first / second url, он перенаправил с первой строкой rewriterule что-то вроде localhost / landingpage1.php // second, и, разумеется, таким образом мы видим, что вторая строка работает, я видел такое поведение с псевдонимом "redirect" Кроме того, если в вашем URL-адресе есть какой-либо след папки, он добавляет оставшуюся часть в окончательный перенаправленный URL-адрес вместе со строкой запроса.

поэтому, когда localhost / h / firstsecond работает нормально, а localhost / h / first / second - нет, я знаю, вероятно, близко, чтобы знать, что происходит.

АРХИВ:

Я пытаюсь понять поведение группы правил перезаписи без флага Last. Учтите, что мое расположение файла htaccess - localhost / h / (Applications / AMPPS / www / h)

Пример 1:

RewriteRule anchor/(.+) /hello [R,ENV=lang:hi]
RewriteRule anchor /anchor/guess [R]
RewriteRule /hello /yes [R]

Если я введу localhost / h / anchor / text, то я думаю, что произойдет

Первая строка RewriteRule anchor /(.+) / hello [R, ENV = lang: hi] шаблон "anchor /(.+)" совпадает и поэтому он перенаправляет на localhost / hello, но, поскольку нет флага L, перенаправление to localhost / привет находится в режиме ожидания, таким образом, он идет ниже

Шаблон второй строки "anchor" не совпадает с новым http: // localhost / hello, так что это пропускается

шаблон / hello третьей строки соответствует localhost / hello и, наконец, перенаправляется на localhost / yes

Вещи, как я, пока я не вижу пример ниже Пример 2:

RewriteRule foo/bar /tmp1/ [R]
RewriteRule foo/bar /tmp2/ [R]
RewriteRule (.+) /tmp3/ [R]
RewriteRule (.+) /tmp4/ [R]
RewriteRule hello /tmp6/ [R]
RewriteRule bar /tmp7/ [R]
RewriteRule hello /tmp8/ [R]
RewriteRule tmp7/ /tmp5/ [R]

то же самое местоположение файла htaccess, я нажал URL localhost / h / foo / bar, я думал, что это происходит
1. шаблон первой строки "foo / bar" совпадает с url, поэтому он перенаправляет на http: // localhost / tmp1 /, но, поскольку L не существует, он удерживается, он идет ниже

Шаблон второй строки "foo / bar" не совпадает с http: // localhost / tmp1 /, поэтому он пропущен (если я удаляю все строки, кроме первых двух, я вижу последние перенаправления на http: // localhost / tmp1 /)

шаблон третьей строки совпадает с http: // localhost / tmp1 / и превращается в http: // localhost / tmp3 /

соответствует шаблону четвертой строки, перенаправьте на http: // localhost / tmp4 /

перенаправления "hello" на пятой строке все еще - http: // localhost / tmp4 /

и теперь, что вращается в моей голове за последние 3 часа, это совпадения шестой строки "bar" .. и перенаправляет на http: // localhost / tmp7 / (удалите последние 2 строки, чтобы подтвердить), как?

седьмое не соответствует ожидаемому

восьмая строка tmp7 / соответствует http: // localhost / tmp7 / и, наконец, перенаправляет на http: // localhost / tmp5 /

теперь вопрос в том, почему «строка» 6-й строки совпадает и если она может совпадать с самой старой введенной ссылкой (http: // localhost / foo / bar), то почему она не совпадает во второй строке того же примера и почему она не совпадает во второй строке примера 1?

запомните все целевые шаблоны, указывающие на внешнюю сторону папки (в родительском, www, чтобы они не могли снова вернуться к файлу htaccess)

Ответы на вопрос(2)

Ваш ответ на вопрос