Ответы пользователя по тегу htaccess
  • Как настроить редирект с WWW для сайта кучей поддоменов (по городам)?

    shambler81
    @shambler81 Куратор тега htaccess
    RewriteCond %{HTTP_HOST} !^www\..+$ [NC]
    #Если уже не содержит www
    RewriteCond %{HTTP_HOST} ^(.+\.siteName\.ru)$ [NC]
    # если  домен содержит sitemame.ru и есть домен 3 уровня
    RewriteRule ^(.*)$ %1$1 [R=301,L] 
    # То редирект   на скобку с Rweitecond плюс скобку RewriteRule
    Ответ написан
    Комментировать
  • Как запретить доступ по реальному URL с помощью 301 на его алиас mod_rewrite?

    shambler81
    @shambler81 Куратор тега htaccess
    правильно ли я понимаю что вы перенаправили на php а потом обратно на html ? и вам нужно сделать это два раза?
    ООчень странно
    Но есл иэто так то не проще ли в php файл положить html
    более подробно опишите тз
    Ответ написан
  • Как правильно добавить слеш в конце адреса?

    shambler81
    @shambler81 Куратор тега htaccess
    отнють не всегда его можно добавлять, а иногда нужно наоборот
    ############################################################################
    #### Убираем слеши в конце 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]
       # Добавляем слеш в конце.

    Часто используемые правила я более подробно описывал тут.
    https://klondike-studio.ru/standards/standartnyy-h...
    Ответ написан
    4 комментария
  • Как сделать redirect со слешем и перенаправлением запросов на index.php?

    shambler81
    @shambler81 Куратор тега htaccess
    все описал тут, копируй вставляй
    И не забывай что отнють не всегда нужно вести на / иногда приходится даже убирать его.
    https://klondike-studio.ru/standards/standartnyy-h...
    Ответ написан
    6 комментариев
  • Как разобраться с редиректом в htaccess?

    shambler81
    @shambler81 Куратор тега htaccess
    Все это лядство всегда выше ЧПУ! ЧПУ это то что инициализирует движок ( если совсем в кратце) в твоем случае это посел RewriteBase /
    Сюда вставляешь вот это
    RewriteCond %{REQUEST_FILENAME} !-d
    # если это не директория
    RewriteCond %{REQUEST_FILENAME} !-f
    # и если это не файл
    RewriteCond %{REQUEST_URI} (.+)\.html$
    # И если в урле есть
    RewriteRule ^(.*)$ http://site.ru/%1 [R=301,L]
    #то выполняется условие в котором $ мы вообще не испльзуем а используем % то же самое толоко из RewriteCond ( то что в скобочках предидущего правила. И так Правило говорит что пофиггу какой урл мы берем что было в скобках в предидущем правиле и все.
    
    
    
    
    RewriteRule . /index.php [L]
    Ответ написан
    Комментировать
  • Как создать такой .htaccess?

    shambler81
    @shambler81 Куратор тега htaccess
    все это легко найти в гугле, не вижу смысла расписывать кроме добавления слеша. тут много тонкостй.
    его не везде можно добавлять а иногда и убирать.
    ############################################################################
    #### Убираем повторяющиеся слеши (/) в URL                              ####
    ############################################################################
    RewriteCond %{THE_REQUEST} //
       # Проверяем, повторяется ли слеш (//) более двух раз.
    RewriteRule .* /$0 [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.php, если он есть в конце URL                        ####
    ############################################################################
    RewriteCond %{REQUEST_METHOD} =GET
       # Выявляем GET запрос в URL (не POST).
    RewriteCond %{REQUEST_URI} ^(.*)/index\.php$
       # URL cодержит index.php в конце.
    RewriteRule ^(.*)$ %1/ [R=301,L]
       # Удалить index.php из URL.
    Ответ написан
  • Как сделать редиект xxx/yyy ->xxx/category/yyy?

    shambler81
    @shambler81 Куратор тега htaccess
    четко по тз
    RewriteCond %{REQUEST_URI} ^(xxx)/(yyy)(.*)$ 
    RewriteRule ^(.*)$  http://site.ru/%1/category/%2%3 [R=301,L]
    Ответ написан
    Комментировать
  • Почему .htaccess не работает?

    shambler81
    @shambler81 Куратор тега htaccess
    RewriteRule ^blog/articles/([a-z0-9\-/]+) http://site.ru/blog/article.php\?id=$1 [L]
    Ответ написан
    Комментировать
  • Как запретить url с цифрами?

    shambler81
    @shambler81 Куратор тега htaccess
    /ru/tsepy/.*[0-9]{1,}.*
    Ответ написан
    Комментировать
  • Как отредактировать htaccess?

    shambler81
    @shambler81 Куратор тега htaccess
    RewriteCond %{QUERY_STRING} (^|&)id\=1($|&)
    RewriteCond %{QUERY_STRING} (^|&)page\=2($|&)
    RewriteRule .* odemix.ru/note1\?page2? [L,R=301]
    Ответ написан
    Комментировать
  • Как настроить 301 редирект через htaccess без затрагивания дочерних ссылок?

    shambler81
    @shambler81 Куратор тега htaccess
    ^ - начало строки
    $ - конец строки
    ^/tovari/category1$
    Ответ написан
    Комментировать
  • Какой есть спецсимвол (оператор) для придания точного соответствия?

    shambler81
    @shambler81 Куратор тега htaccess
    1. ответ на ваш ^ - начало/ $ - конец строки
    2. вот вам в помощь www.exlab.net/files/tools/sheets/mod_rewrite/mod_r...
    Тут конечно не все но большая часть.
    3.сделайте так.
    RewriteCond %{QUERY_STRING} (^|&)kupalniki($|&) [OR]
    RewriteCond %{QUERY_STRING} (^|&)plyazhnaya-odezhda($|&) [OR]
    RewriteCond %{QUERY_STRING} (^|&)beachwear($|&)
    RewriteRule ^index\.php$ /beachwear-new/? [L,R=301]

    Или вообще сделайте по нормальному

    RewriteCond %{QUERY_STRING} (^|&)kupalniki($|&) 
    RewriteRule ^index\.php$ /beachwear-new/? [L,R=301]
    
    RewriteCond %{QUERY_STRING} (^|&)plyazhnaya-odezhda($|&) 
    RewriteRule ^index\.php$ /beachwear-new/? [L,R=301]
    ...

    Так же я добавил условие и или, то есть если этот будет идти не первым и начинаться с &
    Если у вас много редиректов а вы плаваете
    то воспользуйтесь вот этим отличным сервисом, он на 99% работает корректно
    https://www.donatstudios.com/RewriteRule_Generator
    Ответ написан
  • Как сделать редирект .htaccess с www & http одновременно?

    shambler81
    @shambler81 Куратор тега htaccess
    Раскоментировать нужное.

    ############################################################################
    #### Выбор основного зеркала (с www или без www)                        ####
    ############################################################################
        # 1. Удалить www
    #RewriteCond %{ENV:HTTPS} on
        #Если включен https
    #RewriteRule .* - [E=SSL:s]
        #То создаем переменную  ssl с текстом s
    #RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
        # Проверяем, содержит ли домен www в начале URL.
    #RewriteRule ^(.*)$ http%{ENV:SSL}://%1/$1 [R=301,L]
        # Перенаправляем удаляем www
    
        # 2. Добавить www
    #RewriteCond %{ENV:HTTPS} on
        #Если включен https
    #RewriteRule .* - [E=SSL:s]
        #То создаем переменную  ssl с текстом s
    #RewriteCond %{HTTP_HOST} !^www\.(.*) [NC]
        # Если нет www в начале домена
    #RewriteRule ^(.*)$ http%{ENV:SSL}://www.%{HTTP_HOST}/$1 [R=301,L]
        #Подставляем www и https если он включен.
    
    ############################################################################
    #### Перенаправляем протокол https на http                              ####
    ############################################################################
    #RewriteCond %{ENV:HTTPS} on
       # Проверяем наличие https в URL.
    #RewriteRule ^.*$ http://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
       # Перенаправляем протокол на http.
    
    ############################################################################
    #### Перенаправляем протокол http на https                              ####
    ############################################################################
    #RewriteCond %{ENV:HTTPS} !on
       # Проверяем наличие https в URL.
    #RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
       # Перенаправляем протокол на http.
    Ответ написан
    Комментировать
  • Как правильно настроить перенаправление запроса в .htaccess?

    shambler81
    @shambler81 Куратор тега htaccess
    думаю это очевидно
    я так понимаю вы напилили там свое чпу
    А следоватлеьно и законы те же самые
    RewriteCond %{REQUEST_FILENAME} !-f
    если вам нужно исключиьть все директории
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ public/$1 [L]

    ну или более детально указать директорию с отрицанием "!"
    RewriteCond %{REQUEST_URI} !^/images/.*
    RewriteRule ^(.*)$ public/$1 [L]

    ну или по маске к статическому контенту в этой папке, тут уже ваше желание
    !^/images/+*\.(Jpg|jpeg|png|PNG)
    и так далее...

    RewriteCond - по сути это ЕСЛИ
    их может быть сколько угодно, после них идет рул это ТО
    Ответ написан
  • Две точки входа?

    shambler81
    @shambler81 Куратор тега htaccess
    Без всяких OR
    Просто доблавляйте вот так вокруг стринга
    (^|&)тут сам гет($|&)
    И не забывайте экранировать \=
    А исключить файл можно достаточно просто, когда одно из условий не сработает.
    В текущем случае это не файл (имя файла)
    RewriteCond %{QUERY_STRING} (^|&) (\<|%3C).*script.*(\>|%3E)($|&)
    RewriteCond %{QUERY_STRING} (^|&)GLOBALS(\=|\[|\%[0-9A-Z]{0,2})($|&)
    RewriteCond %{QUERY_STRING} (^|&)_REQUEST(\=|\[|\%[0-9A-Z]{0,2})($|&)
    RewriteCond %{REQUEST_URI} !^/api.php
    RewriteRule ^(.*)$ index.php [F,L]
    Ответ написан
    Комментировать
  • Какой правильный .htaccess для php сайта?

    shambler81
    @shambler81 Куратор тега htaccess
    вопрос не имеет смысла.
    Правеьлный .htaccss -тот который вы сделали, по сути это дополнительные конфигурации и настройки, редиректы и тд.
    Мало того сайт может работать и вовсе без него
    А некоторые виды представления php вовсе игнорируют этот файл принудительно.
    Так что ответ на первый вопрос, - недостаточно данных, какой движок что нужно и тд.
    2. если у вас есть список сопоставлений что к чему, это да можно менять.
    Но думаю вам нужно присмотреться к ЧПУ
    И решить оба вопроса

    Ответ на второй вопрос
    Почитайте как сделать ЧПУ
    master-it.biz/make-friendly-urls-site-php.html
    Ответ написан
    Комментировать
  • Почему htaccess редирект добавляет 2 раза параметры в адресную строку?

    shambler81
    @shambler81 Куратор тега htaccess
    не вижу у вас тут ни одгого правила которое могло бы затронуть GET параметр.
    Надеюсь вы не этим пытаетесь его выцепить ?%{REQUEST_URI}
    Ответ написан
    1 комментарий
  • Как сделать редирект в htaccess?

    shambler81
    @shambler81 Куратор тега htaccess
    Разберите данный набор стандартных правил, большинство вам будут полезны.
    Теперь что касается редиректов с гет и без гет запросов.
    1 удалить гет - в конце поставить ?
    2 Добавить гет в конце урла поставить /\?id\=111 короче не забываем экранировать
    3. Как вырезать часть гет и передать его куда-либо
    Гет не является частью ула и вырезается через RewriteCond квери стриинг
    А вставляется следующим обраом $1 -из конда будет %1
    4. https://www.donatstudios.com/RewriteRule_Generator
    ############################################################################
    #### Стандартный .htaccess для проектов студии Клондайк, версия 3.5     ####
    ############################################################################
    RewriteEngine On
       #  Директива включает редиректы.
    RewriteBase / 
       # Без директивы (.*) = /$1 будет /var/wwww/site/web/$1  с директивой  = /$1
    Options +FollowSymLinks
       # Разрешает переход по символическим ссылкам.
    php_flag display_errors off
      # запретить отображение ошибок  (требование монитора качества)
    php_flag allow_url_fopen off
      # запретить  использовать удаленые файлы (требование проактивной защиты)
    
    ############################################################################
    #### Выбор основного зеркала (с www или без www)                        ####
    ############################################################################
        # 1. Удалить www
    #RewriteCond %{ENV:HTTPS} on
        #Если включен https
    #RewriteRule .* - [E=SSL:s]
        #То создаем переменную  ssl с текстом s
    #RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
        # Проверяем, содержит ли домен www в начале URL.
    #RewriteRule ^(.*)$ http%{ENV:SSL}://%1/$1 [R=301,L]
        # Перенаправляем удаляем www
    
        # 2. Добавить www
    #RewriteCond %{ENV:HTTPS} on
        #Если включен https
    #RewriteRule .* - [E=SSL:s]
        #То создаем переменную  ssl с текстом s
    #RewriteCond %{HTTP_HOST} !^www\.(.*) [NC]
        # Если нет www в начале домена
    #RewriteRule ^(.*)$ http%{ENV:SSL}://www.%{HTTP_HOST}/$1 [R=301,L]
        #Подставляем www и https если он включен.
    
    ############################################################################
    #### Перенаправляем протокол https на http                              ####
    ############################################################################
    #RewriteCond %{ENV:HTTPS} on
       # Проверяем наличие https в URL.
    #RewriteRule ^.*$ http://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
       # Перенаправляем протокол на http.
    
    ############################################################################
    #### Перенаправляем протокол http на https                              ####
    ############################################################################
    #RewriteCond %{ENV:HTTPS} !on
       # Проверяем наличие https в URL.
    #RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
       # Перенаправляем протокол на http.
    
    ############################################################################
    #### Убираем повторяющиеся слеши (/) в URL                              ####
    ############################################################################
    RewriteCond %{THE_REQUEST} //
       # Проверяем, повторяется ли слеш (//) более двух раз.
    RewriteRule .* /$0 [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.php, если он есть в конце URL                        ####
    ############################################################################
    RewriteCond %{REQUEST_METHOD} =GET
       # Выявляем GET запрос в URL (не POST).
    RewriteCond %{REQUEST_URI} ^(.*)/index\.php$
       # URL cодержит index.php в конце.
    RewriteRule ^(.*)$ %1/ [R=301,L]
       # Удалить index.php из URL.
    
    ############################################################################
    #### Компрессия статического контента для гугл  спид тест               ####
    ############################################################################
      AddType image/svg+xml .svg
      AddOutputFilterByType DEFLATE image/svg+xml  
      AddOutputFilterByType DEFLATE application/rss+xml
      AddOutputFilterByType DEFLATE application/vnd.ms-fontobject
      AddOutputFilterByType DEFLATE application/x-font
      AddOutputFilterByType DEFLATE application/x-font-opentype
      AddOutputFilterByType DEFLATE application/x-font-otf
      AddOutputFilterByType DEFLATE application/x-font-truetype
      AddOutputFilterByType DEFLATE application/x-font-ttf
      AddOutputFilterByType DEFLATE application/x-javascript
      AddOutputFilterByType DEFLATE application/xhtml+xml
      AddOutputFilterByType DEFLATE application/xml
      AddOutputFilterByType DEFLATE font/opentype
      AddOutputFilterByType DEFLATE font/otf
      AddOutputFilterByType DEFLATE font/ttf
      AddOutputFilterByType DEFLATE image/svg+xml
      AddOutputFilterByType DEFLATE image/x-icon
      AddOutputFilterByType DEFLATE text/css
      AddOutputFilterByType DEFLATE text/html
      AddOutputFilterByType DEFLATE text/javascript
      AddOutputFilterByType DEFLATE text/plain
      AddOutputFilterByType DEFLATE text/xml
      AddOutputFilterByType DEFLATE image/svg+xml
    <IfModule mod_expires.c>
      ExpiresActive on
      ExpiresByType image/jpeg "access plus 3 day"
      ExpiresByType image/svg "access plus 3 day"
      ExpiresByType image/gif "access plus 3 day"
      ExpiresByType image/png "access plus 3 day"
      ExpiresByType text/javascript "access plus 3 day"
      ExpiresByType text/css "access plus 3 day"
      ExpiresByType application/javascript "access plus 3 day"
    </IfModule>
    
    ############################################################################
    #### Антивирус, только для 1С-Битрикс,                                  ####
    ############################################################################
    #php_value auto_prepend_file "/home/bitrix/ext_www/SITE.RU/bitrix/modules/security/tools/start.php"
       #  укажите путь до файла 
       # включить тут /bitrix/admin/security_antivirus.php?lang=ru
    
    ############################################################################
    #### Конец общей части, далее следует собственные директивы .htaccess   ####
    ############################################################################
    Ответ написан
    1 комментарий
  • Wordpress / Apache 2.0. Как убрать GET-параметры?

    shambler81
    @shambler81 Куратор тега htaccess
    site.com/blog/post?
    в редиректе куда - поставить вопрос в конце, он удалит гет параметры
    Если же вам нужно выделить конкретные гет запросы то сам редирект не видит квери стринг
    и для этого требуется выделять его через квери стринг
    Ответ написан
  • Как убрать редирект поддомена на www?

    shambler81
    @shambler81 Куратор тега htaccess
    1. вам нужно для начала убедиться что есть А запись www.a.site.ru
    Иначе редирект не сработает.

    Ну и никто вам не мешает уточнить условие
    RewriteCond %{HTTP_HOST} ^www\.a\mysyte\.ru [NC]
    RewriteRule ^(.*)$ https://mysyte.ru/$1 [R=301,L]
    Ответ написан