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

    shambler81
    @shambler81 Куратор тега htaccess
    в .htacess ты добавляешь только редирект на php файл который рулит всем этим делом. Сама магия происходит в php
    вот тут сразу с верху разобрано все
    https://g.zeos.in/?q=%D1%87%D0%BF%D1%83%20php
    Ответ написан
    Комментировать
  • Как переделать редирект?

    shambler81
    @shambler81 Куратор тега htaccess
    RewriteRule ^15$ /\?id=15 [L,R=301]
    ну и соответственно любые цифры
    RewriteRule ^([0-9]{1,})$ /\?id=$1 [L,R=301]

    но что-то вы делаете явно не то
    Ответ написан
    2 комментария
  • Как полностью убрать дубли с Wordpress?

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

    shambler81
    @shambler81 Куратор тега htaccess
    сразу вам на любой язык и любой урл
    RewriteCond %{QUERY_STRING} (?:^|&)lang\=(.+)(?:$|&)
    RewriteRule ^(.*)$ /%1/$1? [L,R=301]
    Ответ написан
    Комментировать
  • Как в .htaccess исправить навороченное?

    shambler81
    @shambler81 Куратор тега htaccess
    RewriteEngine On
    RewriteRule ^wp\-content/themes/olmerk/rus\.php$ /rus? [L,R=301]
    Ответ написан
  • Как сделать красивый url ЧПУ?

    shambler81
    @shambler81 Куратор тега htaccess
    DirectoryIndex index.php index.html index.htm

    RewriteCond %{REQUEST_URI} ^(.*)/index\.php$
       # URL cодержит index.php в конце.
    RewriteCond %{REQUEST_METHOD} =GET
       # Выявляем GET запрос в URL (не POST).
    RewriteRule ^(.*)$ %1/ [R=301,L]
       # Удалить index.php из URL.
    Ответ написан
    Комментировать
  • Как сделать редирект через .htaccess поддомена с www на поддомен без www?

    shambler81
    @shambler81 Куратор тега htaccess
    RewriteCond %{HTTP_HOST} ^(.+)\.example\.ru$
    RewriteCond %{HTTP_HOST} ^!www\.example\.ru$
    RewriteRule ^$ http://example.ru/%1/.html [L,R=301]
    Ответ написан
    1 комментарий
  • Сделать редирект без части урл?

    shambler81
    @shambler81 Куратор тега htaccess
    1. какой смысл в этом?
    2. RewriteRule ^index\.php/component/(.+)/news/itogi$ /icomponent/$1? [L,R=301]
    Ответ написан
    7 комментариев
  • Как сделать редирект с http и www на https без www?

    shambler81
    @shambler81 Куратор тега htaccess
    все можно сделать отдельно поскольку нет необходимости соеденять рыбу и котлеты, последовательность редиректов все поисковые системы понимают и это не влияет на сео
    RewriteEngine On
       #  Директива включает редиректы.
    RewriteBase / 
    # Без директивы (.*) = /$1 будет /var/wwww/site/web/$1  с директивой  = /$1
    
    #  Удалить www
    RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
     # Проверяем, содержит ли домен www в начале URL.
    RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
        # Перенаправляем удаляем www
    
    # https
    RewriteCond %{HTTPS} off
       # Проверяем наличие https в URL.
    RewriteCond %{REQUEST_URI} !^/bitrix/admin/1c_exchange\.php$ [NC] 
       #  Исключим обмен с 1С, ему требуется только 200 
    RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
       # Перенаправляем протокол на http.


    Из тонкостей в завиимости от веб сервера и правильности его настройки редирект с https может не сработать или привести к циклу в таком случае нужно выбрать подходящий вам.
    Как настроить редирект на https в.htaccess?
    Если не помогло то причину зацикливания можно посмотреть тут
    https://bertal.ru/index.php?a566754
    если причинаhttps://site.ru:80 то пропишите место %{HTTP_HOST} имя домена.

    Если у вас не битрикс то
    RewriteCond %{REQUEST_URI} !^/bitrix/admin/1c_exchange\.php$ [NC]
    можно удалить
    Ответ написан
    Комментировать
  • Как убрать index.php внутри url?

    shambler81
    @shambler81 Куратор тега htaccess
    RewriteCond %{REQUEST_URI} ^(.*)/index\.php$
       # URL cодержит index.php в конце.
    RewriteCond %{REQUEST_METHOD} =GET
       # Выявляем GET запрос в URL (не POST).
    RewriteRule ^(.*)$ %1/ [R=301,L]
       # Удалить index.php из URL.


    возможно в вашем случае нужно будете убрать RewriteCond %{REQUEST_METHOD} =GET но эо уже зависит от вашего движка
    Ответ написан
    Комментировать
  • ЧПУ Ссылки для php?

    shambler81
    @shambler81 Куратор тега htaccess
    RewriteCond %{QUERY_STRING} (?:^|&)t\=21(?:$|&)
    RewriteRule ^mydomain\.com/thread\.php$ /mydomain.com/thread/21? [L,R=301]


    Это прям если нужно редирект сделать
    GET не является частью URL и выделяется отдельно. через %{QUERY_STRING}
    так что у вас по идее нужно было сделать так.
    index.php?route=%1
    %1 - это $1 но если ты выделяешь в RewriteCond

    Что же касается ЧПУ

    RewriteEngine On
    Options +FollowSymLinks
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-l
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !/index.php$
    RewriteRule ^(.*)$ /index.php [L]

    То я бы добавил еще отрицание самого индекса дабы не создать цикла.

    ps
    ?: не учитывать эту группу не обязательное правило
    Ответ написан
    1 комментарий
  • Как отрабатывает RewriteRule в данном случае?

    shambler81
    @shambler81 Куратор тега htaccess
    директива перенаправления на индекс пхп другая.
    так же как правило она уже есть. в конфиге apache
    DirectoryIndex index.php index.html index.htm
    с такой директивой даже не вводя название файла веб сервер будет пытаться их выполнить
    Приоритет файлов их очередность.
    Ответ написан
  • Как в RewriteRule или RedirectMatch перенаправить на ссылку с недопустимыми символами?

    shambler81
    @shambler81 Куратор тега htaccess
    RewriteRule ^TRPRE/37/О\-232\-885097$ /index.php? [L,R=301]
    Ответ написан
    Комментировать
  • Как правильно сделать разбор ссылки в htaccess?

    shambler81
    @shambler81 Куратор тега htaccess
    RewriteRule ^lot/([0-9]{1,})$ /\?lot=$1 [NC,L]
    так же не забывайте что GET не является часть RewriteRule и к примеру тот же ? физичек не может бы делен в нем

    если у вас прям вот такой урл с вопросом в конце то
    RewriteCond %{QUERY_STRING} (?:^|&)\$(?:$|&)
    RewriteRule ^lot/([0-9]{1,}))/$ /\?lot=$1 [L,R=301]
    Ответ написан
    Комментировать
  • Что не так с этим htacess?

    shambler81
    @shambler81 Куратор тега htaccess
    ну тут проще сказать что тут так

    1. я писал стандартный .htacces и в нем было все продумано, вы вырезали с него куски,натыкали в разные места и спрашиваете что тут пошло не так.
    К примеру у вас только один кусок отвечающий за убирание слеша, а добавлять слеш на каталоги ваше светейшество решило не делать ибо не судьба ?
    2. htaccess читается сверху в низ и последовательность важна
    3.
    верхнего в нижний регистр итд
    вы так же перемешали правила.
    ну тут чтоб без матюгов я отвечу коротко Линукс регистрозависимая система ( это реально если матюгов и пены) какой "умный" человек вообще придумал делать такие редиректы заслуживает отдельного места в аду.
    4.(Chrome/76.0.3809.10) - только данная версия остальные нет ?
    5.
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)/$ /$1 [L,R=301]

    это я так понимаю вы пытались удалить слешы у симлинков и файлов?

    6.#RewriteCond %{REQUEST_URI} !^/$
    ээ вас не смущает что таких ссылок в природе не бывает
    домен закрывается слешем до реврайт рул, то есть это должно быть site.ru//index.php

    в общем у вас правильно только часть ЧПУ движка и то странно разделена поо середине
    напишите что у вас за движок и что вы хотели получить этими редиректами я вам напишу как это должно выглядеть
    Ответ написан
  • Как сделать редирект если в конце цифры?

    shambler81
    @shambler81 Куратор тега htaccess
    Чисто по тз
    RewriteRule ^kak\-ukrasit\-interer\-rakushkami/32\-3/$ /kak\-ukrasit\-interer\-rakushkami/? [L,R=301]

    А вот если у вас всего две цифры тире 1 цифра
    https://regex101.com/r/5I0rz0/1

    А вот если синтаксис такой любое количество цифр тире любое количество цфр
    https://regex101.com/r/5I0rz0/2

    А вот скорее всего что тебе нужно
    https://regex101.com/r/5I0rz0/4
    [^\/]+ - любое количество символов но не слеш
    [0-9]{1,} - цифры от нуля до девяти от одного раза и больше

    (\/|) - слеш или его отсутствие в конце ( не обязательно)
    Ответ написан
    4 комментария
  • Как в .htaccess сделать подмену файла robots.txt на robots.php?

    shambler81
    @shambler81 Куратор тега htaccess
    ЭЭ простите ну не указывайте 301 в чем проблема то ?
    RewriteEngine On
    RewriteBase /
    RewriteRule ^robots.txt$ /robots.php [L]
    Ответ написан
    6 комментариев
  • Как добавить слеш в конце url?

    shambler81
    @shambler81 Куратор тега htaccess
    Тупо добавлять слеш нельзя поскольку с семантической точки это неправильно
    это нужно добавить если это каталог, или виртуальный каталог, и наоборот убрать если это файл
    к примеру /index.html/ - это смотрится тупо и сематнически неверно.
    Так что нужно и добавлять и удалять.
    так же я подправил требования под гугл пейдж спид.
    вот держи
    RewriteEngine on 
    #  Директива включает редиректы.
    ErrorDocument 404 /404.html
    # 404 ведет на 404.html
    
    ############################################################################
    #### Выбор основного зеркала (с www или без www)                        ####
    ############################################################################
     # 1. Удалить www
    RewriteCond %{ENV:HTTPS} on
        #Если включен https
    RewriteRule .* - [E=SSL:s]
        #То создаем переменную  ssl с текстом s
    RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
        # Проверяем, содержит ли домен www в начале URL.
    RewriteRule ^(.*)$ http%{ENV:SSL}://%1/$1 [R=301,L]
        # Перенаправляем удаляем www
    
    ############################################################################
    #### Перенаправляем протокол http на https                              ####
    ############################################################################
    RewriteCond %{HTTPS} off
       # Проверяем наличие https в URL.
    RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
       # Перенаправляем протокол на http.
    
    ############################################################################
    #### Убираем index.php, если он есть в конце URL                        ####
    ############################################################################
    RewriteCond %{REQUEST_URI} ^(.*)/index\.php$
       # URL cодержит index.php в конце.
    RewriteCond %{REQUEST_METHOD} =GET
       # Выявляем GET запрос в URL (не POST).
    RewriteRule ^(.*)$ %1/ [R=301,L]
       # Удалить index.php из URL.
    
    ############################################################################
    #### Убираем повторяющиеся слеши (/) в URL                              ####
    ############################################################################
    RewriteCond %{THE_REQUEST} //
       # Проверяем, повторяется ли слеш (//) более двух раз.
    RewriteCond %{QUERY_STRING} !http(s|)://
      # Убедимся что это не урл в  GET
    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 нет точки (файл).
    RewriteCond %{REQUEST_URI} ^(.+)$
     # В URL есть хоть один символы
    RewriteRule ^(.*)$ $1/ [L,R=301]
       # Добавляем слеш в конце.
    
    
    ############################################################################
    #### если это заглавные буквы от трех до девяти например ВАСЯ.html      ####
    ############################################################################
    
    RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^.]+)\.html\ HTTP
    # если это английские заглавные буквы от 3 до 9
    RewriteRule ^([^.]+)\.html$ https://auto-cartel.ru/$1 [R=301,L]
    # то  удалить html останется просто /ВАСЯ, на другие случаи не распространяется.
    
    ############################################################################
    #### ЧПУ ДВИЖКА стоит всегда в самом низу правил                        ####
    ############################################################################
    RewriteCond %{REQUEST_URI} !(\.[^./]+)$
    RewriteCond %{REQUEST_fileNAME} !-d
    RewriteCond %{REQUEST_fileNAME} !-f
    RewriteRule (.*) /$1.html
    
    ############################################################################
    #### Компрессия статического контента для гугл  спид тест               ####
    ############################################################################
    <IfModule mod_deflate.c>
      AddType image/svg+xml .svg
      AddOutputFilterByType DEFLATE image/svg+xml  
      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 1 year"
      ExpiresByType image/svg "access plus 1 year"
      ExpiresByType image/gif "access plus 1 year"
      ExpiresByType image/png "access plus 1 year"
      ExpiresByType text/javascript "access plus 1 year"
      ExpiresByType text/css "access plus 1 year"
      ExpiresByType application/javascript "access plus 1 year"
      ExpiresByType application/vnd.ms-fontobject "access plus 1 year"
      ExpiresByType application/x-font-ttf "access plus 1 year"
      ExpiresByType application/x-font-opentype "access plus 1 year"
      ExpiresByType application/x-font-woff "access plus 1 year"
      ExpiresByType image/svg+xml "access plus 1 year"
    </IfModule>
      <IfModule mod_headers.c>
      <filesmatch "\.(ico|flv|jpg|jpeg|webp|png|gif|css|swf|woff|pdf)$">
        Header set Cache-Control "max-age=31536000, public"
      </filesmatch>
      <filesmatch "\.(html|htm)$">
        Header set Cache-Control "max-age=7200, private, must-revalidate"
      </filesmatch>
      <filesmatch "\.(pdf)$">
        Header set Cache-Control "max-age=86400, public"
      </filesmatch>
      <filesmatch "\.(js|otf|ttf|woff|woff2)$">
        Header set Cache-Control "max-age=31536000, private"
      </filesmatch>
      </IfModule>
    ############################################################################
    #### Конец общей части, далее следует собственные директивы .htaccess   ####
    ############################################################################
    Ответ написан
  • Может ли быть приставка www у поддомена и как с неё делать редирект на без www?

    shambler81
    @shambler81 Куратор тега htaccess
    www.site.ru - это просто домен 3 уровня не болше не меньше, это вообще другой домен, правда выданый вашим доменом, он такой же как и
    ya.site.ru www в свое время было создано для того чтоб вы понимали что это ворлд вайд веб то етсь эта ссылка это открыть в браузере ( интернет знаете ли существовал до браузера)
    теперь это и так ясно, по этому ввв не нужно
    так тчо по факту вещь устаревшая как мамонт, но все-равно когда вы создаете домен
    как правило сразу создаете поддомен 3 уровня для сайта и редиректите его на основной сйт.
    Так вот если у вас не создан поддомен то редирект вам не поможет
    поскольку DNS_PROBE_FINISHED_NXDOMAIN

    В общем
    1. зайдите в редактор ДНС зоны
    2. создайте или делигируйте на нужный вам айпи его ( тот же что и у основного домена)
    3. Убедитесь что у в веб панели на хостинге добавлен алиас домену ввв.
    4. дождитесь когда домен откроется по айпи, и будет вам счастье
    не забывайте что это обычный домен и его можно делигировать куда угодно и как угодно, можно на нем разменстить отдельный сайт( но этого просто не делают)
    Ответ написан
    Комментировать