Skip to content

Instantly share code, notes, and snippets.

@Zlatov
Last active January 15, 2016 14:33
Show Gist options
  • Select an option

  • Save Zlatov/1f5b9f0b886518123e09 to your computer and use it in GitHub Desktop.

Select an option

Save Zlatov/1f5b9f0b886518123e09 to your computer and use it in GitHub Desktop.

Revisions

  1. Zlatov revised this gist Jan 15, 2016. 1 changed file with 4 additions and 1 deletion.
    5 changes: 4 additions & 1 deletion htaccess
    Original file line number Diff line number Diff line change
    @@ -55,7 +55,10 @@ php_flag magic_quotes_runtime 0
    # Запись ошибок в логи
    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 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.
  2. Zlatov revised this gist Jan 15, 2016. 1 changed file with 13 additions and 2 deletions.
    15 changes: 13 additions & 2 deletions htaccess
    Original file line number Diff line number Diff line change
    @@ -61,13 +61,24 @@ 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_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 32767
    php_value error_reporting 2047

    # Включает / выключает вывод ошибок в браузер (php_flag display_errors), если сайт рабочий ошибки нужно писать в логи
    php_flag display_errors on
  3. Zlatov revised this gist Nov 30, 2014. 1 changed file with 4 additions and 4 deletions.
    8 changes: 4 additions & 4 deletions htaccess
    Original file line number Diff line number Diff line change
    @@ -120,6 +120,10 @@ php_flag html_errors on
    #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]
    @@ -134,10 +138,6 @@ php_flag html_errors on
    #RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
    #RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

    # Перенаправление ссылки содеражащей текст "text" на страницу /404/
    #RewriteCond %{QUERY_STRING} ^text.+$
    #RewriteRule ^.*$ 404/

    # Убираем множественные слэши в середине запроса:
    RewriteCond %{REQUEST_URI} ^(.*)/{2,}(.*)$
    RewriteRule .* %1/%2 [R=301,L]
  4. Zlatov renamed this gist Nov 30, 2014. 1 changed file with 0 additions and 0 deletions.
    File renamed without changes.
  5. Zlatov revised this gist Nov 30, 2014. 1 changed file with 91 additions and 81 deletions.
    172 changes: 91 additions & 81 deletions simplepage htaccess
    Original file line number Diff line number Diff line change
    @@ -9,14 +9,14 @@

    # Если mod_charset есть на сервере
    <IfModule mod_charset.c>
    # Отключаем перекодировку
    CharsetDisable On
    # Кодировка, в которой документы хранятся на диске
    CharsetSourceEnc utf-8
    # Кодировка по-умолчанию для данного сервера
    CharsetDefault utf-8
    # Отключаем перекодировку
    CharsetDisable On
    # Кодировка, в которой документы хранятся на диске
    CharsetSourceEnc utf-8
    # Кодировка по-умолчанию для данного сервера
    CharsetDefault utf-8
    </IfModule>

    # #################
    @@ -96,88 +96,98 @@ php_flag html_errors on
    # Если mod_rewrite есть на сервере
    <IfModule mod_rewrite.c>

    # Включаем модуль mod_rewrite выполняющий URL преобразования на лету.
    RewriteEngine on
    # Включаем модуль mod_rewrite выполняющий URL преобразования на лету.
    RewriteEngine on

    # Если системный администратор запрещает использование 'Options +FollowSymlinks' — не сможем ограничить использование mod_rewrite для отдельных каталогов, вместо этого изменения будут действовать на весь сервер.
    # если с этой директивой выдает ошибку - комментируем (в зависимости от хостера)
    Options +FollowSymlinks

    # Устанавливает базовый URL для преобразований в каталоге.
    RewriteBase /
    # Устанавливает базовый URL для преобразований в каталоге.
    RewriteBase /

    # Блокируем доступ к файлам .htaccess
    RewriteRule ^.htaccess$ - [F]


    # Перенаправление с адреса без 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]

    # Перенаправление ссылки содеражащей текст "text" на страницу /404/
    #RewriteCond %{QUERY_STRING} ^text.+$
    #RewriteRule ^.*$ 404/

    # Убираем множественные слэши в середине запроса:
    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
    # 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]

    # Перенаправление с адреса без 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]

    # Перенаправление ссылки содеражащей текст "text" на страницу /404/
    #RewriteCond %{QUERY_STRING} ^text.+$
    #RewriteRule ^.*$ 404/

    # Убираем множественные слэши в середине запроса:
    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>

  6. Zlatov revised this gist Nov 30, 2014. 1 changed file with 4 additions and 2 deletions.
    6 changes: 4 additions & 2 deletions simplepage htaccess
    Original file line number Diff line number Diff line change
    @@ -183,7 +183,8 @@ php_flag html_errors on

    # Шпаргалка

    # RewriteCond — условие, при котором срабатывают правила перенаправления.
    # RewriteCond
    # — условие, при котором срабатывают правила перенаправления.
    # условий может быть несколько (по лдному в каждой строке), между условиями нужно ставить [OR] (в конце верхнего условия).
    #RewriteCond … [NC, OR]
    #RewriteCond … [NC]
    @@ -198,7 +199,8 @@ php_flag html_errors on
    # '-U' проверка существования URL через подзапрос


    # RewriteRule — основная директива преобразований.
    # RewriteRule
    # — основная директива преобразований.
    # R[=code] - вызывает редирект.
    # L - чтобы не преобразовывать текущий URL другими правилами преобразований.
    # QSA - добавлять строку запроса.
  7. Zlatov revised this gist Nov 30, 2014. 1 changed file with 8 additions and 4 deletions.
    12 changes: 8 additions & 4 deletions simplepage htaccess
    Original file line number Diff line number Diff line change
    @@ -111,9 +111,6 @@ php_flag html_errors on


    # Перенаправление с адреса без www на адрес с www.
    # R[=code] - вызывает редирект.
    # L - чтобы не преобразовывать текущий URL другими правилами преобразований.
    # QSA - добавлять строку запроса.
    # Перенаправление с явным указанием переменной:
    RewriteCond %{HTTP_HOST} !^www\. [NC]
    RewriteCond %{HTTP_HOST} !^$
    @@ -185,7 +182,8 @@ php_flag html_errors on
    </IfModule>

    # Шпаргалка
    # RewriteCond — условие, при котором срабатывают правила перенаправления

    # RewriteCond — условие, при котором срабатывают правила перенаправления.
    # условий может быть несколько (по лдному в каждой строке), между условиями нужно ставить [OR] (в конце верхнего условия).
    #RewriteCond … [NC, OR]
    #RewriteCond … [NC]
    @@ -198,3 +196,9 @@ php_flag html_errors on
    # '-l' является ли символической ссылкой
    # '-F' проверка существования файла через подзапрос
    # '-U' проверка существования URL через подзапрос


    # RewriteRule — основная директива преобразований.
    # R[=code] - вызывает редирект.
    # L - чтобы не преобразовывать текущий URL другими правилами преобразований.
    # QSA - добавлять строку запроса.
  8. Zlatov revised this gist Nov 30, 2014. No changes.
  9. Zlatov revised this gist Nov 30, 2014. 1 changed file with 2 additions and 0 deletions.
    2 changes: 2 additions & 0 deletions simplepage htaccess
    Original file line number Diff line number Diff line change
    @@ -187,6 +187,8 @@ php_flag html_errors on
    # Шпаргалка
    # RewriteCond — условие, при котором срабатывают правила перенаправления
    # условий может быть несколько (по лдному в каждой строке), между условиями нужно ставить [OR] (в конце верхнего условия).
    #RewriteCond … [NC, OR]
    #RewriteCond … [NC]
    # RewriteCond [flags]:
    # 'nocase|NC' - регистронезависимо
    # 'ornext|OR' - либо следующее условие
  10. Zlatov revised this gist Nov 30, 2014. 1 changed file with 4 additions and 1 deletion.
    5 changes: 4 additions & 1 deletion simplepage htaccess
    Original file line number Diff line number Diff line change
    @@ -184,7 +184,10 @@ php_flag html_errors on

    </IfModule>

    # Шпаргалка RewriteCond [flags]:
    # Шпаргалка
    # RewriteCond — условие, при котором срабатывают правила перенаправления
    # условий может быть несколько (по лдному в каждой строке), между условиями нужно ставить [OR] (в конце верхнего условия).
    # RewriteCond [flags]:
    # 'nocase|NC' - регистронезависимо
    # 'ornext|OR' - либо следующее условие
    # '-d' является ли каталогом
  11. Zlatov revised this gist Nov 30, 2014. 1 changed file with 4 additions and 0 deletions.
    4 changes: 4 additions & 0 deletions simplepage htaccess
    Original file line number Diff line number Diff line change
    @@ -106,6 +106,10 @@ php_flag html_errors on
    # Устанавливает базовый URL для преобразований в каталоге.
    RewriteBase /

    # Блокируем доступ к файлам .htaccess
    RewriteRule ^.htaccess$ - [F]


    # Перенаправление с адреса без www на адрес с www.
    # R[=code] - вызывает редирект.
    # L - чтобы не преобразовывать текущий URL другими правилами преобразований.
  12. Zlatov revised this gist Nov 30, 2014. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion simplepage htaccess
    Original file line number Diff line number Diff line change
    @@ -56,7 +56,7 @@ php_flag magic_quotes_runtime 0
    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/s/striketoru/public_html/php.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
  13. Zlatov revised this gist Nov 30, 2014. 1 changed file with 5 additions and 4 deletions.
    9 changes: 5 additions & 4 deletions simplepage htaccess
    Original file line number Diff line number Diff line change
    @@ -1,5 +1,3 @@
    #<?php

    # #####################
    # ## ##
    # ## Кодировка ##
    @@ -83,8 +81,7 @@ php_flag html_errors on
    # ## ##
    # #####################

    # Что-то про доступ к файлам вне D_R но если на них есть ярлыки, говорят не влияет но лучше оставить, а если с ней выдает ошибку - комментируем (в зависимости от хостера)
    Options +FollowSymlinks


    #
    #ErrorDocument 404 /404/
    @@ -102,6 +99,10 @@ Options +FollowSymlinks
    # Включаем модуль mod_rewrite выполняющий URL преобразования на лету.
    RewriteEngine on

    # Если системный администратор запрещает использование 'Options +FollowSymlinks' — не сможем ограничить использование mod_rewrite для отдельных каталогов, вместо этого изменения будут действовать на весь сервер.
    # если с этой директивой выдает ошибку - комментируем (в зависимости от хостера)
    Options +FollowSymlinks

    # Устанавливает базовый URL для преобразований в каталоге.
    RewriteBase /

  14. Zlatov revised this gist Nov 5, 2014. 1 changed file with 6 additions and 6 deletions.
    12 changes: 6 additions & 6 deletions simplepage htaccess
    Original file line number Diff line number Diff line change
    @@ -110,13 +110,13 @@ Options +FollowSymlinks
    # L - чтобы не преобразовывать текущий URL другими правилами преобразований.
    # QSA - добавлять строку запроса.
    # Перенаправление с явным указанием переменной:
    #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} !^www\. [NC]
    RewriteCond %{HTTP_HOST} !^$
    RewriteRule ^(.*)$ http://www.domain.ru/$1 [R=301,L]
    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]
  15. Zlatov renamed this gist Nov 5, 2014. 1 changed file with 0 additions and 0 deletions.
    File renamed without changes.
  16. Zlatov revised this gist Oct 27, 2014. 1 changed file with 3 additions and 3 deletions.
    6 changes: 3 additions & 3 deletions htaccess simplepage
    Original file line number Diff line number Diff line change
    @@ -58,10 +58,10 @@ php_flag magic_quotes_runtime 0
    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/groshost/domain.ru/docs/mysqldump/php.log
    php_value error_log /home/s/striketoru/public_html/php.log

    # Длинна логов чтобы не пузеть со временем
    php_value log_errors_max_len 10240
    # Задание максимальной длины 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
  17. Zlatov renamed this gist Oct 27, 2014. 1 changed file with 0 additions and 0 deletions.
    File renamed without changes.
  18. Zlatov created this gist Oct 27, 2014.
    190 changes: 190 additions & 0 deletions htaccess
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,190 @@
    #<?php

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

    # Кодировка
    #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.log", или в одном файле: "/home/path/public_html/domain/PHP_errors.log" (с DOCUMENT_ROOT)
    php_value error_log /home/groshost/domain.ru/docs/mysqldump/php.log

    # Длинна логов чтобы не пузеть со временем
    php_value log_errors_max_len 10240

    # Определяет тип выводимых ошибок (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

    # #####################
    # ## ##
    # ## Остальное ##
    # ## ##
    # #####################

    # Что-то про доступ к файлам вне D_R но если на них есть ярлыки, говорят не влияет но лучше оставить, а если с ней выдает ошибку - комментируем (в зависимости от хостера)
    Options +FollowSymlinks

    #
    #ErrorDocument 404 /404/
    #ErrorDocument 403 /404/

    # ##############################
    # ## ##
    # ## Модуль mod_rewrite ##
    # ## ##
    # ##############################

    # Если mod_rewrite есть на сервере
    <IfModule mod_rewrite.c>

    # Включаем модуль mod_rewrite выполняющий URL преобразования на лету.
    RewriteEngine on

    # Устанавливает базовый URL для преобразований в каталоге.
    RewriteBase /

    # Перенаправление с адреса без www на адрес с www.
    # R[=code] - вызывает редирект.
    # L - чтобы не преобразовывать текущий URL другими правилами преобразований.
    # QSA - добавлять строку запроса.
    # Перенаправление с явным указанием переменной:
    #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]

    # Перенаправление ссылки содеражащей текст "text" на страницу /404/
    #RewriteCond %{QUERY_STRING} ^text.+$
    #RewriteRule ^.*$ 404/

    # Убираем множественные слэши в середине запроса:
    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 [flags]:
    # 'nocase|NC' - регистронезависимо
    # 'ornext|OR' - либо следующее условие
    # '-d' является ли каталогом
    # '-f' является ли обычным файлом
    # '-s' является ли обычным файлом с ненулевым размером
    # '-l' является ли символической ссылкой
    # '-F' проверка существования файла через подзапрос
    # '-U' проверка существования URL через подзапрос