- mod_rewrite - странность с %{REQUEST_URI}, Pahanivo, 17:41 , 05-Мрт-11 (1)
- mod_rewrite - странность с %{REQUEST_URI}, reivaX, 23:25 , 05-Мрт-11 (3)
> а что параллельно говорит access.log ? :) А, что и должен, по типу: 127.0.0.1 - - [05/Mar/2011:15:44:09 +0200] "GET /articles.php?id=134 HTTP/1.1" 404 210 127.0.0.1 - - [05/Mar/2011:15:50:25 +0200] "GET /articles.php?id=134 HTTP/1.1" 404 210 Файла нету, да и быть не обязан.
- mod_rewrite - странность с %{REQUEST_URI}, Aquarius, 19:09 , 05-Мрт-11 (2)
- mod_rewrite - странность с %{REQUEST_URI}, reivaX, 23:33 , 05-Мрт-11 (4)
> а маскировать ничего не надо?Не уверен - там же типа лексическое равенство, эт опытно проверить надо, в принципе. Но в данном случае роли никакой не играет - это я еще на Мастерхосте сперва мучился, там маскировать пробовал по всякому, а потом на локале тестировать начал, т.к. зацепило, а на мастерхосте не логируется mod_rewrite. Ключевое там - что в инпуте идет "RewriteCond: input='/articles.php'", так что паттерн не важен. Вот, кстати, полный лог: 127.0.0.1 - - [05/Mar/2011:15:43:52 +0200] [/sid#7f7a06af8d98][rid#7f7a06ee0e38/initial] (1) [perdir /var/www/htdocs/] pass through /var/www/htdocs/articles.php 127.0.0.1 - - [05/Mar/2011:15:44:09 +0200] [/sid#7f7a06af8d98][rid#7f7a06eeffa8/initial] (3) [perdir /var/www/htdocs/] strip per-dir prefix: /var/www/htdocs/articles.php -> articles.php 127.0.0.1 - - [05/Mar/2011:15:44:09 +0200] [/sid#7f7a06af8d98][rid#7f7a06eeffa8/initial] (3) [perdir /var/www/htdocs/] applying pattern '^.*$' to uri 'articles.php' 127.0.0.1 - - [05/Mar/2011:15:44:09 +0200] [/sid#7f7a06af8d98][rid#7f7a06eeffa8/initial] (4) [perdir /var/www/htdocs/] RewriteCond: input='' pattern='=/articles.php?id=134' => not-matched А вот как приходит в "правильной" проверке через %{THE_REQUEST} 127.0.0.1 - - [05/Mar/2011:16:20:48 +0200] [/sid#7f7a06af8d98][rid#7f7a06eeffa8/initial] (4) [perdir /var/www/htdocs/] RewriteCond: input='GET /articles. php?id=134 HTTP/1.1' pattern='^[A-Z]{3,9}\ /articles\.php\?id=134\ HTTP/' => matched
- mod_rewrite - странность с %{REQUEST_URI}, Aquarius, 02:57 , 06-Мрт-11 (5)
- mod_rewrite - странность с %{REQUEST_URI}, Aquarius, 02:59 , 06-Мрт-11 (6)
- mod_rewrite - странность с %{REQUEST_URI}, reivaX, 23:11 , 06-Мрт-11 (8)
> ну так и почувствуйте разницу: точки, пробелы, слэши и вопросительный знак замаскированы у вас просто повысказываться потребность существует? еще раз рекомендую посмотреть на то, что в input-е по логам приходит, а не на то, что по pattern-у сверяется. таки почувствуйте разницу. ой-вэй.
- mod_rewrite - странность с %{REQUEST_URI}, zoonman, 17:45 , 06-Мрт-11 (7)
- mod_rewrite - странность с %{REQUEST_URI}, reivaX, 23:16 , 06-Мрт-11 (9)
> А что-то в articles.php мешает дописать следующее > if ($_GET['id'] == 1) { > header("Location: http://opennet.ru/"); > } Например то, что вопрос мой касается поведения mod_rewrite, а не того, как мне решить задачу (решенную сразу), тем более что в теме это указано явно.
- mod_rewrite - странность с %{REQUEST_URI}, zoonman, 23:25 , 06-Мрт-11 (10)
- mod_rewrite - странность с %{REQUEST_URI}, reivaX, 00:00 , 07-Мрт-11 (11)
> Если задача решена, то какой смысл в применении mod_rewrite? Спортивный интерес?Смысл в том, чтобы понимать как что работает. "но хотелось бы понять, почему $_SERVER['REQUEST_URI'] в php содержит логичное "/articles.php?id=1", а для mod_rewrite QUERY часть, получается, отбрасывается." Учитывая то, что я перерыл по ходу оф. документацию, и как только мог придумать прогуглил, туманность этой мелочной заподлистости хотелось бы рассеять. К тому же день спустя опять затык другого свойства, опять же на REQUEST_URI, но там доступа к логам нет никакого, потому только по симптоматике вижу, что фигня творится. Где-то что-то мимоходом проскакивало про изменения в Apache 2.x, но без конкретики.
- mod_rewrite - странность с %{REQUEST_URI}, zoonman, 00:45 , 07-Мрт-11 (12)
- mod_rewrite - странность с %{REQUEST_URI}, zoonman, 01:18 , 07-Мрт-11 (13)
- mod_rewrite - странность с %{REQUEST_URI}, reivaX, 01:56 , 07-Мрт-11 (14)
> Заинтересовали вы меня))) > RewriteEngine on > RewriteCond %{REQUEST_URI} /articles.php > RewriteCond %{QUERY_STRING} id=1 > RewriteRule (.*) 1.php Нет, ну вы правы, конечно - ваша конструкция сработает, как и использованная мною RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /articles\.php\?id=134\ HTTP/ Но вопрос-то в том, чтобы понять, на основании чего появляется разница в представлении REQUEST_URI для mod_rewrite, и для, скажем просто, модуля php. Т.е. понимая проявление проблемы, меня главным образом зацепило то, что ничего не могу найти на этот счет в документации. Ведь если URI - это Uniform Resource Identifier, то идентифицировать-то оно должно по полному адресу запроса, т.е. содержать в REQUEST_URI /articles.php?id=1 В смысле - мол, ну какой же это REQUEST_URI, если это скорее SCRIPT_FILENAME или REQUEST_FILENAME Лично мне это важно выяснить поскольку возможности для отладки правил m_r крайне скудны.
|