Форум программистов, компьютерный форум, киберфорум
Наши страницы
Apache, htaccess
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
Jin X
5289 / 1456 / 169
Регистрация: 14.12.2014
Сообщений: 2,810
Записей в блоге: 11
Завершенные тесты: 3
1

RewriteRule - заменить часть адреса

21.07.2016, 20:10. Просмотров 1959. Ответов 18
Метки нет (Все метки)

Помогите заменить адрес site.ru/en/hello/abc на:
site.ru/?english&hello&abc

То есть слово en заменяется на english, остальное передаётся как есть, только слэши заменяются на "&" и в начале ставится "?"
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.07.2016, 20:10
Ответы с готовыми решениями:

RewriteCond влияет толко для один, следушчи RewriteRule. можно как-то превишать количество RewriteRule
здраствуите, вот что интересно, сделаю mod_rewrite и для етого в .htaccess фаиле пишу ...

Убрать часть QUERY_STRING из адреса
Навеяло отсюда: http://www.cyberforum.ru/apache/thread802069.html Аналогичная проблема. Помогите...

Заменить часть урл при помощи .htaccess
Допустим есть такой адрес example.com/admin Для такого адреса в htaccess устанавливаем правило,...

Часть 1. Делаем смену mac адреса на c#
Всем привет! Многие говорят что на шарпе поменять адреса мака просто не возможно, но господа,...

Как скрыть часть адреса из URI?
Добрый вечер, назрел один вопрос, найти ответ на который мне не представляется возможным в виду...

18
Emilien
658 / 472 / 276
Регистрация: 07.11.2015
Сообщений: 769
21.07.2016, 21:01 2
Код
RewriteRule ^en/([^/]+)/([^/]+) /?english&$1&$2 [R=301,L]
0
Jin X
5289 / 1456 / 169
Регистрация: 14.12.2014
Сообщений: 2,810
Записей в блоге: 11
Завершенные тесты: 3
21.07.2016, 22:33  [ТС] 3
Emilien, спасибо, только, пардон, я неправильно задачу сформулировал
В первую очередь, хочу сказать, что R=301 здесь не нужен – это точно, надо ссылку сохранить как есть.

Есть несколько адресов, передающиеся через слэш, которые должны преобразовываться в GET-параметры, т.е.

site.ru/en -> site.ru/?english
site.ru/hello -> site.ru/?hello
site.ru/m -> site.ru/?abc
и т.д.

Проблема в том, что все эти параметры должны работать совместно, т.е.:
site.ru/en/m -> site.ru/?english&abc
site.ru/m/en/hello -> site.ru/?abc&english&hello

И даже так:
site.ru/en?bye -> site.ru/?english&bye

Как это сделать?
0
Emilien
658 / 472 / 276
Регистрация: 07.11.2015
Сообщений: 769
22.07.2016, 05:18 4
Сначала преобразовать m -> abc и en -> english, а уже потом преобразовать всё в GET-параметры.
Код
RewriteRule ^(|.*?/)en($|/.*) $1english$2
RewriteRule ^(|.*?/)m($|/.*)  $1abc$2

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/?([^/]*)/?([^/]*) /?$1&$2&$3 [QSA]
1
22.07.2016, 05:18
Jin X
5289 / 1456 / 169
Регистрация: 14.12.2014
Сообщений: 2,810
Записей в блоге: 11
Завершенные тесты: 3
22.07.2016, 12:57  [ТС] 5
Спасибо. Но тут есть нюанс: если я напишу site.ru/blabla, то он преобразуется в site.ru?blabla, верно?
А мне так не надо. Надо, чтобы преобразовывались только известные строки.

Давайте сделаем так:
site.ru/en/hello/m?ЛюбойЗапрос
именно в этом порядке, но любой из элементов en, hello или abc может отсутствовать.

Делаю так:
Код
RewriteRule	^en(|/.*)$	/$1?english	[QSA]
RewriteRule	^hello(|/.*)$	/$1?hello	[QSA]
RewriteRule	^m(|/.*)$	/$1?abc	[QSA]
Всё нормально, кроме того, что параметры выводятся в обратном порядке. Т.е. если задать site.ru/en/hello/m?def, то получится site.ru?abc&hello&english&def
Как сделать правильный порядок?
0
Emilien
658 / 472 / 276
Регистрация: 07.11.2015
Сообщений: 769
22.07.2016, 20:24 6
Код
^(?:(?:en|hello|m)(?:$|/))+$
Это выражение допускает разные комбинации из en, hello, m.
m/en
hello
en/hello/m
m/m/m/m


И вот как-то так хитро преобразовывать.
Код
RewriteCond "&english $1 &hello $2 &abc $3" "^(?:(&\S+) \S|&)[^&]*(?:(&\S+) \S|&)[^&]*(?:(&\S+) \S|&)[^&]*"
RewriteCond %1%2%3 &(.+)
RewriteRule ^(?:(?:(en)|(hello)|(m))(?:$|/))+$ /?%1 [QSA]
0
Jin X
5289 / 1456 / 169
Регистрация: 14.12.2014
Сообщений: 2,810
Записей в блоге: 11
Завершенные тесты: 3
22.07.2016, 22:12  [ТС] 7
Ема... тут поллитра нужно как минимум...

Добавлено через 34 секунды
А можно упростить это? Т.е. взять
Код
RewriteRule ^en(|/.*)$  /$1?english [QSA]
RewriteRule ^hello(|/.*)$   /$1?hello   [QSA]
RewriteRule ^m(|/.*)$   /$1?abc [QSA]
и сделать так, чтобы параметры не задом наперёд шли, а по порядку...?
0
Emilien
658 / 472 / 276
Регистрация: 07.11.2015
Сообщений: 769
22.07.2016, 22:28 8
Если вместо QSA использовать переменную %{QUERY_STRING}, то потом в строке могут быть лишние &&
Код
RewriteRule ^en(|/.*)$  /$1?%{QUERY_STRING}&english
0
Jin X
5289 / 1456 / 169
Регистрация: 14.12.2014
Сообщений: 2,810
Записей в блоге: 11
Завершенные тесты: 3
22.07.2016, 22:58  [ТС] 9
Стрёмно выглядит, но почему это не работает???
Код
RewriteCond	%{QUERY_STRING}	^\??$
RewriteRule	^en(/.*)?$	/$1?english
RewriteCond	%{QUERY_STRING}	^(.+)$
RewriteRule	^en(/.*)?$	/$1%1&english

RewriteCond	%{QUERY_STRING}	^\??$
RewriteRule	^hello(/.*)?$	/$1?hello
RewriteCond	%{QUERY_STRING}	^(.+)$
RewriteRule	^hello(/.*)?$	/$1%1&hello

RewriteCond	%{QUERY_STRING}	^\??$
RewriteRule	^m(/.*)?$	/$1?abc
RewriteCond	%{QUERY_STRING}	^(.+)$
RewriteRule	^m(/.*)?$	/$1%1&abc
0
Emilien
658 / 472 / 276
Регистрация: 07.11.2015
Сообщений: 769
23.07.2016, 00:48 10
%{QUERY_STRING} не содержит знак вороса.

Добавлено через 1 час 42 минуты
Код
RewriteRule ^(|.*?/)m/?$      $1?abc   [QSA,DPI]
RewriteRule ^(|.*?/)hello/?$  $1?hello [QSA,DPI]
RewriteRule ^en/?$            ?english [QSA,DPI]
Или так
Код
RewriteRule ^(|.*?/)m(?:$|/(.*))      $1$2?abc     [QSA,DPI]
RewriteRule ^(|.*?/)hello(?:$|/(.*))  $1$2?hello   [QSA,DPI]
RewriteRule ^(|.*?/)en(?:$|/(.*))     $1$2?english [QSA,DPI]
1
Jin X
5289 / 1456 / 169
Регистрация: 14.12.2014
Сообщений: 2,810
Записей в блоге: 11
Завершенные тесты: 3
23.07.2016, 14:14  [ТС] 11

А зачем в данном случае нужен [DPI], что он делает?
Пипец, фиг разберёшься, как этот RewriteRule работает... то подставляет полный путь, то не подставляет, то перезапускается весь процесс заново (с первого правила), то не перезапускается... Ужас! В итоге вообще какая-то кракозябра получается.

Почему не работает вот такая конструкция:
Код
RewriteRule	^en(/.*)?$	$1	[E=QP:english&]
RewriteRule	^ru(/.*)?$	$1	[E=QP:%{ENV:QP}russian&]
RewriteRule	^hello(/.*)?$	$1	[E=QP:%{ENV:QP}hello&]
RewriteRule	^m/?$		/?abc	[QSA]

RewriteCond	%{ENV:QP}	(.+)
RewriteRule	^(.*)$		$1?%1	[QSA,L]
???

Я вот ума не приложу, почему в данном случае при запросе /en/hello/m?111 получается бредятина /m/hello/m/m/hello/m?hello&&english&&111. А если добавить везде DPI (кроме строки с "m"), то /m?hello&&english&&111
А если заменить "m" на конструкцию аналогичную предыдущим 3-м, то получается вообще /home/бла-бла-бла/html/?abc&&hello&&english&&111 (с DPI... а без DPI оооочень длинная строка).

Добавлено через 19 минут
Или такая байда получается, только если поставить R=301 (именно так и смотрю, иначе не знаю как проверить)?
0
Emilien
658 / 472 / 276
Регистрация: 07.11.2015
Сообщений: 769
23.07.2016, 19:36 12
Сделать правильный порядок с флагом QSA можно, если расположить правила в обратном порядке.
Чем не устривает этот вариант?
Код
RewriteRule ^(|.*?/)m(?:$|/(.*))      $1$2?abc     [QSA,DPI]
RewriteRule ^(|.*?/)hello(?:$|/(.*))  $1$2?hello   [QSA,DPI]
RewriteRule ^(|.*?/)en(?:$|/(.*))     $1$2?english [QSA,DPI]
/en/hello/m?def -> /?english&hello&abc&def
/hello/m/en?def -> /?english&hello&abc&def
0
Jin X
5289 / 1456 / 169
Регистрация: 14.12.2014
Сообщений: 2,810
Записей в блоге: 11
Завершенные тесты: 3
23.07.2016, 21:18  [ТС] 13
Я хочу, чтобы порядок QS соответствовал порядку в URL, а не просто в том порядке, как мне хочется.
И в идеале – чтоб URL можно было задать именно в нужном мне порядке, т.е. первый - "en" (или "ru", кстати), затем "hello", а затем "m".
Т.е. под нужным порядком я подразумеваю, в первую очередь, не порядок получаемых QS, а порядок возможного указания URL.

Кстати, есть ещё интересный параметр:
Код
RewriteRule ^(e|t|s)/?$ /send.php?$1 [QSA]
Вот как с ним быть?
Т.е. если я задам /en/hello/e ("e", "t" или "s" - это альтернатива "m", т.е. либо "e", либо "m"), то в итоге должно быть send.php?english&hello&e
p.s. Вариант /en/hello?go должен выдавать /?english&hello&go

А вот всякие там извращения типа /en/ru/hello или /hello/ru/en/m/e должны выдавать 404...

Добавлено через 11 минут
Т.е. фактически /en/ru/hello должен выдать /ru/hello?english, что есть 404. Но проблема в том, что Apache ещё раз выполнит обработку правил и /ru превратится в ?russian

Но это ладно. Если это проблематично, то хотя бы пусть QS формируется в том же порядке, в каком задан URL...
0
Emilien
658 / 472 / 276
Регистрация: 07.11.2015
Сообщений: 769
24.07.2016, 05:55 14
Лучший ответ Сообщение было отмечено Jin X как решение

Решение

Цитата Сообщение от 7in Посмотреть сообщение
А вот всякие там извращения типа /en/ru/hello или /hello/ru/en/m/e должны выдавать 404...
На этот счет есть такая идея
Код
RewriteCond %{REQUEST_URI} ^(?:(?:(/en|/ru)|(/hello)|(/m|/e|/t|/s)))+$ 
RewriteCond "%1%2%3 %{REQUEST_URI}" "^(\S+) (?!\1$)"
RewriteRule ^ - [R=404,L]
При любых перестановках частей адреса /en или /ru попадает в %1, /hello в %2 и тд.
Из переменных формируем адрес в правильном порядке и через пробел дописываем исходный адрес в %{REQUEST_URI}.
Далее регуляркой "^(\S+) (?!\1$)" сравниваем правильный адрес и %{REQUEST_URI}.
Если запрошен неверный адрес отдаем ошибку 404.
Остальное еще надо додумать.

Добавлено через 7 часов 43 минуты
Вот такой тестовый вариант
Код
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{REQUEST_URI} ^(?:(/en|/ru)|(/hello)|(/m|/e|/t|/s)|/[^/]+)+
RewriteCond "%1%2%3 %{REQUEST_URI}" "^(\S*) (?!\1$)"
RewriteRule ^ - [R=404,L]

RewriteRule ^(.*?/)?(e|t|s)(/.*)?$       $1send.php$3?$2 [QSA,DPI]

RewriteRule ^(|.*?/)m(?:$|/(.*))         $1$2?abc     [QSA,DPI]
RewriteRule ^(|.*?/)hello(?:$|/(.*))     $1$2?hello   [QSA,DPI]
RewriteRule ^(|.*?/)en(?:$|/(.*))        $1$2?english [QSA,DPI]
RewriteRule ^(|.*?/)ru(?:$|/(.*))        $1$2?russian [QSA,DPI]

# test
RewriteRule ^(.*) /$1 [R=302,L]
/en/hello/e -> /send.php?english&hello&e
/en/hello?go -> /?english&hello&go

/en/ru/hello -> 404


Включение отладки для mod_rewrite в Apache 2.4 http://httpd.apache.org/docs/2.4/mod/mod_rewrite.html#logging
Можно в VirtualHost добавить включение отладки по условию. Проверять какй-нибудь заголовок или куки.
Код
        <if "-n req('Debug')">
                LogLevel alert rewrite:trace4
        </if>
Открыть пару вкладок консоли.
В одной вкладке делать запрос курлом.
curl -i -H "Debug:1" site.ru/ru/hello

А в другой настроить чтение лога.
tail -f error_log |cut -d] -f1,7-
1
Jin X
5289 / 1456 / 169
Регистрация: 14.12.2014
Сообщений: 2,810
Записей в блоге: 11
Завершенные тесты: 3
24.07.2016, 17:44  [ТС] 15
СПАСИБО !!!!!!

Усовершенствовал код немного:
Код
RewriteCond	%{ENV:REDIRECT_STATUS}	^$
RewriteCond	%{REQUEST_URI}	^(?:(/en|/ru)|(/hello)|(/[mets])|/[^/]+)+
RewriteCond	"%1%2%3 %{REQUEST_URI}"	"^(\S*) (?!\1/?$)"
RewriteCond	%{REQUEST_FILENAME}	!-f
RewriteCond	%{REQUEST_FILENAME}	!-d
RewriteRule	^	-	[R=404,L]
 
RewriteRule	^(.*/)?([ets])/?$	$1send.php?$2	[QSA,DPI]
RewriteRule	^(.*/)?m/?$	$1?abc		[QSA,DPI]
RewriteRule	^(.*/)?hello(?:/(send.php))?$	$1$2?hello	[QSA,DPI]

RewriteRule	^en(?:/(.*))?/?$	$1?english	[QSA,DPI]
RewriteRule	^ru(?:/(.*))?/?$	$1?russian	[QSA,DPI]
Теперь всё работает. В том числе со слэшами на конце. И открывает файлы/папки, если они есть...

Есть несколько вопросов:
1. Что нам даёт RewriteCond %{ENV:REDIRECT_STATUS} ^$ и как это работает?
2. Вы использовали ленивую конструкцию (|.*?/) – в этом есть какой-то особый смысл?
3. Ощущение, что RewriteCond "%1%2%3 %{REQUEST_URI}" "^(\S*) (?!\1/?$)" можно упростить до RewriteCond %{REQUEST_URI} !^%1%2%3/?$
Но такая конструкция почему-то не работает. Почему? В чём разница?

Добавлено через 16 минут
Ошибся в строке 10:
RewriteRule ^(.*/)?hello(?:/(send.php)?)?$ $1$2?hello [QSA,DPI]

Добавлено через 3 минуты
Про п.1 понял о чём речь, но зачем оно нам здесь? Попробовал без него – работает. Хотя, может, я что-то не учёл?
0
Emilien
658 / 472 / 276
Регистрация: 07.11.2015
Сообщений: 769
24.07.2016, 19:47 16
Цитата Сообщение от 7in Посмотреть сообщение
Что нам даёт RewriteCond %{ENV:REDIRECT_STATUS} ^$ и как это работает?
%{ENV:REDIRECT_STATUS} пустая только при первом проходе.
Апач снова и снова запускает обработку всех правил. Процесс завершается, когда после очередного прохода адрес не изменился или был внешний редирект (сработало правило с R=301) или число повторов превысило LimitInternalRecursion.
Нужно исключить срабатывание при повторном проходе, когда в %{REQUEST_URI} уже /send.php.
Добавление проверок на существование файла решает эту проблему.

Цитата Сообщение от 7in Посмотреть сообщение
Вы использовали ленивую конструкцию (|.*?/) – в этом есть какой-то особый смысл?
Особого смысла нет. Просто сначала использовал такую конструкцию, а потом копипастил из предыдущих своих правил.

Цитата Сообщение от 7in Посмотреть сообщение
Ощущение, что RewriteCond "%1%2%3 %{REQUEST_URI}" "^(\S*) (?!\1/?$)" можно упростить до RewriteCond %{REQUEST_URI} !^%1%2%3/?$
Но такая конструкция почему-то не работает. Почему? В чём разница?
RewriteCond TestString Pattern
Подстановка переменных есть только в TestString.
0
Jin X
5289 / 1456 / 169
Регистрация: 14.12.2014
Сообщений: 2,810
Записей в блоге: 11
Завершенные тесты: 3
24.07.2016, 21:51  [ТС] 17
Цитата Сообщение от Emilien Посмотреть сообщение
RewriteCond TestString Pattern
Подстановка переменных есть только в TestString.
Т.е. в Pattern нельзя задать ни %1, ни %{REQUEST_URI} ?

Ещё у меня есть некоторая путаница в голове с путями...
• Никак не пойму как работает [DPI], что есть PATH_INFO и в каком случае он добавляется, а в каком – нет?

• Правильно ли я понимаю...?

а) Сервер берёт базовый путь к сайту (/home/site/html/, например), добавляет к нему %{REQUEST_URI} и использует получившуюся строку для поиска файла (html/php и пр), который ему необходимо обработать. Если не было никаких преобразований, разумеется.
Если есть RewriteRule, сервер отбрасывает этот "базовый путь" (включая слэш, т.е. в первый раз фактически %{REQUEST_URI} без начального слэша) и сравнивает его с с шаблоном в первом параметре и заменяет полностью на второй параметр. После этого добавляет в начало опять этот "базовый путь" (/home/site/html/), если домен не изменился, конечно же (http://бла-бла-бла).
Если указано [R=301], то он вместе с этим "базовым путём" он его и передаёт (и тут появляются глюки). А вот если второй параметр RewriteRule начинается со слэша, то для R=301 "базовый путь" не добавляется.

б) Если указан RewriteBase, то вместо /home/site/html/ используется этот RewriteBase. Правда, в самом конце (когда всё обработано) базовый адрес всё равно добавляется (если нет R=301).
Т.о... если задать RewriteBase / и RewriteRule 1 2, то при обращении к ссылке 1 будет отображён файл 2. При указании [R=301] мы увидим в браузере 2. Если же RewriteBase не указывать, то без [R=301] будет то же самое, а вот при [R=301] мы получим в строке браузера полный путь к файлу: /home/site/html/2.

в) RedirectMatch и Redirect получают то же самое, что и RewriteRule, только со слэшем в начале.

г) Если были какие-либо изменения, процесс повторяется в самого начала файла htaccess...
0
Emilien
658 / 472 / 276
Регистрация: 07.11.2015
Сообщений: 769
25.07.2016, 05:47 18
Код
RewriteCond %{REQUEST_URI}  ^(?:(/en|/ru)|(/hello)|(/[mets])|/[^/]+)+
RewriteCond "%1%2%3 %{REQUEST_URI}" "^(\S*) (?!\1/?$)"
Если подумать, то %1%2%3 всегда соберут правильный урл. Но такая конструкция нужна только при необходимости делать редирект на правильный урл.
/e/blabla/hello -> /hello/e

А если нужно только проверить, то сойдет такое правило
Код
RewriteCond %{REQUEST_URI} !^(/en|/ru)?(/hello)?(/[mets])?/?$
Цитата Сообщение от 7in Посмотреть сообщение
Т.е. в Pattern нельзя задать ни %1, ни %{REQUEST_URI} ?
Автоматической подстановки содержимого переменных там не будет.

Цитата Сообщение от 7in Посмотреть сообщение
Ещё у меня есть некоторая путаница в голове с путями...
• Никак не пойму как работает [DPI], что есть PATH_INFO и в каком случае он добавляется, а в каком – нет?
Я не вникал как эта штука работает. В документации про DPI сказано так
Кликните здесь для просмотра всего текста

The DPI flag causes the PATH_INFO portion of the rewritten URI to be discarded.

This flag is available in version 2.2.12 and later.

In per-directory context, the URI each RewriteRule compares against is the concatenation of the current values of the URI and PATH_INFO.

The current URI can be the initial URI as requested by the client, the result of a previous round of mod_rewrite processing, or the result of a prior rule in the current round of mod_rewrite processing.

In contrast, the PATH_INFO that is appended to the URI before each rule reflects only the value of PATH_INFO before this round of mod_rewrite processing. As a consequence, if large portions of the URI are matched and copied into a substitution in multiple RewriteRule directives, without regard for which parts of the URI came from the current PATH_INFO, the final URI may have multiple copies of PATH_INFO appended to it.

Use this flag on any substitution where the PATH_INFO that resulted from the previous mapping of this request to the filesystem is not of interest. This flag permanently forgets the PATH_INFO established before this round of mod_rewrite processing began. PATH_INFO will not be recalculated until the current round of mod_rewrite processing completes. Subsequent rules during this round of processing will see only the direct result of substitutions, without any PATH_INFO appended.


Цитата Сообщение от 7in Посмотреть сообщение
RedirectMatch и Redirect получают то же самое, что и RewriteRule, только со слэшем в начале.
RedirectMatch и Redirect получают всегда адрес относительно корня, а RewriteRule относительно той папки где лежит htaccess.
Да и вообще RedirectMatch и Redirect это директивы mod_alias, а не mod_rewrite. При одновременном использовании этих модулей есть подвох.
Если правила mod_rewrite что-то поменяли в GET-параметрах это влияет на результат работы mod_alias.
Например:
Redirect / http://site.ru/
RewriteRule ^ index.php?bar
При запросе /page редирект будет на /page?bar.
0
Jin X
5289 / 1456 / 169
Регистрация: 14.12.2014
Сообщений: 2,810
Записей в блоге: 11
Завершенные тесты: 3
25.07.2016, 12:16  [ТС] 19
Цитата Сообщение от Emilien Посмотреть сообщение
Я не вникал как эта штука работает. В документации про DPI сказано так
Да я читал, только не совсем понял, особенно вот это:
In contrast, the PATH_INFO that is appended to the URI before each rule reflects only the value of PATH_INFO before this round of mod_rewrite processing.
И самое главное – что есть PATH_INFO (на примере)?
Я видел вот такое описание в одной документации по mod_rewrite:
PATH_INFO - Содержит предоставленный пользователем путь, который содержится после имени скрипта, но до строки запроса (?). Например, если скрипт был запрошен по URL http://www.example.com/php/path_info.php/some/stuff?foo=bar, то переменная $_SERVER['PATH_INFO'] будет содержать /some/stuff.
Но о каком скрипте тут может идти речь? Здесь есть .htaccess. Значит, либо это путь от .htaccess (что странно – где же он подставляется?), либо до .htaccess (причём, либо от корня сайта, либо от корня сервера), либо от корня сервера до корня сайта (/home/site/html/)...

В чём смысл того, что RewriteRule (.*) $1 [R=301] добавляет /home/site/html к адресу сайта (причём, только в том случае, когда RewriteBase отсутствует)?

Цитата Сообщение от Emilien Посмотреть сообщение
При запросе /page редирект будет на /page?bar.
На http://site.ru/page.php?bar ???
Разве Redirect срабатывает не сразу (типа [R,L]) ?
Это баг или что?

А что, кстати, происходит, когда задан [R], но без [L]. Редирект откладывается на самый конец? Т.е. если хоть раз попался [R], то редирект происходит после текущей обработки .htaccess или что?

И в каком случае происходит перезапуск обработки .htaccess? Когда URL реально изменился или когда хотья 1 правило сработало? Т.е. я могу написать, например, тот же RewriteRule ^ index.php?bar – ссылка изменится в 1-й раз, но не изменится во второй...

И ещё интересует вот что: [OR] в RewriteCond объединяет (для ИЛИ) только два соседних условия или все условия "до" и все "после"? Т.е. в RewriteCond больший приоритет у OR или у AND ?

Добавлено через 25 минут
Кстати, я тут нашёл флаг [END]. Получается, что:
Цитата Сообщение от 7in Посмотреть сообщение
RewriteCond %{ENV:REDIRECT_STATUS}* ^$
можно заменить на:
Код
RewriteRule ^ - [END]
в конце файла (если там где-нибудь нет [L] или [N], конечно же)
0
25.07.2016, 12:16
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.07.2016, 12:16

Почему выводит адреса, а не значения? Это часть программы
Лабораторная работа, должны выводиться значения массива, но выводятся адреса

Заменить значение у адреса памяти процесса
Нужно заменить значение у адреса памяти процесса игры. Как это реализовать? Прошу пример кода или...

Заменить часть текста
Подскажите мне нужно что бы edit присвоило за месть текста в скобках IdSmtp1.Username:='viktor';...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru