05.05.2014

Полезные функции в файле .htaccess

.htaccess (с точкой в начале имени) — это файл-конфигуратор Apache-серверов, который дает возможность конфигурировать работу сервера в отдельных директориях (папках), не предоставляя доступа к главному конфигурационному файлу (apache/conf/httpd.conf). Например, устанавливать права доступа к файлам в директории, менять названия индексных файлов, самостоятельно обрабатывать ошибки Apache, перенаправляя посетителей на специальные страницы ошибок. .htaccess представляет собой обычный текстовый документ, расширение которого htaccess. Данный файл обычно находится в корне сайта, однако Вы можете создавать и дополнительные .htaccess-файлы для различных директорий Вашего сайта.

Если вы вдруг не видите файл .htaccess, возможно у вас не отображаются скрытые файлы.

Отключаем отображение листинга файлов

Если вы хотите отключить листинг файлов в каталогах, то вам понадобится следующий код.

Options All -Indexes

Страница Ошибки

При возникновении ошибок, перенаправляем пользователя на error.html.

errorDocument 400 http://www.youwebsite.com/error.html
errorDocument 401 http://www.youwebsite.com/error.html
errorDocument 404 http://www.youwebsite.com/error.html
errorDocument 500 http://www.youwebsite.com/error.html

Перенаправление

Для дальнейших примеров, вам нужно активировать опцию RewriteEngine On в Apache Server-а.

RewriteEngine on

Перенаправление на домен

.htacces код для перенаправления с yourwebsite.com на www.yourwebsite.com

RewriteCond %{HTTP_HOST} ^yourwebsite.com
RewriteRule (.*) http://www.yourwebsite.com/$1 [R=301,L]

Перенаправление на поддомен

Файлы для поддомена будут храниться в отдельном каталоге. Допустим http://www.yourwebsite.com связан с папкой website_folder folder.

RewriteCond %{HTTP_HOST} ^www\.yourwebsite\.com$
RewriteCond %{REQUEST_URI} !^/website_folder/
RewriteRule (.*) /website_folder/$1

Адрес http://subdomain.yourwebsite.com будет связан с каталогом subdomain_folder.

RewriteCond %{HTTP_HOST} ^subdomain\.yourwebsite\.com$
RewriteCond %{REQUEST_URI} !^/subdomain_folder/
RewriteRule (.*) /subdomain_folder/$1

Перенаправление для старого домена

К примеру, нам необходимо сделать редирект с старого домена на новый; с (abc.com) на (xyz.com).

RewriteCond %{HTTP_HOST} ^abc.com
RewriteRule (.*) http://www.xyz.com/$1 [R=301,L]
RewriteCond %{HTTP_HOST} ^www\.abc\.com
RewriteRule (.*) http://www.abc.com/$1 [R=301,L]

ЧПУ (человеко понятные адреса)

URL Профиля

Параметр profile будет состоять из символов [a-zA-Z0-9_-].

http://labs.9lessons.info/profile.php?username=srinivas

меняем на

http://labs.9lessons.info/srinivas

RewriteRule ^([a-zA-Z0-9_-]+)$ profile.php?username=$1
RewriteRule ^([a-zA-Z0-9_-]+)/$ profile.php?username=$1

URL Сообщений

http://labs.9lessons.info/messages.php?message_username=srinivas

меняем на

http://labs.9lessons.info/messages/srinivas

RewriteRule ^messages/([a-zA-Z0-9_-]+)$ messages.php?message_username=$1
RewriteRule ^messages/([a-zA-Z0-9_-]+)/$ messages.php?message_username=$1

URL Друзей

http://labs.9lessons.info/friends.php?username=srinivas

меняем на

http://labs.9lessons.info/friends/srinivas

RewriteRule ^friends/([a-zA-Z0-9_-]+)$ friends.php?username=$1
RewriteRule ^friends/([a-zA-Z0-9_-]+)/$ friends.php?username=$1

URL Друзей с двумя параметрами

Первый параметр будет состоять из символов [a-zA-Z0-9_-], а второй из [0-9]

http://labs.9lessons.info/friends.php?username=srinivas&page=2

меняем на

http://labs.9lessons.info/friends/srinivas/2

RewriteRule ^friends/([a-zA-Z0-9_-]+)/([0-9]+)$ friends.php?username=$1&page=$2
RewriteRule ^friends/([a-zA-Z0-9_-]+)/([0-9]+)/$ friends.php?username=$1&page=$2

Прячем формат файла

http://www.yourwebsite.com/index.html

меняем на

http://www.yourwebsite.com/index

RewriteRule ^([^/.]+)/?$ $1.html

Источник: ruseller.com

Нам будет приятно

Поделитесь

Комментарии

Загрузка комментариев...