Ответы пользователя по тегу htaccess
  • Как сделать подгрузку 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]
    Ответ написан
    Комментировать
  • Не работает простой редирект с одной страницы на другую?

    shambler81
    @shambler81 Куратор тега htaccess
    а так ?
    RewriteCond %{HTTP_HOST} ^w\-dprint\.ru$
    RewriteRule ^plotternaya\-rezka$ https://www.w\-dprint.ru/? [L,R=301]
    Ответ написан
  • Как убрать доп. символы из УРЛ с помощью редиректа, или еще каких возможных способов?

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

    shambler81
    @shambler81 Куратор тега htaccess
    Экранировать за вас я буду ?
    RewriteRule ^9010\-2/veb\-kamery$ /9010\-2/veb\-kamery/9010\-2/veb\-kamery? [L,R=301]

    Так чисто по тз

    А во так если вы хотите как-то изменить часть урлов на сайте 1 правилом
    RewriteCond %{REQUEST_URI} ^/dir1/(.*)$ 
    RewriteRule ^(.*)$ /dir2/%1 [R=301,L]

    Где %1 это то что в RewriteCond в скобках.
    опишите более подробно чтобы вы хотели один редирект или некое условие на группу урлов.
    Ответ написан
    5 комментариев
  • Правильно ли я преобразую в чпу?

    shambler81
    @shambler81 Куратор тега htaccess
    эээ бро
    ты не создал ЧПУ
    ты создал редирект на место в котором будут обрабатываться запросы

    Вот пример чпу
    RewriteEngine On
    #Включается 1 раз  на файл активирует редиректы
    RewriteCond %{REQUEST_FILENAME} !-f
    # если это не файл
    RewriteCond %{REQUEST_FILENAME} !-l
    # и если это не  линка
    RewriteCond %{REQUEST_FILENAME} !-d
    # и если это не директория, то есть не физически существующие файлы и папки, то есть по факту 404тые как у тебя сейчас
    RewriteCond %{REQUEST_FILENAME} !/bitrix/urlrewrite.php$
    # и не сам файл отвечающий за создание ЧПУ
    RewriteRule ^(.*)$ /bitrix/urlrewrite.php [L]
    #  если все это удовлетворено то сделать редирект на файл который отвечает за создание ЧПУ

    Собственно после этого открывает ваш файл который получает URL которого нет физически но у него есть соответствие этого GET параметра нужным действиям например отобразить каталог в таком ракурсе.
    Ваш пхп файл генерирует нужную страничку и отдает ее с кодом 200.

    Все что вы сделали, это собрали все эти запросы и направили его на эту ссылку
    и что вы ожидаете ? обрабатывать то кто его у вас там будет ?
    Читать тут
    Ответ написан
    Комментировать
  • Как исключить категории с редиректа на новый домен?

    shambler81
    @shambler81 Куратор тега htaccess
    А если без слеша спереди ?
    Да и не заюывай что у тебя в браузере кеш редиректов, его тоже нужно скинуть а желательно проверь в другом браузере или через сервисы.
    RewriteEngine On
    RewriteCond %{HTTP_USER_AGENT} "android|blackberry|googlebot-mobile|iemobile|ipad|iphone|ipod|opera mobile|palmos|webos" [NC]
    RewriteCond %{HTTP_HOST} site.net
    RewriteCond %{REQUEST_URI} !^lechenie-diarei/page/.*$
    RewriteRule (.*) https://site-net.turbopages.org/site.net/s/$1 [R=302,L]
    Ответ написан