Ответы пользователя по тегу htaccess
  • Не работает редирект. Как сделать, чтобы категория со старой cms из поиска перекидывала на нужную?

    Lakika
    @Lakika
    Sicario
    RewriteCond %{REQUEST_URI} ^/shop/bandazhi
    RewriteRule ^(.*)$ http://DOMEN.ru/bandazhi [R=301,L]
    Ответ написан
    Комментировать
  • Как в htaccess сделать редирект с якоря (текст после #)?

    Lakika
    @Lakika
    Sicario
    RewriteEngine On
    
    # Проверка на наличие якоря в URL
    RewriteCond %{REQUEST_URI} ^(.*)\#(.*)$
    # Выполнение редиректа на URL без якоря
    RewriteRule ^ %1? [R=301,L]


    Эти правила проверяют, содержит ли URL якорь, используя директиву RewriteCond, и, если да, выполняют редирект на URL без якоря, используя директиву RewriteRule.

    Важно учесть, что при перенаправлении с URL, содержащим якорь, на URL без якоря, может быть потеряна часть информации, которая находится после символа "#". Если вам нужно сохранить эту информацию, то вам необходимо изменять правила редиректа в соответствии с вашими требованиями.
    Ответ написан
    1 комментарий
  • Как сделать редирект всех страниц domain.ru/? на domain.ru/ при этом не убив utm метки?

    Lakika
    @Lakika
    Sicario
    RewriteEngine On
    RewriteCond %{QUERY_STRING} ^$
    RewriteRule ^(.*)$ /?utm_source=%{ENV:REDIRECT_STATUS}&utm_medium=redirect&utm_campaign=301 [L,R=301]

    В этом примере мы используем директиву RewriteCond для проверки того, что QUERY_STRING пустой, что означает, что нет utm меток в URL. Если запрос содержит utm метки, они сохранятся при перенаправлении.

    Затем мы используем директиву RewriteRule, чтобы перенаправить все запросы с пустым QUERY_STRING на главную страницу сайта с добавлением utm меток.

    Обратите внимание, что если в URL уже есть utm метки, то они не будут изменяться и сохранятся в URL после перенаправления на главную страницу.
    Ответ написан
    Комментировать
  • При настройке переадресации Htacces отлетает GET, как быть?

    Lakika
    @Lakika
    Sicario
    Для того, чтобы сохранить GET-параметры при переадресации на другую страницу, вам нужно добавить флаг [QSA] (Query String Append) в конце правила переадресации.

    Например, если вы хотите переадресовать запрос с параметром "chpu" и "id" на страницу с URL "/services/{chpu}/{id}", используйте следующее правило:

    RewriteEngine On
    RewriteCond %{REQUEST_URI} /services/
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{QUERY_STRING} ^chpu=([^&]+)&id=([^&]+) [NC]
    RewriteRule (.*) /services/%1/%2? [R=301,L,QSA]

    Обратите внимание на флаг [QSA], который сохраняет GET-параметры при переадресации. Теперь, когда пользователь запрашивает страницу с параметрами, они будут сохранены при переадресации и переданы на новую страницу.
    Ответ написан
    Комментировать
  • Как сделать перенаправление в htaccess с ссылки на аналогичную ссылку c добавление .html?

    Lakika
    @Lakika
    Sicario
    <IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME}.html -f
    RewriteRule ^ru-UA/(.*)$ /ru-UA/$1.html [L,R=301]
    </IfModule>

    Это проверит, существует ли файл с расширением .html для запрошенной страницы, и если да, то сделает редирект на него. Если файл не существует, то будет отображена запрошенная страница без изменений.
    Ответ написан
    Комментировать
  • Как настроить редирект всех изображений?

    Lakika
    @Lakika
    Sicario
    RewriteEngine On
    RewriteCond %{REQUEST_URI} \.(png|jpg)$ [NC]
    RewriteRule ^(.*)$ https://site2.ru/image/2.png [L,R=301]
    Ответ написан
    Комментировать
  • Как настроить htaccess для ридеректа с адреса без слэша в конце, чтобы не терять данные POST запроса?

    Lakika
    @Lakika
    Sicario
    RewriteCond %{REQUEST_METHOD} !POST
    RewriteCond %{REQUEST_URI} !(.*)/$
    RewriteRule ^(.*)$ /$1/ [L,R=301]
    
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)/$ index.php [L]
    Ответ написан
    Комментировать
  • Как объединить правила в htaccess?

    Lakika
    @Lakika
    Sicario
    SetEnv HTTPS on
    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteCond %{HTTP:X-Forwarded-Proto} !https
    RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
    
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule \.(js|css|jpeg|jpg|gif|png|ico|map|webp)(\?|$) /404error.php [L,NC]
    
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
    
    # BEGIN YOURLS
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^.*$ /yourls-loader.php [L]
    </IfModule>
    # END YOURLS
    Ответ написан
    Комментировать
  • Как добавить / в конце адреса?

    Lakika
    @Lakika
    Sicario
    Попробуйте добавить следующее правило в конец файла .htaccess:
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*[^/])$ /$1/ [L,R=301]

    Оно будет перенаправлять все адреса, которые не заканчиваются на /, на адреса с / в конце. Это должно добавлять / в конце адреса, не затрагивая формы.
    Ответ написан
    Комментировать
  • Как поменять путь до файла через htaccess?

    Lakika
    @Lakika
    Sicario
    # преобразование пути для CSS-файлов
    RewriteRule ^css/(.*)$ /css/$1 [L,R=301]
    
    # преобразование пути для JS-файлов
    RewriteRule ^js/(.*)$ /js/$1 [L,R=301]
    
    # преобразование пути для изображений
    RewriteRule ^images/(.*)$ /images/$1 [L,R=301]


    При этом следует учитывать, что пути к файлам в разметке могут быть заданы с помощью относительных путей, а не абсолютных. В этом случае нужно убедиться, что базовый путь для всех файлов задан правильно. Например, если сайт находится на домене example.com, то базовый путь можно задать следующим образом:
    <base href="https://example.com/">
    Ответ написан
    Комментировать