Skip to content

Instantly share code, notes, and snippets.

@Wegazz
Last active July 19, 2020 09:33
Show Gist options
  • Select an option

  • Save Wegazz/14f050c7c2acb5f27f0b0fb6ae0855c2 to your computer and use it in GitHub Desktop.

Select an option

Save Wegazz/14f050c7c2acb5f27f0b0fb6ae0855c2 to your computer and use it in GitHub Desktop.

Revisions

  1. Wegazz revised this gist Jul 19, 2020. 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
    @@ -11,6 +11,7 @@ Options +FollowSymLinks
    ############################################################################
    #### Перенаправляем протокол http на https ####
    ############################################################################
    #### Отключено, так как правило ниже перенаправляет.
    # 1. Редирект всего, что не на 443 порту (раскоментировать директивы пункта 1)
    # RewriteCond %{SERVER_PORT} !^443$
    # Проверяем наличие http в URL.
    @@ -19,13 +20,15 @@ Options +FollowSymLinks


    ############################################################################
    #### Выбор основного зеркала (или с www или без www) ####
    #### Выбор основного зеркала (или с www или без www) ####
    #### С перенаправлением на (http или https) ####
    ############################################################################
    # 1. Редирект с www на без www. (раскоментировать директивы пункта 1)
    RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
    # Проверяем, содержит ли домен www (в начале URL).
    RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
    # Перенаправляем URL на домен без www.
    # (http или https) прописать нужное.
    ####
    # 2. Редирект без www на www. (раскоментировать директивы пункта 2)
    #RewriteCond %{HTTP_HOST} !^www\.(.*) [NC]
  2. Wegazz created this gist Jul 19, 2020.
    91 changes: 91 additions & 0 deletions .htaccess
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,91 @@
    ############################################################################
    #### Cтандартный .htaccess ####
    ############################################################################
    RewriteEngine On
    # Директива включает редиректы.
    RewriteBase /
    # Без директивы (.*) = /$1 будет /var/wwww/site/web/$1 с директивой = /$1
    Options +FollowSymLinks
    # Разрешает переход по символическим ссылкам.

    ############################################################################
    #### Перенаправляем протокол http на https ####
    ############################################################################
    # 1. Редирект всего, что не на 443 порту (раскоментировать директивы пункта 1)
    # RewriteCond %{SERVER_PORT} !^443$
    # Проверяем наличие http в URL.
    # RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
    # Перенаправляем протокол на https.


    ############################################################################
    #### Выбор основного зеркала (или с www или без www) ####
    ############################################################################
    # 1. Редирект с www на без www. (раскоментировать директивы пункта 1)
    RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
    # Проверяем, содержит ли домен www (в начале URL).
    RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
    # Перенаправляем URL на домен без www.
    ####
    # 2. Редирект без www на www. (раскоментировать директивы пункта 2)
    #RewriteCond %{HTTP_HOST} !^www\.(.*) [NC]
    # Проверяем, не содержит ли домен www (в начале URL).
    #RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
    # Перенаправляем URL на домен c www.

    ############################################################################
    #### Убираем повторяющиеся слеши и знаки вопроса ? (/|?) в URL ####
    ############################################################################
    # RewriteCond %{THE_REQUEST} //
    RewriteCond %{THE_REQUEST} (//|/?)
    # Проверяем, повторяется ли слеш (//) или (/?) более одного раза?
    RewriteRule .* /$0 [R=301,L]
    # Исключаем все лишние слеши и вопросительные знаки.

    ####

    # Не рабочий метод метод (раскоментировать директивы пункта)
    # RewriteCond %{REQUEST_URI} ^(.*)/{2,}(.*)$
    # Проверяем, повторяется ли слеш (//) более двух раз.
    # RewriteRule . %1/%2 [R=301,L]
    # Исключаем все лишние слеши.

    ############################################################################
    #### Убираем слеши в конце URL для статических файлов (содержит точку) ####
    ############################################################################
    RewriteCond %{REQUEST_URI} \..+$
    # Если файл содержит точку.
    RewriteCond %{REQUEST_FILENAME} !-d
    # И это не директория.
    RewriteCond %{REQUEST_FILENAME} -f
    # Является файлом.
    RewriteCond %{REQUEST_URI} ^(.+)/$
    # И в конце URL есть слеш.
    RewriteRule ^(.+)/$ /$1 [R=301,L]
    # Исключить слеш.

    ############################################################################
    #### Добавляем слеш(/), если его нет, и это не файл. ####
    ############################################################################
    RewriteCond %{REQUEST_URI} !(.*)/$
    # Если слеша в конце нет.
    RewriteCond %{REQUEST_FILENAME} !-f
    # Не является файлом.
    RewriteCond %{REQUEST_URI} !\..+$
    # В URL нет точки (файл).
    RewriteRule ^(.*)$ $1/ [L,R=301]
    # Добавляем слеш в конце.

    ############################################################################
    #### Убираем index.(html|php) если они есть в конце URL ####
    ############################################################################
    RewriteCond %{REQUEST_METHOD} =GET
    # Выявляем GET запрос в URL (не POST).
    RewriteCond %{REQUEST_URI} ^(.*)/index\.(html|php)$
    # URL cодержит index.(html|php) в конце.
    RewriteRule ^(.*)$ %1/ [R=301,L]
    # Удалить index.php из URL.

    ############################################################################
    #### Конец общей части, далее следует собственные директивы .htaccess ####
    ############################################################################