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