Задать вопрос
Ответы пользователя по тегу htaccess
  • Почему не работает 301 редирект для конкретной страницы в htaccess?

    shambler81
    @shambler81 Куратор тега htaccess
    1. скорее всего у вас nginx спереди стоит и он отдает статические файлы не доходя до apache как следствие и ваш редирект не работает.
    2. реврайт он нужно 1 раз на весь файл.
    3. самое главное .htaccess читается сверху вниз по кругу до полного устаканивания.
    так что очень важно чтоб частный случай был выше общего, иначе сработает общее правило.
    то есть файл не применяется весь сразу а строка за строкой и если сверхуе сть правило которое забирает контент, то до 2 правила дело не дойдет.
    4. если вы думаете что флаг L говорит что все редирет больше не делать то нет, это не про то
    так что поднимите ваш редиректор выше.
    5. не забывайте экранировать точки в условие.
    6. https://bertal.ru/index.php?a566754
    закиньте вашу ссылку и посмотрите что происходит тут будет видно всю последовательность редиректов.
    Ответ написан
    Комментировать
  • Почему на домене загружается совсем другой сайт?

    shambler81
    @shambler81 Куратор тега htaccess
    в лес не ходи у вас на одном сайте есть https на другом нет, долго обяснять как это работает просто так быть не может и он подставляет "ближайший по алфавиту сайт" .
    просто убедитесь что у ВСЕХ сайтов есть https и он валиден
    Сами конфиги вполне валидные, вопрос в том как работает веб сервер
    Он конфиг подбирает из заголовка браузера берет имя сайта на основание этой переменной подставляет нужный конфиг, но он не может взять данные с https не дав ключи, тут получается ситуация кто раньше яццо или курица, в результате веб сервер находит выход подставляет ближайший ключ, и естественно конфиг от него , получаем сайт вообще левый
    Надеюсь вам стало более понятно например такой конфиг 000-default.conf
    чтоб быть гарантированно первым
    Ответ написан
    1 комментарий
  • Как сделать редирект выше по списку приоритетнее?

    shambler81
    @shambler81 Куратор тега htaccess
    файл .htaccess читается по кругу сверу вниз до полного установления урл
    ТАК ЧТО в начале частные случаи потом общие.
    В твомем сучае просто подними нужный тебе редирект выше и он сработает до второго.
    И все будет работать.
    так же можно сделать через реврайт конд там есть отрицания !
    Не забудь скинуть кеш редиректов
    Ответ написан
    Комментировать
  • Как правильно конвертировать правило .htaccess?

    shambler81
    @shambler81 Куратор тега htaccess
    location / {
    try_files $uri $uri/ /index.php?path=$uri;
    }
    Ответ написан
    7 комментариев
  • Как добавить html код для каждой страницы с определенным url?

    shambler81
    @shambler81 Куратор тега htaccess
    bash find+sed был у меня сайт на статике 75К страниц ;) вот это было весело.
    как минимум для этого поменяйте на всвех страничках футер и хедер через инклуды на пхп.
    Так можно будет вносить хоть какие-то правки как минимум в меню не бегая по каждой страничке.
    Да и такие вопросы можно будет дешево решать
    Ответ написан
    Комментировать
  • PHP: Как сделать ссылку вместо community.php?name=...&author=... на community/name/author?

    shambler81
    @shambler81 Куратор тега htaccess
    GET не является частью урла в mod_rewrite в RewriteRule он физически не может попасть
    Ваш вариант RewriteCond %{QUERY_STRING}
    Вот тебе генератор

    https://donatstudios.com/RewriteRule_Generator
    Ответ написан
    Комментировать
  • Как обеспечить невозможность извлечения шрифтов с сайта?

    shambler81
    @shambler81 Куратор тега htaccess
    Видел такое извращение на сайте, возможно
    значит смотри как это было, некая утилита весь шрифт перегоняла в картинки ;( все это переверстывалось и пол сайта был в картинках, но какое же это извращение, тут проблема в тз поскольку не имеет смысла.
    Ответ написан
    Комментировать
  • Как сделать редирект со / на без на всем сайте кроме папки /bitrix?

    shambler81
    @shambler81 Куратор тега htaccess
    писал тут
    https://klondike-studio.ru/standards/standartnyy-h...
    отдельно обрати веимание на RewriteCond %{REQUEST_URI} !^/bitrix/admin/1c_exchange\.php$ [NC]
    и сделай по аналогии.
    Ответ написан
  • Как переписать URL пагинации с помощью .htaccess?

    shambler81
    @shambler81 Куратор тега 1С-Битрикс
    get параметр не является частью урла по этому ты не выделяешь его как просто строку
    https://donatstudios.com/RewriteRule_Generator
    Ответ написан
    2 комментария
  • Проблема 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 назад
    Ответ написан
    Комментировать