<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	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/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>SEO блог и уеб програмиране &#187; трикове</title>
	<atom:link href="http://ganbox.com/blog/tag/%d1%82%d1%80%d0%b8%d0%ba%d0%be%d0%b2%d0%b5/feed/" rel="self" type="application/rss+xml" />
	<link>http://ganbox.com/blog</link>
	<description>SEO практика: трикове при оптимизация и решаване на проблеми при уеб програмиране.</description>
	<lastBuildDate>Sun, 20 May 2012 19:28:54 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>Приложна магия с mod_rewrite в htaccess</title>
		<link>http://ganbox.com/blog/%d0%bf%d1%80%d0%b8%d0%bb%d0%be%d0%b6%d0%bd%d0%b0-%d0%bc%d0%b0%d0%b3%d0%b8%d1%8f-%d1%81-modrewrite/</link>
		<comments>http://ganbox.com/blog/%d0%bf%d1%80%d0%b8%d0%bb%d0%be%d0%b6%d0%bd%d0%b0-%d0%bc%d0%b0%d0%b3%d0%b8%d1%8f-%d1%81-modrewrite/#comments</comments>
		<pubDate>Wed, 10 Jun 2009 16:30:05 +0000</pubDate>
		<dc:creator>gan</dc:creator>
				<category><![CDATA[SEO]]></category>
		<category><![CDATA[Сигурност]]></category>
		<category><![CDATA[htaccess]]></category>
		<category><![CDATA[mod_rewrite]]></category>
		<category><![CDATA[redirect]]></category>
		<category><![CDATA[regular expressions]]></category>
		<category><![CDATA[RewriteRule]]></category>
		<category><![CDATA[seo friendly]]></category>
		<category><![CDATA[достъп до сайт]]></category>
		<category><![CDATA[интернет адреси]]></category>
		<category><![CDATA[ограничаване на достъпа]]></category>
		<category><![CDATA[пренасочване]]></category>
		<category><![CDATA[прокси]]></category>
		<category><![CDATA[регулярни изрази]]></category>
		<category><![CDATA[трикове]]></category>
		<category><![CDATA[хакер]]></category>

		<guid isPermaLink="false">http://ganbox.com/blog/?p=162</guid>
		<description><![CDATA[Пренаписване на интернет адреси с .htaccess Промяната на интернет адреси с mod_rewrite се прави основно по следните seo причини: съкращаване на адресите: адресите стават за индексиране от търсачките (seo friendly) и лесни за ръчно изписване в браузър пренасочване на стари адреси към нови при преименуване на файлове на страници ако има страници, които се достъпват [...]]]></description>
			<content:encoded><![CDATA[<h2>Пренаписване на интернет адреси с .htaccess</h2>
<p>Промяната на интернет адреси с mod_rewrite се прави основно по следните seo причини:</p>
<ul>
<li>съкращаване на адресите: адресите стават за индексиране от търсачките (seo friendly) и лесни за ръчно изписване в браузър</li>
<li>пренасочване на стари адреси към нови при преименуване на файлове на страници</li>
<li>ако има страници, които се достъпват с повече от един адрес се пренасочват излишните адреси</li>
<li>скриване на вида файлове на страниците на сайта</li>
</ul>
<p>Пренасочванията се извършват от правила зададени във файла .htaccess, който трябва да се намира в главната уеб директория.</p>
<p>Правилата използват регулярни изрази (regular expressions) и могат да бъдат много сложни. В тази статия обаче ще разгледам само най-често ползваните правила от SEO специалистите.</p>
<p>За да работи този файл е нужно уеб сървъра да има инсталиран модул mod_rewrite и в конфигурационния файл /etc/httpd/conf/httpd.conf  трябва да е зададена опцията <strong>AllowOverride All</strong></p>
<p>На повечето съвременни хостинг сървъри тези опции са включени по подразбиране, ако това не е така ще трябва да се свържеш със системния администратор на хостинга.</p>
<h3>Проверка дали mod_rewrite работи<strong><br />
</strong></h3>
<p>Постави следните редове в .htaccess файла и опитай да отвориш адреса http://domain.com/test  където domain.com е името на твоя сайт. Ако се отвори сайта ganbox.com това значи всичко е наред и mod_rewrite работи.</p>
<blockquote>
<pre>Options +FollowSymLinks</pre>
<pre>RewriteEngine On
RewriteBase /</pre>
<pre>RewriteRule test http://ganbox.com/? [NC,R,L]</pre>
</blockquote>
<p>Обикновено файла .htaccess започва със следните няколко реда. За краткост ще бъдат пропускани в примерите долу.</p>
<blockquote>
<pre>Options +FollowSymLinks -Indexes -MultiViews
RewriteEngine On
RewriteBase /</pre>
</blockquote>
<h3>Просто пренасочване на преименувана страница</h3>
<p>Ако страница /about.html е преименувана на /contact.php</p>
<blockquote>
<pre>redirect 301 /about.html /contact.php</pre>
</blockquote>
<p>аналогично</p>
<blockquote>
<pre>RewriteRule ^about\.html$ /contact.php [R=permanent,L]</pre>
</blockquote>
<p>[L]  казва, че това е последното правило, което трябва да се обработи.</p>
<h3>Скриване на вида файлове</h3>
<p>Всеки адрес от вида domain.com/страница, като страница може да съдържа малки или главни букви, цифри и знаците &#8222;-&#8220; и &#8222;_&#8220;.</p>
<blockquote>
<pre>RewriteRule ^([-\w0-9_]+)$ /$1.php [L,NC,QSA]</pre>
</blockquote>
<p>Пример: при написване на адрес domain.com/форма-за-контакти2 ще бъде потърсена страница /форма-за-контакти2.php</p>
<p><strong>Внимание:</strong> ако уеб съръвра е на Windows машина, горния регулярен израз вероятно няма да сработи,заради бъг в win32 mod_rewrite апаче модула.</p>
<blockquote>
<pre>RewriteRule ^([-А-Яа-яA-Za-z0-9_]+)$ /$1.asp [L,NC,QSA]</pre>
</blockquote>
<p>Вместо \w или А-Яа-яA-Za-z  използвай АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЬЮЯабвгдежзийклмнопрстуфхцчшщъьюяA-Za-z</p>
<p>В този пример при написване на адрес domain.com/Условия_За_Ползване ще бъде потърсена страница /Условия_За_Ползване.asp</p>
<p>като в полето за адреси на браузъра ще остане да се вижда http://domain.com/Условия_За_Ползване</p>
<p>Очевидно е, че по този начин няма как да се разбере какви скриптове управляват страниците на сайта. Дори може да се направи страниците да изглеждат като html файлове, а да се изпълняват едноименни php файлове с правилото:</p>
<blockquote>
<pre>RewriteRule ^([-А-Яа-яA-Za-z0-9_]+)\.html$ /$1.php [QSA,L]</pre>
</blockquote>
<p>в този случай ако напишеш http://domain.com/clients.html ще бъде потърсен файла /clients.php. Този подход има двоен положителен ефект &#8211; от една страна търсачките и от друга сигурност.</p>
<h3>Съкращаване на адреси</h3>
<p>Много често при <a href="http://ganbox.com/">SEO оптимизация</a> на динамични сайтове с CMS се налага съкращаване на адреси.</p>
<p>Дълги адреси като този</p>
<p><span class="postbody">http://domain.com/index.php?sec=pro&amp;cat=48&amp;category=avto</span></p>
<p>да изглеждат като този</p>
<p>http://domain.com/sec/pro/cat/48/category/avto</p>
<blockquote>
<pre>RewriteRule
^sec/([^/]+)/cat/([0-9]+)/category/([^/]+)/?$
/index.php?sec=$1&amp;cat=$2&amp;category=$3 [QSA,L]</pre>
</blockquote>
<p>Разбира се горното правило се пише на един ред, като между отделните части има по един интервал.</p>
<p>След това в кода се правят промени на всички места, които образуват връзки, за да откриеш всички тези места може да търсиш във всички файлове за http или за href.</p>
<p>Хубавото е, че старите адреси продължават да работят и не е проблем за хората, които са направили Bookmark към стар адрес.</p>
<h3>Пренасочване на адреси към един файл</h3>
<p>Превод на адреси от вида www.domain.com/contacts към файл index.php, като подава по GET в променлива p името на страницата www.domain.com/index.php?p=contacts</p>
<blockquote>
<pre># ако не бъде открит файл
RewriteCond %{SCRIPT_FILENAME} !-f</pre>
<pre># ако не бъде открита директория
RewriteCond %{SCRIPT_FILENAME} !-d</pre>
<pre># подава низа към файла index.php
RewriteRule ^([^/]+)/?$ /index.php?p=$1 [QSA,L]</pre>
</blockquote>
<p>По този начин всеки адрес ще се изпраща за обработка към един единствен файл index.php често наричан диспечер (dispatcher).</p>
<p>В този файл се взема подадения низ и се слага в променлива $page. След това се проверява и ако файла със страницата не съществува се преминава към страница с грешка 404.php</p>
<blockquote>
<pre>$page= isset($_GET['p']) ? $_GET['p'] : 'home';
if(!file_exists(ABS_PATH.$page.'.php')) $page = '404';
include_once(ABS_PATH.$page.'.php');</pre>
</blockquote>
<p>От съображения за сигурност е много важно преди този код да е дефинирана константата ABS_PATH като в нея има абсолютен път до главната уеб директория например:</p>
<blockquote>
<pre>define('ABS_PATH', '<span id="ygtvlabelel1" class="ygtvlabel">/home/account</span>/www/');</pre>
</blockquote>
<p>където <span id="ygtvlabelel1" class="ygtvlabel">account е потребителско име за cpanel на хостинга. </span></p>
<p><span id="ygtvlabelel1" class="ygtvlabel">Ако се очаква в адреса на страницата да има само латински букви и тирета, тогава в index.php преди реда с </span>file_exists добави следния ред:</p>
<blockquote>
<pre>$page = preg_replace('|[^A-Za-z_-]|','',$page);
# премахва всичко различно от буква и знаците _ и -</pre>
</blockquote>
<h3>Премахване на проблем с дублирани адреси</h3>
<p>Наскоро имах следния проблем при оптимизиране на динамичен сайт. В навигацията сайта има два бутона за превключване на езика с българското и английското знаме.</p>
<p>Ако текущия адрес е http://domain.com/page.php?id=7</p>
<p>то бутона с английското знаме сочи към http://domain.com/page.php?lang=en&amp;id=7</p>
<p>а бутона с българското знаме към http://domain.com/page.php?lang=bg&amp;id=7</p>
<p>От потребителска гледна точка е удобно защото при смяна на езика оставаш в текущата страница, но от гледна точка на търсачката всяка страница на български има по два адреса.</p>
<p>Дори началната страница има 3 адреса: http://domain.com,  http://domain.com/index.php  и  http://domain.com/index.php?lang=bg</p>
<p>Решение:</p>
<blockquote>
<pre># премахване на всички низове <span class="postbody">index.* от интернет адреса.
# Заб. Изтрий тези две правила ако искаш да инсталираш форум или блог</span></pre>
<pre>RewriteCond %{THE_REQUEST} \ /(.+/)?index\.([^/]+)(\?.*)?\  [NC]
RewriteRule ^(.+/)?index\.([^/]+)$ /%1 [NC,R=301,L]</pre>
<pre># Правила за премахване на параметър lang=bg като запазва всичко останало в адреса

RewriteCond %{QUERY_STRING} ^(([^&amp;]*&amp;)*)(lang=bg)($|&amp;)(.*)
RewriteRule .* $0?%1%5 [N,E=REMOVED:true]
RewriteCond %{ENV:REMOVED} true
RewriteRule ^ %{REQUEST_URI} [L,R=301]</pre>
</blockquote>
<p><strong>Внимание:</strong> Ако добавиш първите две правила за премахване на index от адресите и в последствие решиш да инсталираш форум, блог или някакъв CMS в поддиректория в същия сайт, се очаква да имаш проблеми и  инсталацията няма да може да се извърши.</p>
<h3>Премахване на www.</h3>
<p>Пренасочване на  www.domain.com/страница  към domain.com/страница</p>
<blockquote>
<pre>RewriteCond %{HTTP_HOST} ^www\.(domain\.com)$ [NC]
RewriteRule ^(.*)$ http://%1%{REQUEST_URI} [R=301,L]</pre>
</blockquote>
<h2>Други полезни трикове в .htaccess</h2>
<h3>Ограничаване на достъпа</h3>
<h4>по IP адрес</h4>
<p>За да забраниш достъпа до сайта от IP адрес 207.246.65.22 в началото на файла напиши</p>
<blockquote>
<pre># ban web proxy
Deny from 207.246.65.22</pre>
</blockquote>
<p>За да забраниш цялата мрежа 64.4.0.0 &#8211; 64.4.63.255 на Microsoft и техния MSN Bot напиши</p>
<blockquote>
<pre>Deny from 64.4.0.0/18</pre>
</blockquote>
<p>За да забраниш няколко  мрежи в Киев от които в блога вали спам изпращан от различни IP адреси като: 95.133.140.7, 95.133.192.198 и др. напиши:</p>
<blockquote>
<pre>Deny from 91.124.0.0/16
Deny from 91.195.12.0/23
Deny from 94.178.0.0/15
Deny from 95.132.0.0/14</pre>
</blockquote>
<p>Има предвид, че така блокираш много хора от Киев. Прецени сам дали очакваш читатели от там.</p>
<h4>по тип на търсения файл</h4>
<p>Забрана за показване на файлове, които завършват на .txt</p>
<blockquote>
<pre>&lt;Files ~ "\.txt$"&gt;
    Order allow,deny
    Deny from all
&lt;/Files&gt;</pre>
</blockquote>
<p><strong> </strong></p>
<h4>по вид браузър</h4>
<p>Ако имаш директория /old в която има стара версия на сайта, която поддържа архаичния браузър Internet Explorer 6, може да пренасочиш всички заявки от такъв браузър заедно с подадените параметри към тях.</p>
<blockquote>
<pre># за браузър IE6 или по-стар пренасочва към /old
RewriteCond %{HTTP_USER_AGENT} MSIE\ [1-6]
RewriteRule !^old(/.*)?$ /old%{REQUEST_URI} [QSA,L]
</pre>
</blockquote>
<h4>ограничаване на ботове</h4>
<p>Ако забележиш в логовете, че твоя сайт е налазен от ботове може да използваш следния код:</p>
<pre>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">RewriteCond %{HTTP_USER_AGENT} ^$<br />
RewriteRule ^.* - [F]</div></div>
</pre>
<p>Това ще блокира всички ботове, които не изпращат USER_AGENT. Няма да се блокират ботовете на търсачките Google, Yahoo и др. Ако някой програмист иска да обхожда твоя сайт с бот, това няма да го спре, защото ще ти подава валиден USER_AGENT. Също добра идея е да не се блокира с Forbbiden, а да се пренасочи към специална страница за ботове.</p>
<h4>забрана на достъп до сайт през прокси</h4>
<p>Напиши всичките тези правила и ще ограничиш достъпа до сайта от огромно количество свободни уеб прокси сайтове. Много е полезно за сайтове с форуми, където често потребителите си правят втори профил през прокси, за да се представят за друг човек.</p>
<blockquote>
<pre>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">RewriteCond %{HTTP:VIA} &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; !^$ [OR]<br />
RewriteCond %{HTTP:FORWARDED} &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; !^$ [OR]<br />
RewriteCond %{HTTP:USERAGENT_VIA} &nbsp; &nbsp; &nbsp; !^$ [OR]<br />
RewriteCond %{HTTP:X_FORWARDED_FOR} &nbsp; &nbsp; !^$ [OR]<br />
RewriteCond %{HTTP:PROXY_CONNECTION} &nbsp; &nbsp;!^$ [OR]<br />
RewriteCond %{HTTP:XPROXY_CONNECTION} &nbsp; !^$ [OR]<br />
RewriteCond %{HTTP:HTTP_PC_REMOTE_ADDR} !^$ [OR]<br />
RewriteCond %{HTTP:XROXY_CONNECTION} &nbsp; &nbsp;!^$ [OR]<br />
RewriteCond %{HTTP:X-FORWARDED-FOR} &nbsp; &nbsp; !^$ [OR]<br />
RewriteCond %{HTTP:FORWARDED-FOR} &nbsp; &nbsp; &nbsp; !^$ [OR]<br />
RewriteCond %{HTTP:X-FORWARDED} &nbsp; &nbsp; &nbsp; &nbsp; !^$ [OR]<br />
RewriteCond %{HTTP:HTTP_CLIENT_IP} &nbsp; &nbsp; &nbsp;!^$<br />
RewriteRule ^(.*)$ - [F]</div></div>
</pre>
</blockquote>
<h3>Сигурност</h3>
<p><span style="color: #993300;"><strong>Много важно!</strong></span> Ако ползваш на твоя сайт едно от следните: картинки против автоматични регистрации (captcha),  smarty темплейти или имаш директория, в която могат да се качват снимки или други файлове. Тогава вероятно тези директории имат повече права за писане в тях. Възможно е хакер да се възползва от тази слабост и да качи в такава директория root shell скрипт, който му дава достъп до файлове, база данни и изпълнение на команди. Пример за такива директории в WordPress са тези в  wp-content/uploads. Много добра идея е в такива директории да поставиш htaccess подобен на следния:</p>
<pre>&lt;Files ~ "^.*\.(php|pl|log|bak)"&gt;
 Order allow,deny
 Deny from all
 Satisfy All
&lt;/Files&gt;</pre>
<p>Това забранява достъпа до php и pl файлове качени в тази директория. Допълни в първия ред разделени с | разширенията на всички типове файлове, които не се очаква да присъстват в тази директория. Друг вариант е, ако директорията е само за картинки да изброиш типовете файлове, които се очакват да са в директорията със следния htaccess файл:</p>
<pre>RewriteCond %{REQUEST_URI} !(\.(gif|jpe?g|png)$)
RewriteRule .* - [F,L]</pre>
<p>Копирай този файл във всички директории за картинки. Сложи този файл в директорията upload на WordPress и той ще защити всички поддиректории, които се създават. В зависимост какви файлове качваш в блога, може да разшириш списъка. При мен е  !(\.(gif|jpe?g|png|zip|doc|xls|xml|html|txt)$) разбира се НЕ трябва да добавяш php иначе се губи смисъла.</p>
<p>Най-добрия вариант е ако може всички подобни директории да бъдат едно ниво нагоре извън главната уеб директория. Така няма да има нужда от htaccess в тях, защото дори хакер да качи файл няма да може да го достъпи през уеб. И освен това всеки път като архивираш проекта на сайта няма да копираш мегабайти излишна временна информация.</p>
<h3>Обработка на грешки</h3>
<p>Задаване на различни обработчици на възникнали грешки: служебна страница със съобщение , локална страница или файл на друг сървър.</p>
<blockquote>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">ErrorDocument 403 &quot;Sorry! Access denied!&quot;</div></div>
<pre>ErrorDocument 404 /404.html</pre>
<pre>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">ErrorDocument 500 http://drug.domain.com/error</div></div>
</pre>
</blockquote>
<p>в този пример, ако бъде написан адрес към несъществуваща страница, ще бъде зареден файла /404.html</p>
<p>Продължава в статията <a href="/blog/%d0%bf%d1%80%d0%b5%d0%bd%d0%b0%d1%81%d0%be%d1%87%d0%b2%d0%b0%d0%bd%d0%b5-%d0%bd%d0%b0-%d0%b4%d0%be%d0%bc%d0%b5%d0%b9%d0%bd/">Пренасочване на домейн</a>.</p>
<h6 style="text-align: right;">© В статията са ползвани материали от <a href="http://forum.modrewrite.com">forum.modrewrite.com</a></h6>
<div style="float:right;display:block" class="counterViews">Брой разглеждания на тази статия: <b>16938</b><br /><span style="color:grey;font-size:0.8em">(след дата 20 декември 2009)</span></div>

<p>Подобни статии:<ol><li><a href='http://ganbox.com/blog/%d0%bf%d1%80%d0%b5%d0%bc%d0%b0%d1%85%d0%b2%d0%b0%d0%bd%d0%b5-%d0%bd%d0%b0-html-%d0%be%d1%82-url-%d0%b0%d0%b4%d1%80%d0%b5%d1%81%d0%b0-%d1%81-mod_rewrite/' rel='bookmark' title='Permanent Link: Премахване на .html от URL адреса с mod_rewrite'>Премахване на .html от URL адреса с mod_rewrite</a> <small>Тази статия е продължение на статията Приложна магия с mod_rewrite...</small></li>
<li><a href='http://ganbox.com/blog/%d0%bf%d1%80%d0%b5%d0%bd%d0%b0%d1%81%d0%be%d1%87%d0%b2%d0%b0%d0%bd%d0%b5-%d0%bd%d0%b0-%d0%b4%d0%be%d0%bc%d0%b5%d0%b9%d0%bd/' rel='bookmark' title='Permanent Link: Пренасочване на домейн'>Пренасочване на домейн</a> <small>Пиша тази статия като продължение на  Приложна магия с mod_rewrite...</small></li>
<li><a href='http://ganbox.com/blog/%d0%bb%d0%b8%d0%bd%d1%83%d0%ba%d1%81-%d1%82%d1%80%d0%b8%d0%ba%d0%be%d0%b2%d0%b5/' rel='bookmark' title='Permanent Link: Линукс трикове'>Линукс трикове</a> <small>Няколко скрипта за команден ред под Линукс, които ползвам често...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://ganbox.com/blog/%d0%bf%d1%80%d0%b8%d0%bb%d0%be%d0%b6%d0%bd%d0%b0-%d0%bc%d0%b0%d0%b3%d0%b8%d1%8f-%d1%81-modrewrite/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Линукс трикове</title>
		<link>http://ganbox.com/blog/%d0%bb%d0%b8%d0%bd%d1%83%d0%ba%d1%81-%d1%82%d1%80%d0%b8%d0%ba%d0%be%d0%b2%d0%b5/</link>
		<comments>http://ganbox.com/blog/%d0%bb%d0%b8%d0%bd%d1%83%d0%ba%d1%81-%d1%82%d1%80%d0%b8%d0%ba%d0%be%d0%b2%d0%b5/#comments</comments>
		<pubDate>Wed, 20 May 2009 19:48:34 +0000</pubDate>
		<dc:creator>gan</dc:creator>
				<category><![CDATA[SEO]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[галерия]]></category>
		<category><![CDATA[заместване]]></category>
		<category><![CDATA[картинки]]></category>
		<category><![CDATA[команди]]></category>
		<category><![CDATA[линукс]]></category>
		<category><![CDATA[оптимизация]]></category>
		<category><![CDATA[разширение]]></category>
		<category><![CDATA[сайт]]></category>
		<category><![CDATA[трикове]]></category>
		<category><![CDATA[урок]]></category>
		<category><![CDATA[файл]]></category>
		<category><![CDATA[файлове]]></category>

		<guid isPermaLink="false">http://ganbox.com/blog/?p=88</guid>
		<description><![CDATA[Няколко скрипта за команден ред под Линукс, които ползвам често при seo оптимизация на сайт. Работят с много файлове наведнъж и спестяват много време. 1. Заместване разширението на файлове. for x in *.html; do mv &#8222;$x&#8220; &#8222;${x%.html}.php&#8220;; done - сменя разширението на всички файлове .html на .php в текущата директория 2. Заместване на една дума [...]]]></description>
			<content:encoded><![CDATA[<p>Няколко скрипта за команден ред под Линукс, които ползвам често при seo оптимизация на сайт. Работят с много файлове наведнъж и спестяват много време.</p>
<p>1. Заместване разширението на файлове.<br />
<strong>for x in *.html; do mv &#8222;$x&#8220; &#8222;${x%.html}.php&#8220;; done</strong><br />
- сменя разширението на всички файлове .html на .php в текущата директория</p>
<p>2. Заместване на една дума с друга дума в много файлове.<br />
<strong>sed -i &#8216;s/comment/коментар/g&#8217;  *.php</strong><br />
- замества всички срещания на думата &#8222;comment&#8220; с думата &#8222;коментар&#8220; във всички .php файлове на текущата директория.<br />
Внимание! Ако някъде в текста се съдържа думата &#8222;comments&#8220; тя ще стане на &#8222;коментарs&#8220;, затова е добра идея първо да се потърси с командата:<br />
<strong>grep comment *</strong><br />
- тази команда ще покаже не само в кои файлове, а и къде и как по-точно се среща търсената дума.</p>
<p>3. Създаване на малки картинки за галерия.<br />
<strong>for i in `ls *.jpg`; do  convert -resize 120&#215;120 $i ${i%.jpg}.gif; done</strong><br />
- от файлове *.jpg прави малки картинки *.gif<br />
За всеки един jpg файл от текущата директория, създава малка gif картинка, като по-дългата страна е 120 точки. Сега вече може да поставиш gif картинките в една страница и те да са връзки към по-големите jpg снимки. И не забравяй да сложиш правилните alt атрибути на тага img <img src='http://ganbox.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /><br />
Заб. Команда convert е част от библиотеката ImageMagick.</p>
<div style="float:right;display:block" class="counterViews">Брой разглеждания на тази статия: <b>2507</b><br /><span style="color:grey;font-size:0.8em">(след дата 20 декември 2009)</span></div>

<p>Подобни статии:<ol><li><a href='http://ganbox.com/blog/%d1%84%d0%bb%d0%b0%d1%88-%d0%b0%d0%bd%d0%b8%d0%bc%d0%b0%d1%86%d0%b8%d1%8f-%d0%b1%d0%b5%d0%b7-%d1%82%d0%b0%d0%b3-embed-%d0%b7%d0%b0-%d0%b2%d0%b0%d0%bb%d0%b8%d0%b4%d0%b5%d0%bd-xhtml/' rel='bookmark' title='Permanent Link: Флаш анимация без таг embed за валиден XHTML'>Флаш анимация без таг embed за валиден XHTML</a> <small>В този урок за SEO оптимизиране се показва как уеб...</small></li>
<li><a href='http://ganbox.com/blog/%d0%b3%d1%83%d0%b3%d1%8a%d0%bb-%d1%82%d1%80%d0%b8%d0%ba%d0%be%d0%b2%d0%b5-%d0%bf%d1%80%d0%b0%d0%b2%d0%b8%d0%bb%d0%bd%d0%be-%d0%b8%d0%bd%d0%b4%d0%b5%d0%ba%d1%81%d0%b8%d1%80%d0%b0%d0%bd%d0%b5-%d0%bd/' rel='bookmark' title='Permanent Link: Гугъл трикове: правилно индексиране на сайт'>Гугъл трикове: правилно индексиране на сайт</a> <small>Тази статия е за всички, които се интересуват от SEO...</small></li>
<li><a href='http://ganbox.com/blog/%d0%b7%d0%b0%d0%bc%d0%b5%d1%81%d1%82%d0%b2%d0%b0%d0%bd%d0%b5-%d0%bd%d0%b0-%d1%82%d0%b0%d0%b3%d0%b0-marquee-%d0%b7%d0%b0-%d0%b2%d0%b0%d0%bb%d0%b8%d0%b4%d0%b5%d0%bd-xhtml/' rel='bookmark' title='Permanent Link: Заместване на тага marquee за валиден XHTML'>Заместване на тага marquee за валиден XHTML</a> <small>HTML тага marquee се използва за автоматично скролиране на текст....</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://ganbox.com/blog/%d0%bb%d0%b8%d0%bd%d1%83%d0%ba%d1%81-%d1%82%d1%80%d0%b8%d0%ba%d0%be%d0%b2%d0%b5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk: basic
Page Caching using disk: enhanced
Database Caching 29/54 queries in 0.058 seconds using disk: basic

Served from: ganbox.com @ 2012-05-22 05:43:36 -->
