12 марта, 2013, обновлено 7 декабря, 2015

htaccess

Содержимое .htaccess файла в корне сайта

# #####################
# ##                 ##
# ##    Кодировка    ##
# ##                 ##
# #####################

# Если mod_charset есть на сервере
<IfModule mod_charset.c>
	# Выключить обработку модулем mod_charset
	CharsetDisable On

	# Кодировка, в которой документы хранятся на диске
	CharsetSourceEnc utf-8

	# Кодировка по-умолчанию для данного сервера
	CharsetDefault utf-8
</IfModule>

# Выставить кодировку по умолчанию стандартными средствами apache
AddDefaultCharset UTF-8

# Для выставления кодировки windows-1251 при PHP > 5.6
# (сервер может выдавать кодировку UTF-8 даже если все выше указывает на windows-1251)
#php_value default_charset windows-1251

# #################
# ##             ##
# ##    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.log", или в одном файле: "/home/path/public_html/domain/PHP_errors.log" (с DOCUMENT_ROOT)
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

# Определяет тип выводимых ошибок (php_value error_reporting), наример, все ошибки кроме замечаний ("E_ALL & ~E_NOTICE") или все ошибки ("E_ALL")
# "E_ERROR" - 1
# "E_WARNING" - 2
# "E_NOTICE" - 8
# "E_STRICT" - 2048
# "E_ALL" - 32767
php_value error_reporting 32767

# Включает / выключает вывод ошибок в браузер (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 - добавлять строку запроса.


Добавить комментарий

2010–2018 Блог Максима Златова, контакты

PHP execution time: 0.0083 s.
SQL execution time: 0.0001 s. (select publication with comments)

Яндекс.Метрика