﻿<?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>WebDuty &#187; mod_rewrite</title>
	<atom:link href="http://webduty.ru/tag/mod_rewrite/feed" rel="self" type="application/rss+xml" />
	<link>http://webduty.ru</link>
	<description>Блог посвящённый веб-технологиям</description>
	<lastBuildDate>Sat, 19 Feb 2011 15:46:56 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Несколько правил использования Mod_Rewrite</title>
		<link>http://webduty.ru/rules-mod_rewrite.htm</link>
		<comments>http://webduty.ru/rules-mod_rewrite.htm#comments</comments>
		<pubDate>Tue, 18 Aug 2009 11:35:26 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Различное]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[mod_rewrite]]></category>

		<guid isPermaLink="false">http://webduty.ru/?p=905</guid>
		<description><![CDATA[Mod_Rewrite это такой механизм, по умолчанию включенный в Аpache, который дает возможность динамически менять URL страницы. Он как правило используется для редиректа и ЧПУ (чистые ссылки типа /contacts), но из него можно выжать гораздо больше. Об этом и пойдет речь в этой статье.

Для начала включим его
Чтобы включить Mod_Rewrite нужно открыть файл .htaccess в корне сайта [...]]]></description>
			<content:encoded><![CDATA[<p><noindex><a rel="nofollow" href="http://www.google.com/url?sa=t&#038;source=web&#038;ct=res&#038;cd=1&#038;url=http%3A%2F%2Fhttpd.apache.org%2Fdocs%2F1.3%2Fmod%2Fmod_rewrite.html&#038;ei=TpCKSoqVOoqD-Qbe7bjYDw&#038;usg=AFQjCNFPEVe6CFBW8TQvGLTy_ocg2jocKA&#038;sig2=xlGF8T6mIlMzgS9BfcUbRA"  target="_blank">Mod_Rewrite</a></noindex> это такой механизм, по умолчанию включенный в Аpache, который дает возможность динамически менять URL страницы. Он как правило используется для редиректа и ЧПУ (чистые ссылки типа <em>/contacts</em>), но из него можно выжать гораздо больше. Об этом и пойдет речь в этой статье.<br />
<img src="http://webduty.ru/wp-content/uploads/2009/08/sm8.jpg" alt="sm8" title="sm8" width="500" height="217" class="simple size-full wp-image-906" /><span id="more-905"></span></p>
<h3>Для начала включим его</h3>
<p>Чтобы включить <strong>Mod_Rewrite</strong> нужно открыть файл <strong>.htaccess</strong> в корне сайта и вставить следующий код в начало этого файла.</p>
<pre>
RewriteEngine on
</pre>
<h3>Простая команда замены URL&#8217;а</h3>
<p>Синтаксис: </p>
<pre>RewriteRule Pattern Substitution [Flag(s)]  </pre>
<p>Пример:</p>
<pre>
RewriteRule   ^/$ index.php
RewriteRule   ^about$ about.php
RewriteRule   ^contacts$ contacts.php
RewriteRule   ^develop$ develop.php
RewriteRule   ^powerup$ powerup.php
RewriteRule   ^services$ services.php
RewriteRule   ^support$ support.php
</pre>
<p>Т.е с URL&#8217;ла http://domain.ru/ будет открываться страница<br />
http://domain.ru/index.php, c http://domain.ru/about &#8211; http://domain.ru/about.php и т.д.</p>
<h3>URL&#8217;лы всегда относительны</h3>
<p>Помните что URL для перенаправления в файле <em>.htaccess</em> <strong>всегда указывается относительно</strong> каталога, в котором находится этот файл. В предыдущем примере файл <em>.htaccess</em> находился в корневом каталоге.</p>
<h3>Простой редирект</h3>
<p>Если вы хотите чтобы со страницы <em>1.html</em> пользователь попадал на страницу <em>2.html</em> c помощью простого <strong>301 Redirect</strong>, то вставте в файл <em>.htacces</em> следующий код:</p>
<pre>RewriteRule ^1.html$ 2.html </pre>
<h3>Сайт не работает без WWW</h3>
<p>Если ваш сайт не открывается, если вводить его URL без www, то вставте в файл .htaccess в корне сайта следующий код:</p>
<pre>
RewriteCond %{HTTP_HOST} !^yourdomain\.com$ [NC]
RewriteRule ^(.*)$ http://yourdomain.com/$1 [R=301,L]
</pre>
<h3>Блокирование определённого IP-адреса</h3>
<p>Если вы хотите заблокировать доступ к сайту с определённого IP-адреса, вы можете использовать следующий код:</p>
<pre>
RewriteCond %{REMOTE_ADDR} ^(A\.B\.C\.D)$
RewriteRule ^/* http://www.yourdomain.com/sorry.html [L]
</pre>
<p>Вместо A,B,C,D поставте соответствующие цифры нужного IP-адреса, не забывайте ставить слеш перед точкой.<br />
Пользователя с этим IP Apache перенаправит на страницу <em>http://www.yourdomain.com/sorry.html</em>.</p>
<h3>Блокировка по UserAgent</h3>
<p>Если вы хотите заблокировать пользователя, использующего определённый UserAgent, либо бота, что более вероятно ;) то используйте следующий код</p>
<pre>
RewriteCond %{HTTP_USER_AGENT} UserAgent
RewriteRule .* - [F,L]
</pre>
<p>где слово <strong>UserAgent</strong> заменяется на UserAgent, пользователей или ботов, использующих который, вы не хотели бы видеть у себя на сайте.<br />
Также можно блокировать несколько UserAgent&#8217;ов заменив первую строчку кода на что-то подобное:</p>
<pre>
RewriteCond %{HTTP_USER_AGENT} UserAgentA [OR]
RewriteCond %{HTTP_USER_AGENT} UserAgentB
</pre>
<h3>Изображение по умолчанию</h3>
<p>В случае ненахождения файла изображения на сайте, браузер оставляет его пустым, либо использует свою стандартную картинку. Чтобы при &#8220;битой ссылке&#8221; на изображение, отображалась ваша стандартная картинка, скажем <em>/images/default.jpg</em>. Вам поможет следующий код:</p>
<pre>
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^images/.*\.jpg$ /images/default.jpg [L]
</pre>
<h3>Редирект со всех страниц сайта на одну</h3>
<p>При ведении работ по изменению содержания или функционала вашего сайта часто необходимо перенаправлять пользователей со всех страниц на одну (&#8220;на сайте ведутся работы&#8221;), например <em>page.html</em>. Для этого можно использовать следующий код:</p>
<pre>
RedirectMatch 302 ^/ /page.html
</pre>
<h3>Файлы всегда имеют приоритет</h3>
<p>Помните, что файлы на сервере всегда будут иметь приоритет над URL&#8217;ом. Тоесть есть у вас есть каталог <em>about</em>, вы не сможете перенаправить пользователя на <em>http://yourdomain.com/about</em>. Чтобы исправить это, просто переименуйте соответствующий каталог.<br />
И ещё. Помните, что команды в  файле <em>.htaccess</em> учитывают регистр символов.</p>
]]></content:encoded>
			<wfw:commentRss>http://webduty.ru/rules-mod_rewrite.htm/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

