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

    shambler81
    @shambler81 Куратор тега htaccess
    мат часть, батенька
    ^ - начало строки
    $ - ее конец
    ^/home/catalogue/$ - сработает толко если оканчивается на catalogue/ - даже без слеша не сработает
    А у вас всяко ^/home/catalogue.*/$
    Ответ написан
    1 комментарий
  • Как проверить наличие каталога средствами .htaccess?

    shambler81
    @shambler81 Куратор тега htaccess
    1. чтоб работало документ рут
    RewriteBase /
    2. в конфихаг nginx найди нет ли там что про .htnl
    location  ~* \.(html|htm)$ {
      error_page 404 /404.html;
      expires 30d;

    3. весь .htaccess в студию включая ЧПУ
    4. нафига RewriteCond %{REQUEST_FILENAME} ?
    используй RewriteCond %{REQUEST_URI}
    Ответ написан
  • Ошибка на сайте, как исправить?

    shambler81
    @shambler81 Куратор тега htaccess
    у тебя сайт на localhost ?
    и логи в студию
    Ответ написан
    Комментировать
  • Как составить правило для исключения .html в RewriteRule?

    shambler81
    @shambler81 Куратор тега htaccess
    Первый раз вижу вопрос с ответом, ну просто поставь !
    конд - это если и если и если то
    RewriteCond
    RewriteCond
    RewriteCond
    то

    RewriteCond %{REQUEST_URI} !index.\html$
    RewriteRule ^(.*)\.html$ 404.php [R=404]
    Ответ написан
  • Возможно ли сделать редирект с помощью htaccess без изменения пути после доменного имени?

    shambler81
    @shambler81 Куратор тега htaccess
    <IfModule dir_module>
        DirectoryIndex  index.php index.html index.htm
    </IfModule>

    вы разом не про это ?

    Второе решение

    RewriteCond %{REQUEST_METHOD} =GET
    RewriteCond %{REQUEST_URI} ^(.*)/index\.php$
    RewriteRule ^(.*)$ %1/ [R=301,L]

    перед чпу
    Ответ написан
    1 комментарий
  • Как влияет количество редиректов в htaccess?

    shambler81
    @shambler81 Куратор тега htaccess
    первая рекомендация, запиши правельней гет.
    RewriteCond %{QUERY_STRING} (^|&)первый_гет($|&)
    RewriteCond %{QUERY_STRING} (^|&)еще_гет($|&)
    RewriteCond %{QUERY_STRING} (^|&)и так_далее($|&)

    Если урлов много то тут
    https://donatstudios.com/RewriteRule_Generator
    Вторая слеш и без слеша это не проблемма не редиректа, а любого сайта впринципе. Так чтоэто отдельне правило на весь сайт.

    ############################################################################
    #### Cтандартный .htaccess для проектов студии Клондайк, версия 2.3     ####
    ############################################################################
    RewriteEngine On
       #  Директива включает редиректы.
    RewriteBase /
       # Без директивы (.*) = /$1 будет /var/wwww/site/web/$1  с директивой  = /$1
    Options +FollowSymLinks
       # Разрешает переход по символическим ссылкам.
    
    ############################################################################
    #### Перенаправляем протокол https на http                              ####
    ############################################################################
    #RewriteCond %{HTTPS} On
       # Проверяем наличие https в URL.
    #RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
       # Перенаправляем протокол на https.
    ############################################################################
    #### Выбор основного зеркала (или с www или без www)                    ####
    ############################################################################
       # 1. Редирект с www на без www. (раскоментировать директивы пункта 1)
    RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
       # Проверяем, содержит ли домен www (в начале URL).
    RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
       # Перенаправляем URL на домен без www.
    ####
       # 2. Редирект без www на www. (раскоментировать директивы пункта 2)
    #RewriteCond %{HTTP_HOST} !^www\.(.*) [NC]
       # Проверяем, не содержит ли домен www (в начале URL).
    #RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
       # Перенаправляем URL на домен c www.
    
    ############################################################################
    #### Убираем повторяющиеся слеши (/) в URL                              ####
    ############################################################################
    RewriteCond %{THE_REQUEST} //
    RewriteRule .* /$0 [R=301,L]
    ############################################################################
    #### Убираем слеши в конце URL для статических файлов (содержит точку)  ####
    ############################################################################
    RewriteCond %{REQUEST_URI} !(.*)/$
       # Если слеша в конце нет.
    RewriteCond %{REQUEST_FILENAME} !-f
       # Не является файлом.
    RewriteCond %{REQUEST_URI} !\..+$
       # В URL нет точки (файл).
    RewriteRule ^(.*)$ $1/ [L,R=301]
       # Добавляем слеш в конце.
    ############################################################################
    #### Добавляем слеш(/), если его нет, и это не файл.                    ####
    ############################################################################
    RewriteCond %{REQUEST_URI} !(.*)/$
       # Если слеша в конце нет.
    RewriteCond %{REQUEST_FILENAME} !-f
       # Не является файлом.
    RewriteCond %{REQUEST_URI} !\..+$
       # В URL нет точки (файл).
    RewriteRule ^(.*)$ $1/ [L,R=301]
       # Добавляем слеш в конце.
    
    ############################################################################
    #### Убираем index.php, если он есть в конце URL                        ####
    ############################################################################
    RewriteCond %{REQUEST_METHOD} =GET
       # Выявляем GET запрос в URL (не POST).
    RewriteCond %{REQUEST_URI} ^(.*)/index\.php$
       # URL cодержит index.php в конце.
    RewriteRule ^(.*)$ %1/ [R=301,L]
       # Удалить index.php из URL.
    
    ############################################################################
    #### Компрессия статического контента для гугл  спид тест               ####
    ############################################################################

    Нужное подчеркнуть, ненужное удалить.
    Ставить ДО ЧПУ.

    Теперь вопрос третий, сильно ли влияет.
    я пытался в свое время замерить падение производительности но до 6к редиректов притом с2-6 квери ( отдельные конды на каждого) нифига не заметил. ТАк что да оно есть. Но выявить реальное падение не удалось.
    Ответ написан
  • Сложный редирект 301?

    shambler81
    @shambler81 Куратор тега htaccess
    RewriteCond %{REQUEST_URI} /i([0-9]{1,}) [NC]
    #  если начинается с i и дальше цифры больше 1
    RewriteCond %1 >99
    RewriteCond %1 <120
    RewriteRule ^(.*)$  https://radio-services\.ru/i%1 [R=301,L]
    #%1  это 1 скобка из конда не путать с $   это из рула.
    Ответ написан
    Комментировать
  • Как сделать исключение в htaccess для https?

    shambler81
    @shambler81 Куратор тега htaccess
    RewriteCond %{HTTP_HOST} ^(www\.|)mysite\.com [NC] - так точней будет.
    - тут все правильно как вариант убери лишний пробел перед ! и сделай более мягкое условие, сработает ?
    Так же не забывай что html - по идее статика, и может забираться сразу nginx и не доходить до редиректа в апаче в принципе. Тут нужно более подробно о конфе сервера.
    А так же весь .htaccess
    и зачем тебеRewriteCond %{HTTP:X-Forwarded-Proto} ^http$
    Ответ написан
    Комментировать
  • Yii2 ошибка 404 при удалении /web из url на локальном хосте при помощи .htaccess?

    shambler81
    @shambler81 Куратор тега htaccess
    У вас 1 урл или вам нужно регулярное выражение для убирания из урла всех web ?
    RewriteRule хост/web/site/index$ /хост/site/index. [L,NC]

    Если вам нужно сделать это для всего сайта
    ТО тут вариантов уже больше, самй простой именно простой это сделать "мягкую линку" и все, тогда сайт физически будет лежать там и там. Но скорее всего это не подойдет.
    если тебе нужна регулярка то
    RewriteCond %{REQUEST_URI} ^/dir1/(.*)$ 
    # если строка начинается с /dir1/ 
    RewriteRule ^(.*)$ /dir1%1 [R=301,L] 
    #Перенаправить все урлы с начинающиеся с dir1 на dir2 с сохранением дальнейшей структуры URL

    более детально примеры давал тут.
    https://klondike-studio.ru/blog/snipet-for-htaccess/ - тут более подробно писал и другие примеры.
    Ответ написан
    Комментировать
  • Htaccess redirect после удаления мультиязычки?

    shambler81
    @shambler81 Куратор тега htaccess
    https://klondike-studio.ru/blog/snipet-for-htaccess/
    смотрите тут есть пример
    Ответ написан
    Комментировать
  • Когда использовать RewriteCond?

    shambler81
    @shambler81 Куратор тега htaccess
    Конд это "ЕСЛИ" длля более точных регулярных выражений.

    Например
    Если это не файл
    И если это не такая ссылка
    и если это гет парметр такой-то
    ТО
    Рул

    ТАк же можно передавать часть условий с конда в рул
    Напрмер $1 из рула это %1

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

    shambler81
    @shambler81 Куратор тега htaccess
    Мде а кто тебе сказал что GET пармметр является частью урла ?
    Тут тебе будет пример как сделать редирект с гет пармметрами.
    https://donatstudios.com/RewriteRule_Generator
    А тут я писал как убрать категорию.
    https://klondike-studio.ru/blog/snipet-for-htaccess/
    Ответ написан
    Комментировать
  • Настройка редиректа .htaccess с заглавных букв?

    shambler81
    @shambler81 Куратор тега htaccess
    ?catalog_hurl=DJ-oborudovanie - это GET он не является частью урла ващет.
    Следовательно вам нужно написать "как сделать редирект с GET пармметром", а следоватлеьно вы это сможите теперь найти и в гугле.
    Вам вместо реквест ури нужно задать квери стринг.
    # 301 --- http://www.mydefile.ru/company/?section=torgovlya&PAGEN_1=9 => http://www.mydefile.ru/about/
    RewriteCond %{QUERY_STRING} (^|&)section=torgovlya($|&)
    RewriteCond %{QUERY_STRING} (^|&)PAGEN_1=9($|&)
    RewriteRule ^company/$ /about/? [L,R=301]
    Ответ написан
    Комментировать
  • Как сделать редирект в .htaccess на другой сайт если страница не найдена?

    shambler81
    @shambler81 Куратор тега htaccess
    Ответ написан
    Комментировать
  • Как сократить сразу два URL через .HTACCCESS?

    shambler81
    @shambler81 Куратор тега htaccess
    в конде создайте услови или, или
    собственно и все
    RewriteCond %{REQUEST_URI}  ^([A-z0-9-]+)$/(posts|pages)/([A-z0-9-]+)/$1  [NC]
    RewriteRule   .*  http://site.ru/%1%3

    Где %1 это номер скобки в конде, аналог $1 прям из рула.
    Ответ написан
  • Как можно победить подобные битые ссылки?

    shambler81
    @shambler81 Куратор тега htaccess
    нет не так все что после вопроса это GET
    вам нужно " как сделать редирект с гет параметром"

    Или вот так
    # 301 --- http://site.ru/cat1/cat2/art.htm?fb_comment_id=12345&start=2  => http://site.ru/cat1/cat2/article.html?start=2
    RewriteCond %{QUERY_STRING} (^|&)fb_comment_id\=12345($|&)
    RewriteCond %{QUERY_STRING} (^|&)start\=2 ($|&)
    RewriteRule ^cat1/cat2/art\.htm$ /cat1/cat2/article.html?start=2 [L,R=301]
    Ответ написан
    Комментировать
  • Как настроить переадресацию в Битриксе?

    shambler81
    @shambler81 Куратор тега htaccess
    ############################################################################
    #### Cтандартный .htaccess для проектов студии Клондайк, версия 2.3     ####
    ############################################################################
    RewriteEngine On
       #  Директива включает редиректы.
    RewriteBase / 
       # Без директивы (.*) = /$1 будет /var/wwww/site/web/$1  с директивой  = /$1
    Options +FollowSymLinks
       # Разрешает переход по символическим ссылкам.
    
    ############################################################################
    #### Перенаправляем протокол https на http                              ####
    ############################################################################
    #RewriteCond %{HTTPS} On
       # Проверяем наличие https в URL.
    #RewriteRule ^.*$ http://%{SERVER_NAME}%{REQUEST_URI}
    #RewriteCond %{HTTP:X-Forwarded-Protocol} =https 
    #RewriteRule .* http://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
    #RewriteCond %{ENV:HTTPS} on
    #RewriteRule ^(.*)$ http://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
       # Перенаправляем протокол на http.
    
    ############################################################################
    #### Выбор основного зеркала (или с www или без www)                    ####
    ############################################################################
       # 1. Редирект с www на без www. (раскоментировать директивы пункта 1)
    #RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
       # Проверяем, содержит ли домен www (в начале URL).
    #RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
       # Перенаправляем URL на домен без www.
    ####
       # 2. Редирект без www на www. (раскоментировать директивы пункта 2)
    RewriteCond %{HTTP_HOST} !^www\.(.*) [NC]
       # Проверяем, не содержит ли домен www (в начале URL).
    RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
       # Перенаправляем URL на домен c www.
    
    ############################################################################
    #### Убираем повторяющиеся слеши (/) в URL                              ####
    ############################################################################
    RewriteCond %{THE_REQUEST} //
    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 нет точки (файл).
    RewriteRule ^(.*)$ $1/ [L,R=301]
       # Добавляем слеш в конце.
    
    ############################################################################
    #### Убираем index.php, если он есть в конце URL                        ####
    ############################################################################
    RewriteCond %{REQUEST_METHOD} =GET
       # Выявляем GET запрос в URL (не POST).
    RewriteCond %{REQUEST_URI} ^(.*)/index\.php$
       # URL cодержит index.php в конце.
    RewriteRule ^(.*)$ %1/ [R=301,L]
       # Удалить index.php из URL.
    
    ############################################################################
    #### Компрессия статического контента для гугл  спид тест               ####
    ############################################################################
    <IfModule mod_deflate.c>
      # Compress HTML, CSS, JavaScript, Text, XML and fonts
      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 3 day"
      ExpiresByType image/svg "access plus 3 day"
      ExpiresByType image/gif "access plus 3 day"
      ExpiresByType image/png "access plus 3 day"
      ExpiresByType text/javascript "access plus 3 day"
      ExpiresByType text/css "access plus 3 day"
      ExpiresByType application/javascript "access plus 3 day"
    </IfModule>
    
    
    
    ############################################################################
    #### Конец общей части, далее следует собственные директивы .htaccess   ####
    ############################################################################

    Тут уже идет чпу битрикса
    и да не забыаем ставить галочку помогло :)
    Ответ написан
  • Настройка 301 редиректов в htaccess Opencart - как заставить работать?

    shambler81
    @shambler81 Куратор тега htaccess
    гет запрос не является частью урла
    # 301 --- http://site.ru/index.php?route=product/product&path=57&product_id=61 => http://site.ru/zhylety/zhiletprofi16
    RewriteCond %{QUERY_STRING} (^|&)route\=product/product($|&)
    RewriteCond %{QUERY_STRING} (^|&)path\=57($|&)
    RewriteCond %{QUERY_STRING} (^|&)product_id\=61($|&)
    RewriteRule ^index\.php$ /zhylety/zhiletprofi16? [L,R=301]
    Ответ написан
    Комментировать
  • Как сделать файлы, лежащие в site.ru/папка доступными по адресу site.ru/en/папка?

    shambler81
    @shambler81 Куратор тега htaccess
    htaccess тут не нужен просто сделай мягкую ссылку
    1 команда в консоли.
    ln
    Ответ написан