Настройка .htaccess

Продвижение и оптимизация сайта , его раскрутка.
Закрыто
Аватара пользователя

Автор Темы
Alex
Admin
Admin
Сообщения: 3467
Зарегистрирован: 06 фев 2012, 00:03
Версия Web Builder: 12.5
Имя: Алексей
Контактная информация:

Настройка .htaccess

Сообщение Alex » 24 июл 2012, 17:23

Примеры настройки файла .htaccess

Почти все пункты являются обязательными, кроме
редиректа и блокировки - они настраиваются по мере необходимости ,
а также настройки ЧПУ (ЧеловекоПонятныхУРЛ) - как правило, можно обойтись функционалом CMS

Как создать .htaccess?

Все не так страшно, как может показаться:

открываем блокнот
пишем код (можно и потом это сделать)
сохраняем документ с названием .htaccess
заливаем в корень сайта (или в папку на сервере, где будем производить настройки)
или создаём файл *.txt с кодом , после заливаем его в корень сайта и
переименовываем в .htaccess

* yoursitename.ru в примерах заменяйте на адрес вашего домена

Настройки по умолчанию


1. Установка главной страницы по умолчанию

Код: Выделить всё

DirectoryIndex pagename.html


2. Определение страниц ошибок (error) в .htaccess


Код: Выделить всё

ErrorDocument 403 /403.php
ErrorDocument 404 /404.php
ErrorDocument 500 /500.php


Соответственно адрес и название файла могут быть другими, например /error/page404.html

3. Защита от хотлинков

То, что контент с сайтов воруют, это уже давно не новость. Но бывает, что прут вместе с картинками. Вот дабы избежать нагрузки на сервер и раздутия траффика, пишем:


Код: Выделить всё

RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
#домены, которые могут ссылаться на картинки с вашего сайта
RewriteCond %{HTTP_REFERER} !^http://([ -a-z0-9]  \.)?yoursitename\.ru [NC]
#не показывать картинки при хотлинках
RewriteRule \.(gif|jpe?g|png)$ - [F,NC,L]


Если хотите, чтобы на чужом сайте вместо 403 ошибки появлялась определенная картинка, последнюю строку следует заменить на:

Код: Выделить всё

RewriteRule \.(jpg|png|gif)$ http://yoursitename.ru/images/imagename.jpg [NC,R,L]


4. Принудительно сохранение файла вместо открытия

Если хотите, чтобы посетители вместо просматра файла онлайн сохраняли его, то в .htaccess пишем:

Код: Выделить всё

AddType application/octet-stream .doc .mov .avi .pdf .xls .mp4


5. Кэширование файлов

Допустим в WordPress для этого есть специальный плагин: wp-super-cache. Если вы же пользуетесь CMS, которая кэширование не поддерживает, то можно произвести следующие настройки в .htaccess

Код: Выделить всё

#кэширование html и htm на сутки
<FilesMatch ".(html|htm)$">
Header set Cache-Control "max-age=43200"
</FilesMatch>
#кэширование css, javascript и txt-файлов на неделю
<FilesMatch ".(js|css|txt)$">
Header set Cache-Control "max-age=604800"
</FilesMatch>
#кэширование flash и картинок на месяц
<FilesMatch ".(flv|swf|ico|gif|jpg|jpeg|png)$">
Header set Cache-Control "max-age=2592000"
</FilesMatch>
#запрет на кэширование скриптов
<FilesMatch "\.(pl|php|cgi|spl|scgi|fcgi)$">
Header unset Cache-Control
</FilesMatch>

Параметр max-age приведен в секундах.

6. Включение ошибок на время отладки

Код: Выделить всё

php_flag display_errors on


Настройка редиректа с помощью .htaccess

1. 301 редирект

Оптимальное решение для перенаправления посетителей со старых адресов на новые, если со временем структура сайта менялась, а старые URL’ы могли где-то остаться.

Код: Выделить всё

Redirect 301 /oldpage.html http://yoursitename.ru/newpage.html


Встречается еще такой вариант:

Код: Выделить всё

Redirect permanent /oldpage.html http://yoursitename.ru/newpage.html


Но в чем принципиальная разница между ними, честно говоря, объяснить не смогу. Может кто из читателей подскажет.

2. Склеивание доменов с www и без www

Редирект с адреса yoursitename.ru на http://www.yoursitename.ru


Код: Выделить всё

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^www.yoursitename.ru$ [NC]
RewriteRule ^(.*)$ http://www.yoursitename.ru/$1 [L,R=301]


Обратный редирект

Код: Выделить всё

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^yoursitename.ru$ [NC]
RewriteRule ^(.*)$ http://yoursitename.ru/$1 [L,R=301]


3. 302 редирект

Если вы ведете работы на сайте, то можете временно отправлять посетителей на нужную страницу (например, с описание того, когда планируется завершение работ и как можно с вами связаться).


Код: Выделить всё

RewriteEngine on
RewriteCond %{REQUEST_URI} !/informpage.html$
RewriteCond %{REMOTE_HOST} !^12\.345\.678\.90
RewriteRule $ http://yoursitename.ru/informpage.html [R=302,L]


Просмотр сайта будет возможен только с вашего ip-адреса - 12.345.678.90

4. Переадресация на другой сайт

Переадресация всех посетителей на другой сайт, помимо указанных ip-адресов


Код: Выделить всё

ErrorDocument 403 http://www.yoursitename.ru
Order deny,allow
Deny from all
Allow from 12.345.678.90
Allow from 12.345.678.92


5. Переадресация на безопасное https соединения


Код: Выделить всё

RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}


Запрет/блокировка с помощью .htaccess

1. Запрет на листинг директории

Используется при отсутствии индексного файла, если хотите запретить просмотр содержимого папки (например, для images):

Код: Выделить всё

Options All -Indexes


Обратный код, в смысле разрешение

Код: Выделить всё

Options +Indexes


2. Блокировка доступа к файлу

Например, это может быть ваш .htaccess


Код: Выделить всё

<Files .htaccess>
order allow,deny
deny from all
</Files>


3. Блокировка по ip

Чтобы спамеры не надоедали


Код: Выделить всё

<Limit GET>
Order Deny,Allow
Deny from 12.345.678.90
Deny from 90.876.543.
Deny from .tvoe.tv
Allow from all
</Limit>


Будут заблокированы:

юзер с ip 12.345.678.90
все посетители с ip, попадающими в диапазон от 90.876.543.0 до 90.876.543.255
и все посетители от провайдера tvoe.tv

Настройка ЧПУ с помощью .htaccess

1. Как убрать из адреса ?p=

По умолчанию адрес страницы выглядит следующим образом: yoursitename.ru/?p=xxxx, где xxxx - id статьи.


Код: Выделить всё

RewriteCond %{REQUEST_URI} ^/([0-9]+)$
RewriteRule .* http://yoursitename.ru/?p=%1 [R=301,L]


2. Как убрать из адреса category

По аналогии с прошлым способом пишем

Код: Выделить всё

RewriteRule ^category/(.+)$ http://yoursitename.ru/$1 [R=301,L]


Как убрать index.htm (.php) из адреса

Избаляемся от index.php

Код: Выделить всё

RewriteEngine On
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteRule ^index\.php$ http://www.имя сайта.ru/ [R=301,L]


Избаляемся от index.html

Код: Выделить всё

RewriteEngine On
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.html\ HTTP/
RewriteRule ^index\.html$ http://www.имя сайта.ru/ [R=301,L]


Как убрать html в конце строки

Код: Выделить всё

RewriteEngine on
RewriteBase /
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^.]+)\.html\ HTTP
RewriteRule ^([^.]+)\.html$ http://www.имя сайта.ru/$1 [R=301,L]
RewriteCond %{REQUEST_URI} !(\.[^./]+)$
RewriteCond %{REQUEST_fileNAME} !-d
RewriteCond %{REQUEST_fileNAME} !-f
RewriteRule (.*) /$1.html [L]


Ещё больше настроек .htaccess
Онлайн-магазин готовых решений
В личке принимаю, только по техническим вопросам! На вопросы по программе в личке не отвечаю!

Реклама
Закрыто

Вернуться в «Настройка, продвижение и раскрутка сайта.»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость