Ответы пользователя по тегу htaccess
  • Проблема c Redirect 301. Почему некорректно срабатывает запись?

    shambler81
    @shambler81 Куратор тега htaccess
    думаю все как всегда
    вы просто непонимаете как работает .htaccess
    1. вы используете форму записи не поддерживающую регулярку.
    2. htaccess читается сверху вниз, соответствено в начале вы дожны указать частные случаи потом общие.
    3. файл читается по кругу пока url не остановятся и [L] это не то что вы думате.
    4. и не менее важное GET не является частью URL с точки зрения mod_rewrite и с ними работать нужно по другому.
    От этого мы получаем Место в файле имеет значение
    И в зависимости от ссылки можно использовать разные виды редиректов, я бы на вашем месте всегда использовал конструкциии через RewriteCond поскольку они позволяют все.
    файл в студию.
    А так же для исключения человеческого фактора используй генератор
    https://donatstudios.com/RewriteRule_Generator
    Ответ написан
    Комментировать
  • Почему не работает 301-й редирект Opencart?

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

    shambler81
    @shambler81 Куратор тега htaccess
    Возьмите за правило следующий постулат.
    1. Все ссылки на вашем сайте должны быть оформлены через чпу.
    2. Все ссылки без ЧПУ не должны учавствовать в поиске ( набросаные фильтры карзины и тд, это индексировать не нужно) соответственно в эту же кассу идут и все php|html|htm файлы, включая index.php?, и да пейдженация ТОЖЕ идет в лес! ибо это канибализация запроса.
    3. Вывод.
    1. Запрещяем в robots.txt индексировать ВСЕ гет параметры то есть вообще все урлы с GET
    2. Настраиваете нормально ЧПУ.
    3. Делеате для себя что-то подобное https://klondike-studio.ru/standards/standartnyy-h...
    4. риал каноникал на урл без GET на всхе страницах сайта
    И настолько идиотских вопросов у вас возникать никогда не будет и идиотские они не потому что вы идиот а потому что они частые бесполезные и правятся до того как СЕОшник к вам подошел.
    Ответ написан
    Комментировать
  • В каком порядке обрабатываются редиректы на сайтах?

    shambler81
    @shambler81 Куратор тега htaccess
    Редиректы образовываютя по ходу запроса от клиента.
    Не со стороны сервера а как клиент получет контент.
    1. Соответственно в начале claudflare посколкьу он до сайта а отвечает еще за ДНС, соответственно уже там могут быть редиректы.
    2. Он добирается до nginx и тут начинает делать магию уже он,
    3. Потом он добирается до apache который делает свои редиректы ( конечно если он вообще есть, но тогда и htaccess читать вообще некому)
    4. Добирается запрос до языка скажем до php там уже могу быть редиректы в твоем движке.
    Из особенностей не забывай что
    .htaccess читается сверху вниз в цикл бесконечно !!!!
    то есть пока урлы не устаканятся и не удовлетворят всем услвиям они продолжат меняться.
    Чтение сверху вниз!
    и да [L] это не то что ты думаешь.
    Теперь по твоему вопросу про пхп до .htaccess
    нет не обрабатываются если нет эксклюзивных ответвлений.
    К примеру site.ru/phpmyadmin может рбрабатывать редиректы до твоего .htassess поскольку это вообще другйо сайт и другой конфиг у которого нет твоего .htaccess
    Может быть эсклюзив когд php делает прокси такое тоже имеет место бытьт и порой толькто этот вариант подходит.
    В таком случае пхп забирает контент с бэка меняет его и выдает уже тебе. в таком случае он будет до .htaccess
    но как понимаешь это эксклюзив.
    К примеру если тебе нужно чтоб новые урлы сайта были на новом движке а старые урлы если этого урал нет в новом, то брать со старого сайта.
    Ты в 404.php пихаеш проксю и вместо 404 ты пытаешся еще достать 200 и если его и там нет то даеш 404. но это костыли и это не стандарт.
    Ну и да если у тебя nginx+apache+fastcgi или FPM в конце
    то у тебя не будут работать некоторые директивы в .htassess к примеру php_value* и php_fla*8 php_admin* но это не редиректы.
    А вот если у тебя ngixn +FPM то .htaccess вообще читаться не будет ибо nginx вообще не знает такого файла
    Ответ написан
    Комментировать
  • Htaccess редирект как сделать?

    shambler81
    @shambler81 Куратор тега htaccess
    Get параметр не является частью урла и не попадает в RewriteRule так что с ним нужно работаь через
    RewriteCond
    Для более простого понимания вот генератор закинь свой пример и смотри
    https://donatstudios.com/RewriteRule_Generator
    Ответ написан
    Комментировать
  • Проблема с циклической переадресацией на новом хостинге?

    shambler81
    @shambler81 Куратор тега htaccess
    Конечно есть.
    1. весь конфиг в студию
    2. https://bertal.ru/index.php?a566754
    че конкретно крутится по кругу
    Ответ написан
    Комментировать
  • Как сделать корректный редирект со страницы с GET-параметром в .htaccess?

    shambler81
    @shambler81 Куратор тега htaccess
    Вот тебе ссылка
    L - не так работает как ты думаешь
    И дальше следуеет, о боже вот это ссылочка, на миллион, вот тебе братишка " вопрос решен"
    Ответ написан
    Комментировать
  • Как правильно настроить .htaccess?

    shambler81
    @shambler81 Куратор тега htaccess
    Господа еще раз, я уже не знаю в какой
    RewriteRule- вообще не знает про GET, ну не является он по его мнению частью урла от слова совсем.
    Осознав эту мысль вы с легкостью поймете что утверждение
    RewriteRule ^cases/$ 
    RewriteRule ^cases/(.*)$
    RewriteRule ^cases/?id=dsfasdfasdfadsfsdaf$

    ОДИНАКОВЫ, если мы говорим про гет параметры.

    А вот если бы вы написали
    RewriteCond %{REQUEST_URI} ^case.php$ 
    RewriteCond %{QUERY_STRING} (^|&)id\=title-of-case($|&)
    RewriteRule   ........

    ТО смогли бы поставить условие по этому GET параметру.
    Но не удалить его, поскольку он опять же не попадает в RewriteRule

    Просто же удалить GET можно очень не очевидным способом.
    RewriteRule было стало? [QSA,L]
    Знак вопроса не опечатка, именно он в конце удалит гет папраметры с урла.
    л -логика ;) логика
    Логика mod_rewrite требует особого вида мышления ;)
    Ответ написан
    Комментировать
  • Как нужно изменить htaccess (opencart 3) для редиректа всех страниц на слэш в конце адреса?

    shambler81
    @shambler81 Куратор тега htaccess
    Обрати внимание что нужны оба правила и именно в такой последовательности посколкьу семантически каталог должен быть закрыт слешем, а файл естественно нет.
    Помни что файл читается сверху в низ и расположение редиректа имеет значаение.

    RewriteEngine On
       #  Директива включает редиректы.
    RewriteBase / 
       # Без директивы (.*) = /$1 будет /var/wwww/site/web/$1  с директивой  = /$1
    Options +FollowSymLinks
       # Разрешает переход по символическим ссылкам.
    Options -Indexes
    #показывает список файлов в директории (или ошибку 403 - доступ запрещен), если нет дефолтного файла (index.html, index.php).
    
    ############################################################################
    #  убирает www
    RewriteCond %{HTTP_HOST} ^www\.(.*)$
    RewriteRule ^(.*)$ https://%1/$1 [L,R=301]
    
    ############################################################################
    # http -> https
    RewriteCond %{HTTPS} off
    RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
    ############################################################################
    # сам вкурсе
    RewriteRule ^sitemap.xml$ index.php?route=extension/feed/google_sitemap [L]
    RewriteRule ^googlebase.xml$ index.php?route=extension/feed/google_base [L]
    RewriteRule ^system/storage/(.*) index.php?route=error/not_found [L]
    
    ############################################################################
    # ЧПУ 
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} !.*\.(ico|gif|jpg|jpeg|png|js|css)
    RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA]
    
    ############################################################################
    #### Убираем слеши в конце 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]
    Ответ написан
  • Редирект, только для одного варианта страницы с параметром?

    shambler81
    @shambler81 Куратор тега htaccess
    1. я тут уже собрал все редиректор для битрикса https://klondike-studio.ru/standards/standartnyy-h...
    2. Не должно быть в индексе ни 1 странички с GET так что по хорошему в роботс ты закрываешь все странички с гет параметрами вообще. Не нужно мурыжить пейдженацию
    3. У тебя есть странички для сео, следовательнор ты их делаешь через привязку к секциям у секций настраивается чпу.
    Все что через смарт это ненужные странички типа "красный холодильник, бытовой, до30ват, бош" то есть мелочевка которая вообще не нужна в индексе ибо канибализирует запросы у более тяжелых страниц.

    Теперь по твоему тз
    RewriteCond %{QUERY_STRING} (^|&)PAGEN_2=1
    меняем на
    RewriteCond %{QUERY_STRING} (^|&)PAGEN_2=1$
    А чтоб вообще не париться
    https://donatstudios.com/RewriteRule_Generator
    Но опять же вы занимаетесь хераборой, смысла от этого нет.
    Вам нужно избавляться от всех гет а не части тех что у вас вылезла в 404
    Времена индекса милиона страниц на сайте ушли уже лет 7 назад
    Ответ написан
    Комментировать
  • Как правильно настроить htacces?

    shambler81
    @shambler81 Куратор тега htaccess
    Как и всегда вы ошибаетесь в GET Он не является частью URL и вообще не может быть выделен через RewriteRule
    RewriteCond %{QUERY_STRING} (?:^|&)chpu\=(.+)(?:$|&)
    RewriteRule ^services/%1? [L,R=301]


    %1 - аналог $1 но из RewriteCond поскольку RewriteRule уже занял переменные с баксом, чтоб их вставить из конда нужно использовать %
    Ответ написан
    Комментировать
  • Как разрешить доступ к сайту через .htacces?

    shambler81
    @shambler81 Куратор тега htaccess
    DirectoryIndex index.php​ index.html
    видимо так
    Ответ написан
    Комментировать
  • Как сделать проксирование (HTML, htaccess)?

    shambler81
    @shambler81 Куратор тега htaccess
    1. вы делаете это просто на пхп там скрипт в 10 строчек.
    2. Используете mod_proxy на apache
    3. Делаете все как нормальные люди, ставите nginx и юзаете его прокси ngx_http_proxy_module

    У Каждого из способов есть свои плюсы и минусы.
    1. позволяет добавлять и убавлять данные в контенте испльзуя пхп и тд и тп.
    К примеру очень удобно когда требуется поставить новый сайт, но чтоб тех ссылок что нет на новом сайте кидало на старый сайт. В таком слвчае впихиваем это в 404.php и перед ее отдачей пытаемся поискать на старом бэке этот урл.
    В общем для вот таких костылей очень удобно и легко делается обычным разработм.
    2. Мод прокси для апача нужно подключить ибо он как правило отключен, эксклюзив но работать будет.
    3. nginx - стандарт на данный момент.
    Ответ написан
    1 комментарий
  • Что означают вот эти записи в файле .htaccess?

    shambler81
    @shambler81 Куратор тега htaccess
    <FilesMatch ".(py|exe|phtml|php|PHP|Php|PHp|pHp|pHP|phP|PhP|php5|suspected)$">
    - если вот такие файлы
    Order allow,deny - запретить выполнение
    Deny from all - всем

    Второе только другие файлы.

    RewriteEngine On
    # Активирует мод реврайт, короче редиректы запускаются, активируется 1 раз за веьс файл.
    RewriteBase /
    # Без директивы (.*) = /$1 будет /var/wwww/site/web/$1 с директивой = /$1
    RewriteRule ^index.php$ - [L]
    # типа все если файл есть, то запускать его 
    RewriteCond %{REQUEST_FILENAME} !-f
    #Но если это нее файл
    RewriteCond %{REQUEST_FILENAME} !-d
    #  и если это не директория
    RewriteRule . index.php [L]
    #  то перенаправить на индекс .php


    Короче это ЧПУ
    Ответ написан
    5 комментариев
  • Как настроить редирект поддоменов на Битрикс?

    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
    Ответ написан