<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
> <channel><title>Komentarze do: Kiedy nie używać mod_rewrite?</title> <atom:link href="http://blog.kamilbrenk.pl/kiedy-nie-uzywac-mod_rewrite/feed/" rel="self" type="application/rss+xml" /><link>http://blog.kamilbrenk.pl/kiedy-nie-uzywac-mod_rewrite/</link> <description>Blog programisty/freelancera, w którym znajdziesz przydatne i ciekawe informacje ze świata Web. Poruszane tematyki to przede wszystkim PHP, JavaScript, bazy danych, modelowanie danych i inne. Zapraszam!</description> <lastBuildDate>Sat, 04 Feb 2012 16:02:54 +0000</lastBuildDate> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>http://wordpress.org/?v=3.3.1</generator> <item><title>Autor: Piotr Nalepa</title><link>http://blog.kamilbrenk.pl/kiedy-nie-uzywac-mod_rewrite/comment-page-1/#comment-2471</link> <dc:creator>Piotr Nalepa</dc:creator> <pubDate>Wed, 02 Nov 2011 09:09:25 +0000</pubDate> <guid isPermaLink="false">http://blog.kamilbrenk.pl/?p=75#comment-2471</guid> <description>Właśnie odnalazłem Twój art w sieci. Na pewno się przydadzą Twoje informacje.
Pozdrawiam</description> <content:encoded><![CDATA[<p>Właśnie odnalazłem Twój art w sieci. Na pewno się przydadzą Twoje informacje.<br /> Pozdrawiam</p> ]]></content:encoded> </item> <item><title>Autor: piochu</title><link>http://blog.kamilbrenk.pl/kiedy-nie-uzywac-mod_rewrite/comment-page-1/#comment-608</link> <dc:creator>piochu</dc:creator> <pubDate>Sun, 02 Jan 2011 23:07:50 +0000</pubDate> <guid isPermaLink="false">http://blog.kamilbrenk.pl/?p=75#comment-608</guid> <description>ooo &quot;mod_rewrite też nie należy do najwydajniejszych rozwiązań i warto by było wyłączyć całkowicie przepisywanie adresów na ten czas.&quot; ooo takie stwierdzenie mi chodziło :)ogólnie, thx za info :)</description> <content:encoded><![CDATA[<p>ooo &#8222;mod_rewrite też nie należy do najwydajniejszych rozwiązań i warto by było wyłączyć całkowicie przepisywanie adresów na ten czas.&#8221; ooo takie stwierdzenie mi chodziło :)</p><p>ogólnie, thx za info :)</p> ]]></content:encoded> </item> <item><title>Autor: Kamil Brenk</title><link>http://blog.kamilbrenk.pl/kiedy-nie-uzywac-mod_rewrite/comment-page-1/#comment-607</link> <dc:creator>Kamil Brenk</dc:creator> <pubDate>Sun, 02 Jan 2011 23:04:07 +0000</pubDate> <guid isPermaLink="false">http://blog.kamilbrenk.pl/?p=75#comment-607</guid> <description>Niby dobre rozwiązanie, choć często JS w 80% jest pobierane z CDN Google czy innej serwerowni (mowa o głównej bibliotece, jak jquery czy prototype, które często ważą najwięcej). To samo z obrazkami - jeśli spodziewasz się tak wielkiego ruchu to można przerzucić na jakiś CDN i po problemie.Wyłączenie grafiki i innych bajerów też jest dobrym rozwiązaniem, choć przy większym natężeniu ruchu serwer i tak padnie :-) mod_rewrite też nie należy do najwydajniejszych rozwiązań i warto by było wyłączyć całkowicie przepisywanie adresów na ten czas. Zamiast tego mógłbyś w folderze z grafiką i plikami JavaScript umieścić plik .htaccess o treści:&lt;code lang=&quot;apache&quot;&gt;Order deny,allow
Deny from all&lt;/code&gt;</description> <content:encoded><![CDATA[<p>Niby dobre rozwiązanie, choć często JS w 80% jest pobierane z CDN Google czy innej serwerowni (mowa o głównej bibliotece, jak jquery czy prototype, które często ważą najwięcej). To samo z obrazkami &#8211; jeśli spodziewasz się tak wielkiego ruchu to można przerzucić na jakiś CDN i po problemie.</p><p>Wyłączenie grafiki i innych bajerów też jest dobrym rozwiązaniem, choć przy większym natężeniu ruchu serwer i tak padnie :-) mod_rewrite też nie należy do najwydajniejszych rozwiązań i warto by było wyłączyć całkowicie przepisywanie adresów na ten czas. Zamiast tego mógłbyś w folderze z grafiką i plikami JavaScript umieścić plik .htaccess o treści:</p><div class="codecolorer-container apache dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br /></div></td><td><div class="apache codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #00007f;">Order</span> <span style="color: #00007f;">deny</span>,<span style="color: #00007f;">allow</span><br /> <span style="color: #00007f;">Deny</span> from <span style="color: #0000ff;">all</span></div></td></tr></tbody></table></div> ]]></content:encoded> </item> <item><title>Autor: piochu</title><link>http://blog.kamilbrenk.pl/kiedy-nie-uzywac-mod_rewrite/comment-page-1/#comment-606</link> <dc:creator>piochu</dc:creator> <pubDate>Sun, 02 Jan 2011 22:42:15 +0000</pubDate> <guid isPermaLink="false">http://blog.kamilbrenk.pl/?p=75#comment-606</guid> <description>Może wyjaśnie o co chodzi, tak będzie prościej.
Pisze kawałek kodu który będzie analizował ruch na mojej stronie. Jeśli liczba odsłon na minute/godzinę (jak tam sobie ustale) wzrośnie o ustalony wskaźnik skrypt przełączy się w &quot;tryb oszczędności transferu&quot; ;), ma to być coś w rodzaju zabezpieczenia przed efektem wykopu.
Czyli, jeśli link do mojej strony dostanie się na jakiś popularny serwis algorytm „zauważy to” i odpowiednio zareaguje.Myślę że dobrym wyjściem w takiej sytuacji (jeśli korzysta się z taniego, współdzielonego hostingu o ograniczonym transferze i chce się aby strona możliwie jak najdłużej przetrwała online) jest nie serwowanie ciężkiego contentu (zdjęcia, filmy itd.).
Dlatego właśnie pytam czy regułka którą podałem nadawała by się do zastosowania w takiej sytuacji?Jeśli bredzę to powiedź ;)</description> <content:encoded><![CDATA[<p>Może wyjaśnie o co chodzi, tak będzie prościej.<br /> Pisze kawałek kodu który będzie analizował ruch na mojej stronie. Jeśli liczba odsłon na minute/godzinę (jak tam sobie ustale) wzrośnie o ustalony wskaźnik skrypt przełączy się w &#8222;tryb oszczędności transferu&#8221; ;), ma to być coś w rodzaju zabezpieczenia przed efektem wykopu.<br /> Czyli, jeśli link do mojej strony dostanie się na jakiś popularny serwis algorytm „zauważy to” i odpowiednio zareaguje.</p><p>Myślę że dobrym wyjściem w takiej sytuacji (jeśli korzysta się z taniego, współdzielonego hostingu o ograniczonym transferze i chce się aby strona możliwie jak najdłużej przetrwała online) jest nie serwowanie ciężkiego contentu (zdjęcia, filmy itd.).<br /> Dlatego właśnie pytam czy regułka którą podałem nadawała by się do zastosowania w takiej sytuacji?</p><p>Jeśli bredzę to powiedź ;)</p> ]]></content:encoded> </item> <item><title>Autor: Kamil Brenk</title><link>http://blog.kamilbrenk.pl/kiedy-nie-uzywac-mod_rewrite/comment-page-1/#comment-605</link> <dc:creator>Kamil Brenk</dc:creator> <pubDate>Sun, 02 Jan 2011 21:45:45 +0000</pubDate> <guid isPermaLink="false">http://blog.kamilbrenk.pl/?p=75#comment-605</guid> <description>@piochu: Jak nie mod_rewrite to czym innym chciałbyś blokować? Na pewno dużo więcej transferu zaoszczędzisz w ten sposób niż gdybyś zezwalał na pobieranie tych plików graficznych.Jeśli wydajność jest tutaj mega istotna to grafiki wydzielić do jednego folderu (grupy folderów / serwera) i na ten folder dać .htaccess z regułką jak powyższa.</description> <content:encoded><![CDATA[<p>@piochu: Jak nie mod_rewrite to czym innym chciałbyś blokować? Na pewno dużo więcej transferu zaoszczędzisz w ten sposób niż gdybyś zezwalał na pobieranie tych plików graficznych.</p><p>Jeśli wydajność jest tutaj mega istotna to grafiki wydzielić do jednego folderu (grupy folderów / serwera) i na ten folder dać .htaccess z regułką jak powyższa.</p> ]]></content:encoded> </item> <item><title>Autor: piochu</title><link>http://blog.kamilbrenk.pl/kiedy-nie-uzywac-mod_rewrite/comment-page-1/#comment-604</link> <dc:creator>piochu</dc:creator> <pubDate>Sun, 02 Jan 2011 15:57:32 +0000</pubDate> <guid isPermaLink="false">http://blog.kamilbrenk.pl/?p=75#comment-604</guid> <description>Cześć,
a co wiesz na temat tego jak mod_rewrite wpływa na obciążenie serwera?
pytam dlatego że chce zrealizować takie zadanie: za pomocą m_r zablokować możliwość pobierania z serwera plików tj. jpg, js, gif itd.
Aktualnie używam do tego takiej regułki:RewriteRule \.(gif&#124;jpg&#124;jpeg&#124;png&#124;js&#124;)$ /dev/nullno i pytanie, jest to optymalne czy nie?Pozdrawiam :)</description> <content:encoded><![CDATA[<p>Cześć,<br /> a co wiesz na temat tego jak mod_rewrite wpływa na obciążenie serwera?<br /> pytam dlatego że chce zrealizować takie zadanie: za pomocą m_r zablokować możliwość pobierania z serwera plików tj. jpg, js, gif itd.<br /> Aktualnie używam do tego takiej regułki:</p><p>RewriteRule \.(gif|jpg|jpeg|png|js|)$ /dev/null</p><p>no i pytanie, jest to optymalne czy nie?</p><p>Pozdrawiam :)</p> ]]></content:encoded> </item> <item><title>Autor: Michal Wachowski</title><link>http://blog.kamilbrenk.pl/kiedy-nie-uzywac-mod_rewrite/comment-page-1/#comment-33</link> <dc:creator>Michal Wachowski</dc:creator> <pubDate>Mon, 15 Feb 2010 14:47:21 +0000</pubDate> <guid isPermaLink="false">http://blog.kamilbrenk.pl/?p=75#comment-33</guid> <description>Różnice są w pobieraniu wywołanego adresu
&lt;code lang=&quot;php&quot;&gt;
// index.php znajduje się w http://domena.com/katalog/
// $_GET[&#039;furl&#039;] - moja wersja// dla adresu http://domena.com/katalog/pl/artykuly/tytul.html
$HTTP_SERVER_VARS[&#039;PATH_INFO&#039;] # nic
$_SERVER[&#039;REQUEST_URI&#039;] # /katalog/pl/artykuly/tytul.html
$_SERVER[&#039;PATH_INFO&#039;] # nic
$_GET[&#039;furl&#039;] # /pl/artykuly/tytul.html// dla adresu http://domena.com/katalog/index.php/pl/artykuly/tytul.html
$HTTP_SERVER_VARS[&#039;PATH_INFO&#039;] # /pl/artykuly/tytul.html
$_SERVER[&#039;REQUEST_URI&#039;] # /katalog/index.php/pl/artykuly/tytul.html
$_SERVER[&#039;PATH_INFO&#039;] # /pl/artykuly/tytul.html
$_GET[&#039;furl&#039;] # nic
&lt;/code&gt;Możliwe, że coś pominąłem...Enyłej, po wpisaniu &#039;php frienldy url&#039; w googlach, wyniki są ... masakrujące.
Tutoriale jak stworzyć potworki pokroju index.php/pl/artykul/tytul.html, albo przygotowywanie wyrażenia regularnego dla każdego wariantu adresu...
Heh! Że też im się chce...</description> <content:encoded><![CDATA[<p>Różnice są w pobieraniu wywołanego adresu</p><div class="codecolorer-container php dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #666666; font-style: italic;">// index.php znajduje się w http://domena.com/katalog/</span><br /> <span style="color: #666666; font-style: italic;">// $_GET['furl'] - moja wersja</span><br /> <br /> <span style="color: #666666; font-style: italic;">// dla adresu http://domena.com/katalog/pl/artykuly/tytul.html</span><br /> <span style="color: #000088;">$HTTP_SERVER_VARS</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'PATH_INFO'</span><span style="color: #009900;">&#93;</span> <span style="color: #666666; font-style: italic;"># nic<br /> </span><span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'REQUEST_URI'</span><span style="color: #009900;">&#93;</span> <span style="color: #666666; font-style: italic;"># /katalog/pl/artykuly/tytul.html<br /> </span><span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'PATH_INFO'</span><span style="color: #009900;">&#93;</span> <span style="color: #666666; font-style: italic;"># nic<br /> </span><span style="color: #000088;">$_GET</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'furl'</span><span style="color: #009900;">&#93;</span> <span style="color: #666666; font-style: italic;"># /pl/artykuly/tytul.html<br /> </span><br /> <span style="color: #666666; font-style: italic;">// dla adresu http://domena.com/katalog/index.php/pl/artykuly/tytul.html</span><br /> <span style="color: #000088;">$HTTP_SERVER_VARS</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'PATH_INFO'</span><span style="color: #009900;">&#93;</span> <span style="color: #666666; font-style: italic;"># /pl/artykuly/tytul.html<br /> </span><span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'REQUEST_URI'</span><span style="color: #009900;">&#93;</span> <span style="color: #666666; font-style: italic;"># /katalog/index.php/pl/artykuly/tytul.html<br /> </span><span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'PATH_INFO'</span><span style="color: #009900;">&#93;</span> <span style="color: #666666; font-style: italic;"># /pl/artykuly/tytul.html<br /> </span><span style="color: #000088;">$_GET</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'furl'</span><span style="color: #009900;">&#93;</span> <span style="color: #666666; font-style: italic;"># nic</span></div></td></tr></tbody></table></div><p>Możliwe, że coś pominąłem&#8230;</p><p>Enyłej, po wpisaniu &#8216;php frienldy url&#8217; w googlach, wyniki są &#8230; masakrujące.<br /> Tutoriale jak stworzyć potworki pokroju index.php/pl/artykul/tytul.html, albo przygotowywanie wyrażenia regularnego dla każdego wariantu adresu&#8230;<br /> Heh! Że też im się chce&#8230;</p> ]]></content:encoded> </item> <item><title>Autor: Kamil Brenk</title><link>http://blog.kamilbrenk.pl/kiedy-nie-uzywac-mod_rewrite/comment-page-1/#comment-32</link> <dc:creator>Kamil Brenk</dc:creator> <pubDate>Mon, 15 Feb 2010 10:45:58 +0000</pubDate> <guid isPermaLink="false">http://blog.kamilbrenk.pl/?p=75#comment-32</guid> <description>Właśnie w tej notce chciałem opisać miejsca, w których nadużywa się modułu mod_rewrite. Jest wiele innych modułów i dyrektyw Apache, które działają optymalniej (choćby przez niewykorzystywanie niewydajnych wyrażeń regularnych). Z tego co zauważyłem, zwłaszcza wśród pozycjonerów i przekierowań - ich problemy możnaby w dużo prostszy sposób rozwiązać (&lt;i&gt;Redirect&lt;/i&gt;, &lt;i&gt;RedirectMatch&lt;/i&gt;).&lt;p&gt;&#160;&lt;/p&gt;&lt;code lang=&quot;apache&quot;&gt;RewriteRule ^(.*)$ ?furl=$1&amp;%{QUERY_STRING}&lt;/code&gt;
Co do Twojej regułki mam pewną uwagę: wzorzec o wartości &lt;i&gt;^(.*)$&lt;/i&gt; wymusza na mechanizmie wyrażenia regularnego przeanalizowanie całego ciągu tekstowego i porównanie każdego znaku z symbolem wieloznaczności . w celu sprawdzenia, czy znak pasuje do wzorca. Oczywiście każdy znak pasuje do wzorca . - jednak ciąg o n znakach będzie powodował wykonanie n operacji porównania.W przypadku wzorca z WordPress sprawa wygląda następująco:
&lt;code lang=&quot;apache&quot;&gt;RewriteRule . /index.php [L]&lt;/code&gt;
Czyli od razu cała treść adresu URL jest przekazana do pliku index.php :)</description> <content:encoded><![CDATA[<p>Właśnie w tej notce chciałem opisać miejsca, w których nadużywa się modułu mod_rewrite. Jest wiele innych modułów i dyrektyw Apache, które działają optymalniej (choćby przez niewykorzystywanie niewydajnych wyrażeń regularnych). Z tego co zauważyłem, zwłaszcza wśród pozycjonerów i przekierowań &#8211; ich problemy możnaby w dużo prostszy sposób rozwiązać (<i>Redirect</i>, <i>RedirectMatch</i>).</p><p>&nbsp;</p><div class="codecolorer-container apache dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="apache codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #00007f;">RewriteRule</span> ^(.*)$ ?furl=$1&amp;%{QUERY_STRING}</div></td></tr></tbody></table></div><p>Co do Twojej regułki mam pewną uwagę: wzorzec o wartości <i>^(.*)$</i> wymusza na mechanizmie wyrażenia regularnego przeanalizowanie całego ciągu tekstowego i porównanie każdego znaku z symbolem wieloznaczności . w celu sprawdzenia, czy znak pasuje do wzorca. Oczywiście każdy znak pasuje do wzorca . &#8211; jednak ciąg o n znakach będzie powodował wykonanie n operacji porównania.</p><p>W przypadku wzorca z WordPress sprawa wygląda następująco:</p><div class="codecolorer-container apache dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="apache codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #00007f;">RewriteRule</span> . /index.php [L]</div></td></tr></tbody></table></div><p>Czyli od razu cała treść adresu URL jest przekazana do pliku index.php :)</p> ]]></content:encoded> </item> <item><title>Autor: Michal Wachowski</title><link>http://blog.kamilbrenk.pl/kiedy-nie-uzywac-mod_rewrite/comment-page-1/#comment-31</link> <dc:creator>Michal Wachowski</dc:creator> <pubDate>Sun, 14 Feb 2010 18:39:09 +0000</pubDate> <guid isPermaLink="false">http://blog.kamilbrenk.pl/?p=75#comment-31</guid> <description>Używam podobnego rozwiązania z pierwszego przykładu - różnica jest znikoma.
&lt;code lang=&quot;apache&quot;&gt;
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ ?furl=$1&amp;%{QUERY_STRING}
&lt;/code&gt;Jednym if&#039;em załatwiam sprawdzane czy jest friendly czy nie.Nie chcę siać fermentu - ale część rzeczy nie jest realizowana przez ModRewrite - po prostu możliwości .htaccess są przeogromne.I jeszcze taka mała uwaga - RewriteBase nie jest wymagany, czasem przydatny, czasem szkodzi.</description> <content:encoded><![CDATA[<p>Używam podobnego rozwiązania z pierwszego przykładu &#8211; różnica jest znikoma.</p><div class="codecolorer-container apache dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br /></div></td><td><div class="apache codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #00007f;">RewriteCond</span> %{REQUEST_FILENAME} !-f<br /> <span style="color: #00007f;">RewriteCond</span> %{REQUEST_FILENAME} !-d<br /> <span style="color: #00007f;">RewriteRule</span> ^(.*)$ ?furl=$1&amp;%{QUERY_STRING}</div></td></tr></tbody></table></div><p>Jednym if&#8217;em załatwiam sprawdzane czy jest friendly czy nie.</p><p>Nie chcę siać fermentu &#8211; ale część rzeczy nie jest realizowana przez ModRewrite &#8211; po prostu możliwości .htaccess są przeogromne.</p><p>I jeszcze taka mała uwaga &#8211; RewriteBase nie jest wymagany, czasem przydatny, czasem szkodzi.</p> ]]></content:encoded> </item> </channel> </rss>
