<?xml version="1.0" encoding="koi8-r"?>
<rss version="0.91">
<channel>
    <title>OpenForum RSS: Универсальное правило Modrewrite</title>
    <link>https://opennet.me/openforum/vsluhforumID8/5632.html</link>
    <description>Доброго времени суток.&lt;br&gt;Eсть ссылки типа:&lt;br&gt;                           index.php?page=art&lt;br&gt;                           index.php?page=art&amp;subpage=pic&lt;br&gt;                           index.php?page=art&amp;subpage=pic&amp;sub2page=pic2&lt;br&gt;&lt;br&gt;преобразовать в человеческий вид не составляет труда:&lt;br&gt;                           /art.html&lt;br&gt;                           /art/pic.html&lt;br&gt;                           /art/pic/pic2.html&lt;br&gt;&lt;br&gt;Вопрос заключается вот в чем:&lt;br&gt;заранее не известна вложенность страниц. Как можно понять выше, структура может быть&lt;br&gt;                           /art-&amp;gt;element1&lt;br&gt;                           /art-&amp;gt;el1-&amp;gt;el2-&amp;gt;el3 ... -&amp;gt;eln&lt;br&gt;&lt;br&gt;для последнего варианта, когда не известна конкретная вложенность страниц, возможно ли написать какое-либо универсальное правило, которое будет динамически строить ссылки вида /art/el1/.../eln.html ?&lt;br&gt;</description>

<item>
    <title>Универсальное правило Modrewrite (Brabus)</title>
    <link>https://opennet.me/openforum/vsluhforumID8/5632.html#16</link>
    <pubDate>Tue, 25 Mar 2008 13:18:22 GMT</pubDate>
    <description>Спасибо :)&lt;br&gt;</description>
</item>

<item>
    <title>Универсальное правило Modrewrite (XAnder)</title>
    <link>https://opennet.me/openforum/vsluhforumID8/5632.html#15</link>
    <pubDate>Tue, 25 Mar 2008 12:02:15 GMT</pubDate>
    <description>&amp;gt;&amp;gt;&amp;gt;        RewriteCond &#037;&#123;REQUEST_URI&#125; ^/(files)/? &lt;br&gt;&amp;gt;&amp;gt;А &quot;/?&quot; ни о чём не говорит? &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;Конечно же говорит. Это позволяет одинаково работать путям с последним слешем и &lt;br&gt;&amp;gt;без него: &lt;br&gt;&amp;gt;/files и /files/&lt;br&gt;&lt;br&gt;А мне оно говорит, что под этот шаблон попадает и /files и /filesFailed и /files_что_угодно. Вообще здесь ^/(files)/? эквивалентно ^/(files) - угадай почему :)&lt;br&gt;&lt;br&gt;&amp;gt;Жаль, на самом деле интересная весчь. Искренне хочется врулить, почему же таки &lt;br&gt;&amp;gt;мой вариант не работает как надо. В теории вроде бы все &lt;br&gt;&amp;gt;ок :) &lt;br&gt;&lt;br&gt;Вещь интересная, но времени мало :(&lt;br&gt;&lt;br&gt;&amp;gt;Если уже решать это на PHP, мне кажется есть более компактное простое &lt;br&gt;&amp;gt;решение. Просто из адреса /files/cat1/ или /company/about/ берем название первого &quot;каталога&quot;, &lt;br&gt;&amp;gt;и смотрим, если не &quot;files&quot;, то name=content. А если &quot;files&quot; (и &lt;br&gt;&amp;gt;другие интересующие) - значит name=&#091;название&#093;. &lt;br&gt;&lt;br&gt;Так у меня ровно это и есть.&lt;br&gt;&lt;br&gt;&amp;gt;Однако хочется разрулить именно с модРеврайтом :) &lt;br&gt;&lt;br&gt;Попробуй. Если получится, буду рад за тебя.&lt;br&gt;</description>
</item>

<item>
    <title>Универсальное правило Modrewrite (Brabus)</title>
    <link>https://opennet.me/openforum/vsluhforumID8/5632.html#14</link>
    <pubDate>Tue, 25 Mar 2008 09:30:56 GMT</pubDate>
    <description>&amp;gt;&lt;br&gt;&amp;gt;А &quot;/?&quot; ни о чём не говорит? &lt;br&gt;&amp;gt;&lt;br&gt;&lt;br&gt;С этим разобрался. Прийдется явно указывать последний слеш...&lt;br&gt;</description>
</item>

<item>
    <title>Универсальное правило Modrewrite (Brabus)</title>
    <link>https://opennet.me/openforum/vsluhforumID8/5632.html#13</link>
    <pubDate>Tue, 25 Mar 2008 08:54:40 GMT</pubDate>
    <description>&amp;gt;&amp;gt;        RewriteCond &#037;&#123;REQUEST_URI&#125; ^/(files)/? &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;... &lt;br&gt;&amp;gt;&amp;gt;В name2 почему-то вопхнулось только первая часть названия каталога. Однако в RewriteCond &lt;br&gt;&amp;gt;&amp;gt;у нас явно указано &quot;files&quot; и ничего более. &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;А &quot;/?&quot; ни о чём не говорит? &lt;br&gt;&amp;gt;&lt;br&gt;&lt;br&gt;Конечно же говорит. Это позволяет одинаково работать путям с последним слешем и без него:&lt;br&gt;/files и /files/&lt;br&gt;Допустим, если &lt;br&gt;&lt;br&gt;&amp;gt;Лично у меня нет никакого желания разбираться в хитросплетениях работы mod_rewrite, поэтому&lt;br&gt;&lt;br&gt;Жаль, на самом деле интересная весчь. Искренне хочется врулить, почему же таки мой вариант не работает как надо. В теории вроде бы все ок :)&lt;br&gt;&lt;br&gt;&amp;gt;я решил эту задачу за 10 минут на PHP, почти ничего &lt;br&gt;&amp;gt;к &quot;реврайту&quot; не добавляя. Вот моё решение: &lt;br&gt;&amp;gt;&lt;br&gt;&lt;br&gt;Если уже решать это на PHP, мне кажется есть более компактное простое решение. Просто из адреса /files/cat1/ или /company/about/ берем название первого &quot;каталога&quot;, и смотрим, если не &quot;files&quot;, то name=content. А если &quot;files&quot; (и другие интересующие) - значит name=&#091;название&#093;.&lt;br&gt;Однако хочется разрулить именно с модР</description>
</item>

<item>
    <title>Универсальное правило Modrewrite (XAnder)</title>
    <link>https://opennet.me/openforum/vsluhforumID8/5632.html#12</link>
    <pubDate>Tue, 25 Mar 2008 06:34:27 GMT</pubDate>
    <description>&amp;gt;        RewriteCond &#037;&#123;REQUEST_URI&#125; ^/(files)/? &lt;br&gt;&lt;br&gt;...&lt;br&gt;&amp;gt;В name2 почему-то вопхнулось только первая часть названия каталога. Однако в RewriteCond &lt;br&gt;&amp;gt;у нас явно указано &quot;files&quot; и ничего более. &lt;br&gt;&lt;br&gt;А &quot;/?&quot; ни о чём не говорит?&lt;br&gt;&lt;br&gt;Лично у меня нет никакого желания разбираться в хитросплетениях работы mod_rewrite, поэтому я решил эту задачу за 10 минут на PHP, почти ничего к &quot;реврайту&quot; не добавляя. Вот моё решение:&lt;br&gt;&lt;br&gt;.htaccess&lt;br&gt;----------------------------------------------------------------&lt;br&gt;RewriteEngine on&lt;br&gt;RewriteBase &amp;lt;мой путь&amp;gt;&lt;br&gt;&lt;br&gt;RewriteCond &#037;&#123;REQUEST_URI&#125; (&#092;.html&amp;#124;/)$&lt;br&gt;RewriteRule ^(.*)$ index.php?path=$1&amp;&#037;&#123;QUERY_STRING&#125;&lt;br&gt;----------------------------------------------------------------&lt;br&gt;&lt;br&gt;index.php&lt;br&gt;----------------------------------------------------------------&lt;br&gt;&amp;lt;?php&lt;br&gt;&lt;br&gt;header(&quot;Content-type: text/plain; charset=UTF-8&quot;);&lt;br&gt;&lt;br&gt;echo &apos;_GET = &apos;; print_r($_GET);&lt;br&gt;&lt;br&gt;$cats = array(&apos;files&apos;, &apos;content&apos;, &apos;foo&apos;, &apos;bar&apos;);&lt;br&gt;$defaultCat = &apos;content&apos;;&lt;br&gt;&lt;br&gt;$path = ltrim($_GET&#091;&apos;path&apos;&#093;, &apos;/&apos;);&lt;br&gt;&lt;br&gt;if (preg_match(&apos;/&#092;.html$/&apos;, $</description>
</item>

<item>
    <title>Универсальное правило Modrewrite (Brabus)</title>
    <link>https://opennet.me/openforum/vsluhforumID8/5632.html#11</link>
    <pubDate>Mon, 24 Mar 2008 18:07:56 GMT</pubDate>
    <description>Еще вот столкнулся с проблемкой. Суть такова:&lt;br&gt;Есть адреса, к примеру:&lt;br&gt;        /files/cat1/&lt;br&gt;        /company/about/&lt;br&gt;Как мы уже тут говорили, реальный передаваемый адрес будет, к примеру: index.php?path=/files/cat1/ . Его разбираем и дальше, тут не интересно.&lt;br&gt;&lt;br&gt;Что нужно: передавать ссылки типа index.php?name=&#091;название_первого_каталога&#093;&amp;path=...&lt;br&gt;т.е., к примеру: index.php?name=files&amp;path=/files/cat1/&lt;br&gt;Это я планировал сделать в .htaccess. Пишу правила:&lt;br&gt;        RewriteCond &#037;&#123;REQUEST_URI&#125; ^/(files)/?&lt;br&gt;        RewriteRule ^(.*)$ index.php?name2=&#037;1&amp;path2=$1&amp;&#037;&#123;QUERY_STRING&#125; &#091;L&#093;&lt;br&gt;        RewriteRule ^(.*)$ index.php?name=content&amp;path=$1&amp;&#037;&#123;QUERY_STRING&#125; &#091;L&#093;&lt;br&gt;Как должно быть (думаю): в следствии первого RewriteRule, следующего после RewriteCond апдрес получается index.php?name2=files&amp;path... и преобразование урлов заканчивается.&lt;br&gt;Если RewriteCond не сработал, выполняется последний урл.&lt;br&gt;&lt;br&gt;Что мы получаем на практике. На первых приведенных примерах адресов:&lt;br&gt;В случае /company/about/ - все работает как положено. n</description>
</item>

<item>
    <title>Универсальное правило Modrewrite (Brabus)</title>
    <link>https://opennet.me/openforum/vsluhforumID8/5632.html#10</link>
    <pubDate>Mon, 24 Mar 2008 12:44:38 GMT</pubDate>
    <description>&amp;gt;&#091;оверквотинг удален&#093;&lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;Если нужно /art/pic преобразовать в переменные $cat=&quot;art&quot; $act=&quot;pic&quot;, то после этого можно &lt;br&gt;&amp;gt;указать &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;$cat = array_shift($subpage); $act = array_shift($subpage); &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;или что-то в этом роде в зависимости от логики программы. Оставшиеся элементы &lt;br&gt;&amp;gt;будут в массиве $subpage. Или я что-то про твои &quot;категории&quot; не &lt;br&gt;&amp;gt;понял - тогда растолкуй, что хочешь получить в итоге, потому что &lt;br&gt;&amp;gt;дальше колдовство с БД совсем непонятно. &lt;br&gt;&lt;br&gt;Что касается &quot;катгорий&quot;: цель - дать возможность через панель управления создавать неограниченное количество каталогов (тут я понимаю &quot;категория&quot; как &quot;каталог&quot; в урле), подкаталогов, и страниц в них :)&lt;br&gt;В принципе за основу возьму explode(&apos;/&apos;, substr($_GET&#091;&apos;path&apos;&#093;, 0, -5)) , а дальше уже будет видно, как работать в конкретных условиях.&lt;br&gt;Спасибо за &quot;беседу&quot; и помощь :)&lt;br&gt;</description>
</item>

<item>
    <title>Универсальное правило Modrewrite (XAnder)</title>
    <link>https://opennet.me/openforum/vsluhforumID8/5632.html#9</link>
    <pubDate>Mon, 24 Mar 2008 08:13:25 GMT</pubDate>
    <description>Да, ошибся маленько, нужно так:&lt;br&gt;&lt;br&gt;$subpage = explode(&apos;/&apos;, substr($_GET&#091;&apos;path&apos;&#093;, 0, -5))&lt;br&gt;&lt;br&gt;Если нужно /art/pic преобразовать в переменные $cat=&quot;art&quot; $act=&quot;pic&quot;, то после этого можно указать&lt;br&gt;&lt;br&gt;$cat = array_shift($subpage); $act = array_shift($subpage);&lt;br&gt;&lt;br&gt;или что-то в этом роде в зависимости от логики программы. Оставшиеся элементы будут в массиве $subpage. Или я что-то про твои &quot;категории&quot; не понял - тогда растолкуй, что хочешь получить в итоге, потому что дальше колдовство с БД совсем непонятно.&lt;br&gt;</description>
</item>

<item>
    <title>Универсальное правило Modrewrite (Brabus)</title>
    <link>https://opennet.me/openforum/vsluhforumID8/5632.html#8</link>
    <pubDate>Sat, 22 Mar 2008 18:08:21 GMT</pubDate>
    <description>&amp;gt;&amp;gt;RewriteCond &#037;&#123;REQUEST_URI&#125; &#092;.html$ &lt;br&gt;&amp;gt;&amp;gt;RewriteRule ^(.*)$ index.php?path=$1&amp;&#037;&#123;QUERY_STRING&#125; &lt;br&gt;&amp;gt;&amp;gt;&lt;br&gt;&amp;gt;&amp;gt;Тогда при запросе /art/pic/pic2.html?qq=ww&amp;ee=rr будет вызван index.php?path=art/pic/pic2.html&amp;qq=ww&amp;ee=rr. Дальше на PHP простейший анализ: &lt;br&gt;&amp;gt;&amp;gt;&lt;br&gt;&amp;gt;&amp;gt;$subpage = explode(&apos;/&apos;, substr($_GET&#091;&apos;path&apos;&#093;, -5)) &lt;br&gt;&amp;gt;&lt;br&gt;&lt;br&gt;Кой-чего родил. Тут конечно все зависит от конкретный требований, но в принципе можно и обойтись вышеизложенным вариантом.&lt;br&gt;Получаем из урла список категорий. И в порядке их следования получаем ихние ID в базе данных.&lt;br&gt;1-й ($cat1_id = ): select id from cat where name = &apos;$subpage&#091;1&#093;&apos; (т.к. корневая категория всегда будет с уникальным именем)&lt;br&gt;2-й: select id from cat where name = &apos;$subpage&#091;1&#093;&apos; and parent = &apos;$cat1_id&apos; (т.к. уже вторая категория в таблице может повторятся. Тобишь может быть /art/pic/ и /pass/pic).&lt;br&gt;Ну и дальше до конечной страницы :)&lt;br&gt;Блин, такое впечатление, что я изобретаю велосипед :)&lt;br&gt;&lt;br&gt;P.S.&lt;br&gt;&amp;gt;&amp;gt;$subpage = explode(&apos;/&apos;, substr($_GET&#091;&apos;path&apos;&#093;, -5))&lt;br&gt;&lt;br&gt;Эта фигня не правильна. В $subpage у нас буд</description>
</item>

</channel>
</rss>
