Сделано в Раскрутке

Архив эхоконференции RU.PHP

- RU.PHP ------------------------------------------------------------- RU.PHP -
 Msg  : #10080 [514]
 От   : Mithgol the Webmaster         2:6023/802.24       26 августа 04, 17:06
 Кому : Вячеслав Васильев                                 30 сентября 04, 01:00
 Тема : Передаём управление PHP-скрипту через RewriteRule
-------------------------------------------------------------------------------
Так было 07:00 03 Aug 04 написано от Вячеслав Васильев к Viktor V Kudlak:

 VVK>> RewriteEngine On
 VVK>> RewriteBase /
 VVK>> RewriteRule ^([0-9]+)\.html$ test.php?id=$1 [L]

 VVK>> Так должно pаботать.

 ВВ> Сплсибо, точно начала наpмально pаботать.

Запишу (чтобы самому потом не забыть, да и остальным польза оказалася) основные
оплошности, допущенные Васильевым в его собственном правиле, выглядевшем как
RewriteRule ^/([0-9]).html$ test.php?id=$1 [L]


Оплошность главная: строка не должна начинаться с косой черты, ибо сказано:

   Never forget that Pattern is applied to a complete URL in per-server
   configuration files. But in per-directory configuration files, the
   per-directory prefix (which always is the same for a specific directory!)
   is automatically removed for the pattern matching and automatically added
   after the substitution has been done. This feature is essential for many
   sorts of rewriting, because without this prefix stripping you have to match
   the parent directory which is not always possible.

   There is one exception: If a substitution string starts with ``http://''
   then the directory prefix will not be added and an external redirect or
   proxy throughput (if flag P is used!) is forced!

Именно из-за этого, насколько я понимаю, ничего не заработало: если директива
пребывает внутри .htaccess, то префикс каталога оказывается убран.


Оплошность второстепенная: точка является служебным символом в языке регулярных
выражений -- символом, означающим любой символ. Потому правило сработало бы не 
только на 3.html, но и на 3-html, и на 3xhtml; и потому точке предпосылается
обратная косая черта, если должна точка эта означать точку в буквальном смысле.


Оплошность третьестепенная (возможно, вообще не оплошность) состоит в том, что 
[0-9] соответствует только одной цифре; Кудлак задействовал [0-9]+, чтобы смочь
соответствовать многозначному числу.



Ceterum censeo Diptaunum esse delendam!                  http://mithgol.pp.ru/
Mithgol the Webmaster.  [Team В эхолисте ,,ё`` уместим]  [Team А я меняю subj]

... Долго будешь жить -- скоро состаришься.
--- Something is rotten in the state of Denmark.  (Shakespeare, Hamlet, I, IV)
 * Origin: Под знамёнами OpenSource -- к торжеству коммунизма! (2:6023/802.24)


При переходе по баннеру - скидка 25% на первый месяц обслуживания!
Самый простой способ получить ROOT-доступ
При переходе по баннеру - скидка 25% на первый месяц обслуживания!