Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Администрирование Web серверов и Web служб > .htaccess RewriteRule


Автор: GrizliK 11.10.2009, 17:04
Добрый день. У меня пару вопросов

1. Из разных источников получается противоречие

    из I:
        
Код

            RewriteRule /foo/(.*) /bar?arg=P1\%3d$1 [R,NE]
        


        для которого '/foo/zed' преобразовывалось бы в безопасный запрос '/bar?arg=P1=zed'. 
        
        то есть первая часть /foo/(.*) преобразуется во вторую /bar?arg=P1\%3d$1 [R,NE]

    из II:
        В следующем примере преобразуем www.site.ru/script.php?product=123 в www.site.ru/cat/product/123/:

        
Код

                RewriteRule cat/(.*)/(.*)/$ /script.php?$1=$2
        


        то есть уже вторая часть /script.php?$1=$2 преобразуется в первую cat/(.*)/(.*)/$

    Бред какой-то

2. Есть строка

    
Код

        RewriteRule _rel([0-9]+)\.html release.php?ms_releaseid=$1&%{QUERY_STRING}
    


    что в ней означает & и %{QUERY_STRING}

Заранее огромное спасибо!!!

Автор: Nigel 15.10.2009, 14:42
Символ конкатенации (&) разделяет переменные в строке запроса.
%{QUERY_STRING} обозначает строку запроса, как видно из названия.

Автор: Vaulter 15.10.2009, 21:50
следует обусловиться, что понимать под "преобразуется".
В контексте RewriteUrl:
есть строка запроса GET /foo/bar

Среди всех RewriteRule ищется такое условие, первая часть которого совпадает с запросом,
после этого, вычисляется вторая часть, учитываются модификаторы и т.д.
Т.о. в "прямом" смысле /foo/bar преобразуется в, например, запрос вида /bar?arg=P1\%3d$1 [R,NE]

Если же говорить, об "обратном" смысле, то, RewriteUrl "преобразует" те адреса, по которым будут доступны ресурсы (ссылки вида /bar?arg=P1\%3d$1) в другие, вида /foo/bar (указанные в первой части выражений)
 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)