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

    shambler81
    @shambler81 Куратор тега htaccess
    RewriteCond %{REQUEST_URI} !/catalog/pererabotka-myasa$
    RewriteRule ^catalog$ /catalog/pererabotka-myasa [L,R=301]

    ! - отрицание
    RewriteCond - если
    Ответ написан
    1 комментарий
  • Как убрать папку из url при помощи .htaccess?

    shambler81
    @shambler81 Куратор тега htaccess
    RewriteCond %{REQUEST_URI} ^(.*)/dir1/(.*)$ 
    # если строка содержит /dir1/ 
    RewriteRule ^(.*)$ %1/dir2/%2 [R=301,L] 
    #Перенаправить все урлы с начинающиеся с dir1 на dir2 с сохранением дальнейшей структуры URL

    Подробней писал тут.
    https://klondike-studio.ru/blog/snipet-for-htaccess/
    Ответ написан
    Комментировать
  • Как скрыть расширение файла и папку в урл?

    shambler81
    @shambler81 Куратор тега htaccess
    немного не понятна задача, всмысле скрыть расширение и папку ?
    папка в формате ? папка.php или где?

    Для исключений можно использовать во
    т такие замечатлеьные штуки
     RewriteCond %{REQUEST_FILENAME} !-f
      RewriteCond %{REQUEST_FILENAME} !-l
      RewriteCond %{REQUEST_FILENAME} !-d

    Отрицания работают на любые условия.
    Так же прошу предоставить 5-6 ссылок что во что должно превратиться. я напишу регулярку и объясную что и почему.
    Пока у вас каша ;(
    Ответ написан
  • Как сделать редирект с HTTP на HTTPS, но только для .RU домена, а не для .KZ зеркала + специфический хостинг Руцентр?

    shambler81
    @shambler81 Куратор тега htaccess
    RewriteCond %{SERVER_PORT} !^443$
    RewriteCond %{HTTP_HOST} !^не такой домен [NC]
    RewriteCond %{HTTP_HOST} !^и  не такой не такой домен [NC]
    RewriteCond %{HTTP_HOST} !^и так далее [NC]
    RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R,L]


    Ну и от обратного
    RewriteCond %{SERVER_PORT} !^443$
    RewriteCond %{HTTP_HOST} ^sport\.ru  [NC]
    RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R,L]
    Ответ написан
    Комментировать
  • Общая медиапапка для 2 сайтов. Как сделать?

    shambler81
    @shambler81 Куратор тега htaccess
    man ln
    Ответ написан
    Комментировать
  • Как пофиксить url или создание 404 ошибки?

    shambler81
    @shambler81 Куратор тега htaccess
    ^- начало строки
    & -конец

    RewriteRule ^about& /_app/about.php [L,QSA]
    В вашем случае вы говорите что строка начинается с эбаут а дальше вам собственно вообще паралеьно.
    Ответ написан
    Комментировать
  • Как сделать редирект HTTPS на HTTP только для одной страницы?

    shambler81
    @shambler81 Куратор тега htaccess
    RewriteCond %{HTTPS} off
    RewriteCond %{REQUEST_URI} ^/page1$
    RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

    Таки в чем проблема ?
    Добавляешь еще один конд
    Ответ написан
  • Как заменить конкретную ссылку через .htaccess?

    shambler81
    @shambler81 Куратор тега htaccess
    # 301 --- info/about_us => information/about?
    RewriteRule ^info/about_us$ /information/about [L,R=301]
    Ответ написан
    Комментировать
  • Как настроить дерикторию в htaccess?

    shambler81
    @shambler81 Куратор тега htaccess
    1 коротенькое и по делу не получится. mod_rewrite работает достаточно специфично.
    2. что почитать https://habrahabr.ru/company/sprinthost/blog/129560/

    далее, вот это правило не сильно имеет смысл, что вы с него хотели сделать ?
    RewriteRule ^jump.php jump.php [L,QSA]
    а это правило перенаправляет все запросы на индекс
    А L - работает не так как вы думаете.
    RewriteRule ^(.*) index.php [L,QSA]
    Насколько я понимаю это ваша попытка создать чпу

    RewriteCond %{REQUEST_FILENAME} !-f
    #! - отрицание , не файл
      RewriteCond %{REQUEST_FILENAME} !-l
    # и не линка
      RewriteCond %{REQUEST_FILENAME} !-d
    #  и не директория 
      RewriteCond %{REQUEST_FILENAME} !(.*)\.(css\|js\|html)$  
    #   это прям если исключать по маске 
    RewriteRule ^(.*)$ /index.php [L,QSA]
    # после  любое количества cond идет rule  конды создают условия рул выполняет,
    Ответ написан
    Комментировать
  • Какое именно правило будет последним в htaccess?

    shambler81
    @shambler81 Куратор тега htaccess
    L - это не тот ласт что вы подумали.
    Чтение файла .htacces достаточно специфично.
    И действтельно Л будет последним, для данного цикла чтения.
    А вот циклов чтения будет ровно столько, пока не остановится изменения переадресаций. И пока они будут ваше л ничего не добавит.
    четкой и подробной информации по mod_rewrite вы ен найдете, она везде урывками.
    Однако почитайте вот эту статью https://habrahabr.ru/company/sprinthost/blog/129560/
    И вдумайтесь в каждый пункт. Если вы ее разберете для вас mod_rewrite на 90% перестанет вести себя неадекватно.
    Ответ написан
    Комментировать
  • Как склеить несколько доменов через 301 редирект htaccess?

    shambler81
    @shambler81 Куратор тега htaccess
    размещять не нужно
    но А запись нужно прописать на ДНС сервер которым вы пользуетесь.
    Далее в админке вашего сервера добавить Алиасы
    По сути зеркала. Укажи какая адмитнка скажу как более детально сделать.
    После того как вы указали алиасы сайт доступен по любому из этих сайтов, не создавая дополнительных директорий на сервере.
    по сути в виртуал хосте сайта добавляется еще вот это
    <VirtualHost *:80>
      ServerName  141.29.495.999
      ServerAlias example.com www.example.com example.ru www.example.kz

    Все что остается в .htaccess дописать правило редиректов для этих сайтов.
    Ответ написан
  • Как сделать редирект изображений?

    shambler81
    @shambler81 Куратор тега htaccess
    1. картинки списком или по маске ?
    2. nginx+apache ? вы бы хоть конфигурацию сервера объявили.
    3. ваш пример редиректа ? или вы даже в гугл не заходили ?
    4. https://donatstudios.com/RewriteRule_Generator
    Ответ написан
  • Редирект не срабатывает с https на http если стоит в конце /, почему?

    shambler81
    @shambler81 Куратор тега htaccess
    Для начала так:
    RewriteRule ^([^/.]*)/?$ index.php?sport=$1 [QSA,L]
    RewriteRule ^([^/.]*)/?$ index.php\?sport=$1 [QSA,L]


    Ну а остальное посмотри тут, много условий все подписаны
    ############################################################################
    #### 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   ####
    ############################################################################
    Ответ написан
    Комментировать
  • Как осуществить подмену URL через .htaccess?

    shambler81
    @shambler81 Куратор тега htaccess
    Ниче не нужно делать
    "символическая ссылка"
    https://losst.ru/simvolicheskie-i-zhestkie-ssylki-linux
    Ответ написан
  • Как сделать редирект с одной страницы на другую с помощью .htaccess?

    shambler81
    @shambler81 Куратор тега htaccess
    RewriteCond %{REQUEST_URI} ^(.*)\.aspx$
    RewriteRule ^.*$ http://mysite.ru/%1.html? [R=301,L]


    Если группа в RewriteRule то каждая скобка это $1$2 и тд
    Если скобки в RewriteCond то%1 %2
    Ответ написан
    2 комментария
  • Настройка htaccess для перенаправления и обратно подмены url?

    shambler81
    @shambler81 Куратор тега htaccess
    ! - отрицание
    RewriteCond  %{QUERY_STRING} (^|&)sitemap\=xml($|&)  
    (так будет корректней )
    RewriteCond  %{REQUEST_URI} !sitemap\.xml$ 
    Если не сайтмап
    RewriteRule правило
    Ответ написан
    Комментировать
  • Как отменить редирект в одной директории?

    shambler81
    @shambler81 Куратор тега htaccess
    или так
    RewriteCond %{REQUEST_URI} ! catalog/catalog3/$
    ! - отрицание
    тогда если у тебя правила собраны через RewriteCond
    то добавь еще вот такое условие и все.
    Ответ написан
    2 комментария
  • Htaccess. Как сделать переадресацию с параметрами?

    shambler81
    @shambler81 Куратор тега htaccess
    Ответ написан
    Комментировать
  • Как сделать редирект с index.php на главную для 2х доменов в одном htaccess?

    shambler81
    @shambler81 Куратор тега htaccess
    RewriteCond %{HTTP_HOST} !^mysite2\.ru [NC]
    #если домен такой
    RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
    # И выполняется это правило
    RewriteRule ^index\.php$ xn--1-7sb0abmmwk.xn--p1ai [R=301,L]
    #Тогда редирект
    Ответ написан
    Комментировать
  • Как добавить "/" в конце URL в Yii 2 Advanced Application Template?

    shambler81
    @shambler81 Куратор тега htaccess
    ############################################################################
    #### Убираем повторяющиеся слеши (/) в 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]
       # Добавляем слеш в конце.
    Ответ написан
    Комментировать