Last active
January 15, 2016 14:33
-
-
Save Zlatov/1f5b9f0b886518123e09 to your computer and use it in GitHub Desktop.
htaccess
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# ##################### | |
# ## ## | |
# ## Кодировка ## | |
# ## ## | |
# ##################### | |
# Кодировка | |
#AddDefaultCharset UTF-8 | |
# Если mod_charset есть на сервере | |
<IfModule mod_charset.c> | |
# Отключаем перекодировку | |
CharsetDisable On | |
# Кодировка, в которой документы хранятся на диске | |
CharsetSourceEnc utf-8 | |
# Кодировка по-умолчанию для данного сервера | |
CharsetDefault utf-8 | |
</IfModule> | |
# ################# | |
# ## ## | |
# ## Index ## | |
# ## ## | |
# ################# | |
# Первостепенность поиска индексных файлов при указании директории | |
DirectoryIndex index.php index.html | |
# Запрещает (-Indexes) или разрешает (+Indexes) отображение содеримого директории. | |
Options -Indexes | |
# ###################################### | |
# ## ## | |
# ## PHP переменные и обработка ## | |
# ## ## | |
# ###################################### | |
# Само собой | |
php_flag register_globals off | |
# Волшебные кавычки для входных данных GET/POST/Cookie | |
php_flag magic_quotes_gpc 0 | |
# Волшебные кавычки для данных, поступающих во время выполнения (из SQL, exec(), ...) | |
php_flag magic_quotes_runtime 0 | |
# ###################### | |
# ## ## | |
# ## Ошибки PHP ## | |
# ## ## | |
# ###################### | |
# Запись ошибок в логи | |
php_flag log_errors on | |
# В какие логи писать, например, | |
# в том же месте ге скрипт с ошибкой: "php_value error_log PHP-errors.log", что не очень удобно | |
# или в одном файле на проект: "/path/to/public_html/PHP-errors.log" (с DOCUMENT_ROOT) | |
# под виндой "D:/path/to/public_html/PHP-errors.log" | |
php_value error_log /home/path/public_html/domain/PHP_errors.log | |
# Задание максимальной длины log_errors в байтах. Значение по умолчанию 1024. Установка значения в 0 позволяет снять ограничение на длину log_errors. | |
php_value log_errors_max_len 1024 | |
# Определяет типы выводимых ошибок по маске | |
# "E_ERROR" - 1 | |
# "E_WARNING" - 2 | |
# "E_PARSE" - 4 | |
# "E_NOTICE" - 8 | |
# "E_CORE_ERROR" - 16 | |
# "E_CORE_WARNING" - 32 | |
# "E_COMPILE_ERROR" - 64 | |
# "E_COMPILE_WARNING" - 128 | |
# "E_USER_ERROR" - 256 | |
# "E_USER_WARNING" - 512 | |
# "E_USER_NOTICE" - 1024 | |
# "E_STRICT" - 2048 | |
# "E_RECOVERABLE_ERROR" - 4096 | |
# "E_DEPRECATED" - 8192 | |
# "E_USER_DEPRECATED" - 16384 | |
# "E_ALL" - 32767 | |
php_value error_reporting 2047 | |
# Включает / выключает вывод ошибок в браузер (php_flag display_errors), если сайт рабочий ошибки нужно писать в логи | |
php_flag display_errors on | |
# Отключает / включает HTML тэги в сообщениях об ошибках. Ссылки на страницы с описаниями ошибок. За такие ссылки ответственны docref_root и docref_ext. | |
php_flag html_errors on | |
# ##################### | |
# ## ## | |
# ## Остальное ## | |
# ## ## | |
# ##################### | |
# | |
#ErrorDocument 404 /404/ | |
#ErrorDocument 403 /404/ | |
# ############################## | |
# ## ## | |
# ## Модуль mod_rewrite ## | |
# ## ## | |
# ############################## | |
# Если mod_rewrite есть на сервере | |
<IfModule mod_rewrite.c> | |
# Включаем модуль mod_rewrite выполняющий URL преобразования на лету. | |
RewriteEngine on | |
# Если системный администратор запрещает использование 'Options +FollowSymlinks' — не сможем ограничить использование mod_rewrite для отдельных каталогов, вместо этого изменения будут действовать на весь сервер. | |
# если с этой директивой выдает ошибку - комментируем (в зависимости от хостера) | |
Options +FollowSymlinks | |
# Устанавливает базовый URL для преобразований в каталоге. | |
RewriteBase / | |
# Блокируем доступ к файлам .htaccess | |
RewriteRule ^.htaccess$ - [F] | |
# 301 редиректы (перемещена постоянно) со страницы на страницу. Примеры: | |
# Работает | |
#RewriteCond %{REQUEST_URI} ^/i6\.html$ | |
#RewriteRule ^.*$ http://www.zlatov.net/publication/import-chertejey-v-3ds-max-iz-autocad.html [R=301,L] | |
# Работает -http://www.zlatov.net | |
#RewriteCond %{REQUEST_URI} ^/i8\.html$ | |
#RewriteRule ^.*$ /publication/import-chertejey-v-3ds-max-iz-autocad.html [R=301,L] | |
# Работает -/ | |
#RewriteCond %{REQUEST_URI} ^/i9\.html$ | |
#RewriteRule ^.*$ publication/import-chertejey-v-3ds-max-iz-autocad.html [R=301,L] | |
# Перенаправление адреса содеражащего текст "text" на страницу /404/ | |
#RewriteCond %{QUERY_STRING} ^text.+$ | |
#RewriteRule ^.*$ 404/ | |
# Перенаправление с адреса без www на адрес с www. | |
# Перенаправление с явным указанием переменной: | |
RewriteCond %{HTTP_HOST} !^www\. [NC] | |
RewriteCond %{HTTP_HOST} !^$ | |
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L] | |
# Перенаправление вручную: | |
#RewriteCond %{HTTP_HOST} ^domain.ru [NC] | |
#RewriteCond %{HTTP_HOST} !^$ | |
#RewriteRule ^(.*)$ http://www.domain.ru/$1 [R=301,L] | |
# Перенаправление с адреса с www на адрес без www: | |
#RewriteCond %{HTTP_HOST} ^www\.(.*) [NC] | |
#RewriteRule ^(.*)$ http://%1/$1 [R=301,L] | |
# Убираем множественные слэши в середине запроса: | |
RewriteCond %{REQUEST_URI} ^(.*)/{2,}(.*)$ | |
RewriteRule .* %1/%2 [R=301,L] | |
# Убираем множественные слэши в начале и/или в конце запроса: | |
RewriteCond %{THE_REQUEST} ^[A-Z]+\s//+(.*)\sHTTP/[0-9.]+$ [OR] | |
RewriteCond %{THE_REQUEST} ^[A-Z]+\s(.*/)/+\sHTTP/[0-9.]+$ | |
RewriteRule .* http://%{HTTP_HOST}/%1 [R=301,L] | |
# Добавляем слэшь в конце папок: | |
RewriteCond %{REQUEST_FILENAME} !-f | |
RewriteCond %{REQUEST_URI} !(.*)/$ | |
RewriteRule ^(.*)$ $1/ [R=301,L] | |
# Переадресуем /index.php* на / (для SEO, т.е. отсутствия дублей по index.php?category=contacts) | |
RewriteCond %{THE_REQUEST} ^.*/index\.php | |
RewriteRule ^(.*)index.php /$1 [R=301,L] | |
## Последнее перенаправление | |
## Если запрашиваем реальная папка или файл - ничего не делаем, иначе "заворачиваем" все запросы на index.php, который лежит в RewriteBase | |
#RewriteCond %{REQUEST_FILENAME} !-f | |
#RewriteCond %{REQUEST_FILENAME} !-d | |
#RewriteRule ^(.*)$ /index.php [L,QSA] | |
# Или для статического ЧПУ | |
# Админка | |
RewriteCond %{REQUEST_FILENAME} !-d | |
RewriteRule ^admin/([^/\.]+)/?$ /admin/index.php?category=$1 [L,QSA] | |
# Сайт | |
RewriteCond %{REQUEST_FILENAME} !-d | |
RewriteRule ^([^/\.]+)/?$ index.php?category=$1 [L] | |
RewriteCond %{REQUEST_FILENAME} !-d | |
RewriteRule ^([^/\.]+)/([0-9]+)/?$ index.php?category=$1&page=$2 [L] | |
RewriteCond %{REQUEST_FILENAME} !-d | |
RewriteRule ^([^/\.]+)/([^/\.]+)/?$ index.php?category=$1$section=$2 [L] | |
RewriteCond %{REQUEST_FILENAME} !-d | |
RewriteRule ^([^/\.]+)/([^/\.]+)/([0-9]+)/?$ index.php?category=$1$section=$2&page=$3 [L] | |
RewriteCond %{REQUEST_FILENAME} !-f | |
RewriteRule ^([^/\.]+)/([^/\.]+)\.html$ index.php?category=$1&element=$2 [L] | |
RewriteCond %{REQUEST_FILENAME} !-f | |
RewriteRule ^theme/lorem/([^/\.]+)\.html$ theme/lorem/$1.html [L] | |
RewriteCond %{REQUEST_FILENAME} !-f | |
RewriteRule ^([^/\.]+)/([^/\.]+)/([^/\.]+)\.html$ index.php?category=$1$section=$2&element=$3 [L] | |
RewriteCond %{REQUEST_FILENAME} !-d | |
RewriteCond %{REQUEST_FILENAME} !-f | |
RewriteRule ^.*$ index.php?category=404 | |
</IfModule> | |
# Шпаргалка | |
# RewriteCond | |
# — условие, при котором срабатывают правила перенаправления. | |
# условий может быть несколько (по лдному в каждой строке), между условиями нужно ставить [OR] (в конце верхнего условия). | |
#RewriteCond … [NC, OR] | |
#RewriteCond … [NC] | |
# RewriteCond [flags]: | |
# 'nocase|NC' - регистронезависимо | |
# 'ornext|OR' - либо следующее условие | |
# '-d' является ли каталогом | |
# '-f' является ли обычным файлом | |
# '-s' является ли обычным файлом с ненулевым размером | |
# '-l' является ли символической ссылкой | |
# '-F' проверка существования файла через подзапрос | |
# '-U' проверка существования URL через подзапрос | |
# RewriteRule | |
# — основная директива преобразований. | |
# R[=code] - вызывает редирект. | |
# L - чтобы не преобразовывать текущий URL другими правилами преобразований. | |
# QSA - добавлять строку запроса. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment