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

    shambler81
    @shambler81 Куратор тега htaccess
    https://donatstudios.com/RewriteRule_Generator
    Далее следуют восклики ОООО круто, и потом нажимается кнопочка "вопрос решен"
    Ответ написан
  • 301й редирект со страницы с параметром на аналогичную без?

    shambler81
    @shambler81 Куратор тега htaccess
    Собственно
    1. выделяешь все что нужно в группу () редеректишь на нее же $1 , гет параметр не является частью урла по этому ты не сможешь его просто так взять и выделить его. для этого используется RewriteCond с специальной строкой.
    А вот чтоб удалить все гет параметры
    В строке КУДА добавь в конце "?" и все
    RewriteRule ^(.*)$ /$1? [L,R=301]
    Однако он так будет удалять вообще все гет параметры на сайте.
    думаю тебе нужно другое, судя по урлам ты хочеш удалить пейдженацию вместо того чтоб прятать ее за аякс.
    или запретить индексировать в robots.txt
    Собственно вот тебе

    RewriteCond %{QUERY_STRING} (^|&)page\=.+($|&)
    RewriteRule ^(.*)$ /$1? [L,R=301]

    КАК-ТО С ВИДУ ТАК
    Далее следует спасибо кэп это апупенно, вот тебе лайкосик бротик, вот тебе "решено"
    PS
    (^|&).....($|&)
    нужно посколкьу это может быть не единственный GET
    Ответ написан
    1 комментарий
  • Редирект без index.html и index.php?

    shambler81
    @shambler81 Куратор тега htaccess
    Писал тут, все что тебе нужно и даже больше
    https://klondike-studio.ru/standards/standartnyy-h...
    Ответ написан
    2 комментария
  • Как расшифровать htaccess новичку?

    shambler81
    @shambler81 Куратор тега htaccess
    RewriteEngine on - Включает вообще редиректор, инициализируется 1 раз за файл.
    RewriteRule ^.htaccess$ - [F] - запрещает обращение к итак скрытому файлу (все файлы начинающиеся с точки скрытые) к которому по умолчанию и так нет возможности обратиться, достаточно идиотское мероприятие.
    Возможно тот кто ее создал защищался так от инагентов.
    RewriteRule ^(.*).html$ index.php?request=$1& [L] - Все что заканчивается на .html перекинуть как запрос через пхп. ЭТо попытка сделать ЧПУ.
    К примеру если вы написали 11.html то у вас будет index.php?requesst=11
    И пхп там должен сделать вам приятно.
    Тоже странная вещь html в конце урлов сейчас никто не ставит, какой смысл. тем более чтоб потом таким способом формировать GET параметр.
    (.*) - все что перед .html обьеденяется в группу и запоминается как переменная.
    вставляется она соответственно как $1 вот тут ....request=$1..
    ^ - начало строки
    & - конец строки
    Флаг [F] это - файл
    [L] - последнее правило, забпй не поймешь, но оно дает не то что ты подумаешь если прочитаешь ман.
    Тут нужно вникнуть в глубины htaccecc ;)
    Ответ написан
    Комментировать
  • Почему у некоторых пользователей не работает 301 редирект?

    shambler81
    @shambler81 Куратор тега htaccess
    d-stream, чуш пишете оба.
    Разницы где размещены редиректы нет никакой.
    1. не экранирует спец символы и удивляется поведению .htacces
    2. предлагает операцию на гланды через жопу.
    3. да .htaccess сделан именно для этого, да и искать в конфигах апача ты пойдешь намного позже чем в .htaccess
    так что да ту ты прав
    Вот держи
    https://klondike-studio.ru/standards/standartnyy-h...
    4. Теперь что касается
    RewriteCond %{HTTP:X-HTTPS} !1 - если у него странное поведение ( а такое может быть)
    то это в связи с текущей конфигурацией веб сервера, нужно просто подобрать то что будет работать именно на вашем сервере.
    https://snipp.ru/htaccess/redirect-https
    Ответ написан
  • Как сделать подгрузку mp3 файла с другого домена через .htaccess?

    shambler81
    @shambler81 Куратор тега htaccess
    зачем так делать, не проще сделать через пхп ?
    в 404.php
    допишите
    https://gist.github.com/codedokode/ea0503ecb0efbc3...
    Плюс условие вместо 404 пробовать искать файл на другом сайте.
    Минимум костылей читаемый пхпшником код, опять же если нужно будет что-то пдправлять подправить можно в этм месте.
    Ответ написан
    Комментировать
  • Как сделать редирект get запросов в ЧПУ?

    shambler81
    @shambler81 Куратор тега htaccess
    GET не является частью урла и не попадает в RewriteRule
    RewriteCond %{QUERY_STRING} (?:^|&)q\=(.+)(?:$|&)
    RewriteRule ^site\.ru/index\.php$ /site.ru/%1? [L,R=301]
    Ответ написан
  • Как сделать ЧПУ get запросов в htaccess?

    shambler81
    @shambler81 Куратор тега htaccess
    GET не является частью урла и не попадает в ревратйт рул впринципе.
    выедляется так, групаа из конд не $1 а %1
    RewriteCond %{QUERY_STRING} (^|&)poisk\=(.+)$|&)
    RewriteRule ^(.*)/(.*)$ index.php?poisk=%1 [L]

    Спасибо кэп, вот тебе ответ решен
    Ответ написан
    Комментировать
  • Как сделать универсальный htaccess чтобы убрать html из пути?

    shambler81
    @shambler81 Куратор тега htaccess
    Только поменяй php файл на html
    не нужные блоки удали
    ############################################################################
    #### Стандартный .htaccess для проектов студии Клондайк, версия 4.6     ####
    ############################################################################
    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 %{HTTPS} on
       # Проверяем наличие https в URL.
    #RewriteRule ^.*$ http://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
       # Перенаправляем протокол на http.
    
    ############################################################################
    #### Перенаправляем протокол http на https                              ####
    ############################################################################
    RewriteCond %{HTTPS} off
       # Проверяем наличие https в URL.
    RewriteCond %{REQUEST_URI} !^/bitrix/admin/1c_exchange\.php$ [NC] 
       #  Исключим обмен с 1С, ему требуется только 200 
    RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
       # Перенаправляем протокол на http.
    
    ############################################################################
    #### Убираем index.php, если он есть в конце URL                        ####
    ############################################################################
    RewriteCond %{REQUEST_URI} ^(.*)/index\.php$
       # URL cодержит index.php в конце.
    RewriteCond %{REQUEST_METHOD} =GET
       # Выявляем GET запрос в URL (не POST).
    RewriteRule ^(.*)$ %1/ [R=301,L]
       # Удалить index.php из URL.
    
    ############################################################################
    #### Убираем повторяющиеся слеши (/) в URL                              ####
    ############################################################################
    RewriteCond %{THE_REQUEST} //
       # Проверяем, повторяется ли слеш (//) более двух раз.
    RewriteCond %{QUERY_STRING} !http(s|)://
      # Убедимся что это не урл в  GET
    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 нет точки (файл).
    RewriteCond %{REQUEST_URI} ^(.+)$
     # В URL есть хоть один символы
    RewriteRule ^(.*)$ $1/ [L,R=301]
       # Добавляем слеш в конце.
    
    
    ############################################################################
    #### Компрессия статического контента для гугл  спид тест               ####
    ############################################################################
    <IfModule mod_deflate.c>
      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>
    <IfModule mod_expires.c>
      ExpiresActive on
      ExpiresByType image/jpeg "access plus 1 year"
      ExpiresByType image/svg "access plus 1 year"
      ExpiresByType image/gif "access plus 1 year"
      ExpiresByType image/png "access plus 1 year"
      ExpiresByType text/javascript "access plus 1 year"
      ExpiresByType text/css "access plus 1 year"
      ExpiresByType application/javascript "access plus 1 year"
      ExpiresByType application/vnd.ms-fontobject "access plus 1 year"
      ExpiresByType application/x-font-ttf "access plus 1 year"
      ExpiresByType application/x-font-opentype "access plus 1 year"
      ExpiresByType application/x-font-woff "access plus 1 year"
      ExpiresByType image/svg+xml "access plus 1 year"
    </IfModule>
      <IfModule mod_headers.c>
      <filesmatch "\.(ico|flv|jpg|jpeg|webp|png|gif|css|swf|woff|pdf)$">
        Header set Cache-Control "max-age=31536000, public"
      </filesmatch>
      <filesmatch "\.(html|htm)$">
        Header set Cache-Control "max-age=7200, private, must-revalidate"
      </filesmatch>
      <filesmatch "\.(pdf)$">
        Header set Cache-Control "max-age=86400, public"
      </filesmatch>
      <filesmatch "\.(js|otf|ttf|woff|woff2)$">
        Header set Cache-Control "max-age=31536000, private"
      </filesmatch>
      </IfModule>
    ############################################################################
    #### Конец общей части, далее следует собственные директивы .htaccess   ####
    ############################################################################
    Ответ написан
    Комментировать
  • Как сделать редирект таких страниц?

    shambler81
    @shambler81 Куратор тега htaccess
    Держи друг
    RewriteCond %{QUERY_STRING} (?:^|&)page_id\=430(?:$|&)
    RewriteRule ^$ /proekty/olimpiada\-uchiteley\-matematiki/? [L,R=301]


    А вот тебе чтоб душа твоя радовалась
    https://donatstudios.com/RewriteRule_Generator
    Ответ написан
    Комментировать
  • Как заменить урлы всех страниц в определенной категории на алиасы из базы данных?

    shambler81
    @shambler81 Куратор тега htaccess
    вам нужен ЧПУ
    вариантов миллион
    https://rio-shaman.ru/razrabotka-cms/uluchshenija/...?
    Ответ написан
    Комментировать
  • Не передается GET параметр с настройками htaccess?

    shambler81
    @shambler81 Куратор тега htaccess
    [L,QSA]
    QSA - сохраняет гет параметры.
    НЕ забывайте что с точки зрения mod_rewrite GET вообще не является частью урла и выделяется вообще через
    QUERY_STRING
    Опять же то что вы делаете похоже на кривую поделку ЧПУ
    Ответ написан
    Комментировать
  • Почему работает htaccess на nginx?

    shambler81
    @shambler81 Куратор тега htaccess
    у вас nginx+apache
    посмотрите что у вас в proxy_pass стоит ?
    Ответ написан
    Комментировать
  • Htaccess как сделать редирект на 503 с проверкой по get?

    shambler81
    @shambler81 Куратор тега htaccess
    это делает не сосем htaccess
    все что он может сделать это перенаправить на ваш ЧПУ
    В идеале логика должна быть такая
    Все запросы отправляются на определенный php файл который уже отрабатывает все коды и возвращает контент.
    Как делать ЧПУ
    Другие способы будут не так правильны как хотелось бы
    Ответ написан
    Комментировать
  • Как сделать описанный редирект?

    shambler81
    @shambler81 Куратор тега htaccess
    чисто по тз
    RewriteRule ^video/nazvanie\-video\-509\-6\-skin\-2\-user$ /video/nazvanie\-video\-509? [L,R=301]

    Теперь по поводу регулярки, вам показали правельный пример что можно сделать.
    Однако не хватает условий для точного ответа.
    1. может ли быть название = "terminator-2" если да то желательно весь список в студию посколкьу нужнобудет думать .
    в общем название может встречать и тире и цифра и даже рядом.
    так что давайте ка весь список или более точные вхождения.
    Если же у вас много разных условий то давайте файлик эксель было стало
    Ответ написан
  • Как в htaccess применить разные варианты перенаправления?

    shambler81
    @shambler81 Куратор тега htaccess
    эээ
    а как оно должно сработать по вашему мнению ?
    У вас "было" во всех условиях одинаковые !
    Расскажите мне про вашу логику, как оно по вашей задумке должно сработать?
    если я перешел на
    search/1 - то что должен получить в итоге? по вашей логике я должен получить 4 урла притом сразу ?
    Ответ написан
    Комментировать
  • Как создать в редиректе поддоменов исключение?

    shambler81
    @shambler81 Куратор тега htaccess
    RewriteCond %{HTTP_HOST}  !^one\.site\.ru$
    RewriteCond %{HTTP_HOST} ^(.+)\.site\.ru$
    RewriteRule (.*) https://site.ru/$1 [R=301,L,QSA]


    http: - HTTP_HOST | HTTPS | SERVER_PORT - тут около 30 вариантов, и не все они на всех серверах работают
    site.ru - HTTP_HOST
    /lalala/lalala.php REQUEST_URI
    ?id=3343 - QUERY_STRING

    Так же не забывай что .htaccess читается сверху вниз в цикле до полного устаканивания урлов, следовательно частные случаи должны быть выше общих
    Ответ написан
    1 комментарий
  • Как настроить редирект для этих ссылок на соответствующие без www?

    shambler81
    @shambler81 Куратор тега htaccess
    RewriteCond %{HTTP_HOST} ^www\.w\-dprint\.ru$
    RewriteRule ^wp\-content/uploads/2020/11/Presentation\-GG\.pdf$ https://w\-dprint.ru/wp\-content/uploads/2020/11/Presentation\-GG.pdf? [L,R=301]
    
    RewriteCond %{HTTP_HOST} ^www\.w\-dprint\.ru$
    RewriteCond %{QUERY_STRING} (?:^|&)C\=N;O\=D(?:$|&)
    RewriteRule ^feed/$ https://w\-dprint.ru/feed/?C=N;O=D [L,R=301]
    
    RewriteCond %{HTTP_HOST} ^www\.w\-dprint\.ru$
    RewriteCond %{QUERY_STRING} (?:^|&)C\=M;O\=A(?:$|&)
    RewriteRule ^feed/$ https://w\-dprint.ru/feed/?C=M;O=A [L,R=301]
    
    RewriteCond %{HTTP_HOST} ^www\.w\-dprint\.ru$
    RewriteRule ^feed/$ https://w\-dprint.ru/feed/? [L,R=301]
    
    RewriteCond %{HTTP_HOST} ^www\.w\-dprint\.ru$
    RewriteCond %{QUERY_STRING} (?:^|&)C\=M;O\=D(?:$|&)
    RewriteRule ^feed/$ https://w\-dprint.ru/feed/?C=M;O=D [L,R=301]
    Ответ написан
    Комментировать