|
|
|
|
|
для: Alph[p]a
(13.04.2011 в 14:40)
| | >где REQUEST_FILENAME - это что ?
REQUEST_FILENAME - это имя файла к которому вы обращаетесь. | |
|
|
|
|
|
|
|
для: Alph[p]a
(13.04.2011 в 14:40)
| | >что здесь захватывает маска (.*) ?
Все захватывает. Это условие захватывает всю строку запроса (правда из-за RewriteRule отсекаются все GET-запросы, т.е. ? и все дальше). | |
|
|
|
|
|
|
|
для: cheops
(13.04.2011 в 14:21)
| | вроде понял... но еще один момент...
вот
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) index.php?run=$1 [L]
|
RewriteCond - определяет условие ??! где REQUEST_FILENAME - это что ? и
RewriteRule (.*) index.php?run=$1 [L] - что здесь захватывает маска (.*) ?
человеческим языком не могу описать.... если понятно то поясните и это. | |
|
|
|
|
|
|
|
для: Alph[p]a
(13.04.2011 в 14:13)
| | Дело в том, что первое правило
RewriteRule (.*) index.php?run=$1&q=%1 [L]
| сработает только если будет выполнено условие
RewriteCond %{QUERY_STRING} ^q=(.*)
| Т.е. в строке запроса появится фрагмент ?q=, если такого фрагмента нет, то обработчик модуля mod_rewrite идет дальше к правилу
RewriteRule (.*) index.php?run=$1 [L]
| Аналогично наоборот, если в строке запроса есть ?q=, то сработает первое правило (RewriteRule), а [L] не даст mod_rewrite идти дальше.
>откуда строчка RewriteRule (.*) index.php?run=$1&q=%1 [L] получает $1 если оно описывается
>только тут RewriteRule (.*) index.php?run=$1 [L]... извините за бред...
На самом деле $1 это просто ссылка на первые скобки в RewriteRule, у вас два RewriteRule и у каждого есть скобки (.*), именно на них ссылается $1. | |
|
|
|
|
|
|
|
для: cheops
(13.04.2011 в 13:53)
| |
.........
RewriteCond %{QUERY_STRING} ^q=(.*)
RewriteRule (.*) index.php?run=$1&q=%1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) index.php?run=$1 [L]
.........
|
RewriteRule (.*) index.php?run=$1&q=%1 [L] - здесь ссылка на RewriteRule (.*) index.php?run=$1 [L]
интересно... если стоит флаг [L] у RewriteRule (.*) index.php?run=$1&q=%1 [L]
то как он ПОЛУЧАЕТ $1 если он должен прекращать поиск из за флага...
откуда строчка RewriteRule (.*) index.php?run=$1&q=%1 [L] получает $1 если оно описывается только тут RewriteRule (.*) index.php?run=$1 [L]... извините за бред...
сможете пояснить? | |
|
|
|
|
|
|
|
для: Alph[p]a
(13.04.2011 в 13:40)
| | %1 это из регулярного выражения RewriteCond. Дело в том, что RewriteRule отсекает все, что после ?, и добраться до GET-параметров можно только через парсинг строки запроса %{QUERY_STRING} в RewriteCond. Причем ссылки на скобки в RewriteRule начинаются с $, а ссылки на скобки в RewriteCond начинаются с %. | |
|
|
|
|
|
|
|
для: cheops
(13.04.2011 в 13:19)
| | отлично, работает. большое человеческое спасибо за ваш бесценный опыт.
а вот
RewriteCond %{QUERY_STRING} ^q=(.*)
RewriteRule (.*) index.php?run=$1&q=%1 [L]
|
поясните это
%1 - что это такое и откуда? | |
|
|
|
|
|
|
|
для: Alph[p]a
(13.04.2011 в 13:01)
| | Т.е. у вас получается запрос вида
local/certificate/ajaxname?q=запрос
| преобразовать это дело надо в
index.php?run=certificate/ajaxname&q=запрос
| Тогда следует использовать следующие правила
RewriteEngine On
RewriteCond %{QUERY_STRING} ^q=(.*)
RewriteRule (.*) index.php?run=$1&q=%1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) index.php?run=$1 [L]
|
| |
|
|
|
|
|
|
|
для: cheops
(13.04.2011 в 12:02)
| | попытаюсь описать....
есть JS скрипт который при событии на странице local/certificate отсылаем данные гетом на страницу
local/certificate/ajaxname но на этой странице $_GET['q'] теряется как будто не доходит.
параметр run нужен контроллеру он трогаться не должен т.к он отображает страницу.
если я убираю htaccess и ставлю скрипту отсылать данные на index.php?run=certificate/ajaxname
то все работает.
помоги ув. хеопс | |
|
|
|
|
|
|
|
для: Alph[p]a
(13.04.2011 в 11:58)
| | Так, т.е. вы набираете просто localhost/certificate/? И certificate должно попасть в параметр q, и не должно попасть в параметр run? А какие критерии попадания в тот или иной параметр (у меня перед глазами вашей системы нет, поэтому нужно бы больше подробностей). | |
|
|
|
|