Ответы пользователя по тегу Обработка URL
  • Как изменить чужую картинку с HTTP на HTTPS?

    php proxy на гите дофига примеров
    ну и стрреплейс все ;)
    Ответ написан
  • Как в файле htacces в RewriteCond прописать условие редиректа нескольких / (слешей) на 1?

    shambler81
    @shambler81 Куратор тега htaccess
    https://klondike-studio.ru/standards/standartnyy-h...
    Подробно писал тут.
    Если прям по задаче то
    RewriteCond %{THE_REQUEST} //
       # Проверяем, повторяется ли слеш (//) более двух раз.
    RewriteCond %{QUERY_STRING} !http(s|)://
      # Убедимся что это не урл в  GET
    RewriteRule .* /$0 [R=301,L]
       # Исключаем все лишние слеши.
    Ответ написан
  • Каким образом настроить редирект в nginx?

    RewriteCond %{REQUEST_URI} !^(.*)/catalog/test2$ 
    RewriteRule ^/catalog/test(.*) /catalog/test2$1 [R=301,L]
    Ответ написан
  • 301 редирект в Битриксе и самолезущий /?

    1. в битриксе уже давно реализован "основной раздел"
    2. Тут я писал о стандартных настройках для битрикс, думаю будет полезно.
    3. ставить слеш логично но не так и иногда его нужно и удалять, к прмеру если это физический файл о этом я уже писал.
    4. 22 строки перенаправления это ниочем, так же как и 6000 строк, сколько нужно столько и делайте.
    проблемы начинаются от 50К строк.
    5. список урлов было стало весь
    Ответ написан
  • Как убрать редирект в WordPress: с http://site идёт на https://site, а потом ещё и на https://www.site?

    вообще не существенно, устал о этом говорить.
    Можно убрать достаточно легко, редирект
    www и https объединить в один, но смысла в этом нет!
    RewriteEngine On
    RewriteCond %{HTTPS} off [OR]
    RewriteCond %{HTTP_HOST} ^www\.
    RewriteRule (.*) https://site.ru/$1 [L,R=301]
    Ответ написан
  • Как настроить переадрессацию?

    shambler81
    @shambler81 Куратор тега htaccess
    у вас гет параметр в урле, но гет не является частью урла по этому вы его не моежте просто выделить.
    Собственно ваш ответ:
    RewriteCond %{QUERY_STRING} (^|&)download\=497($|&)
    RewriteCond %{QUERY_STRING} (^|&)k\=1584014899($|&)
    RewriteRule ^files\-and\-media/$ /files/1.pdf? [L,R=301]
    А вот где это можно легко сделать:

    https://donatstudios.com/RewriteRule_Generator
    Ответ написан
  • Hosting to Hosting Редирект. Уменьшить расходы?

    по моему очевидный ответ у вас на сервере стоит nginx
    собственно он проксирует на бэк в henzner вот и все айпи у вас местный а сервер только проксирует. Пойдет любая помойка.
    А как сделать nginx в режиме proxy можете найти по первой же ссылке, его в 50% случаев так и используют.
    Там и балансеры и все че хочешь есть
    и да будет видно что nginx проксирует, но простите nginx+apache конфигурация сейчас самая популярная и он там тоже проксирует.
    А какой апстрим локальный или внешний узнать нереально. единственное во всех манах в интернете ошибка, уж не знаю какого ляда. Но проксируйте http-http https-https а не на http.
    Ответ написан
  • Как сделать массовый редирект страниц вложености?

    shambler81
    @shambler81 Куратор тега htaccess
    Перенаправляет все содержимое каталогов
    http://site.ru/любое/dir1/любое/любое

    RewriteCond %{REQUEST_URI} ^/dir1/(.*)$ 
       # если строка начинается с /dir1/ 
    RewriteRule ^(.*)$ /dir1%1 [R=301,L] 
       #Перенаправить все URL с начинающиеся с dir1 на dir2 с сохранением дальнейшей структуры URL
    Перенаправляет все содержимое каталогов с любым началом и концом
    http://site.ru/любое/dir2/dir1
    /любое/любое
    RewriteCond %{REQUEST_URI} ^(.*)/dir1/(.*)$ 
       # если строка содержит /dir1/ 
    RewriteRule ^(.*)$ %1/dir2/%2 [R=301,L] 
       #Перенаправить все URL с начинающиеся с dir1 на dir2 с сохранением дальнейшей структуры URL
    Ответ написан
  • При запросе несуществующей страницы сервер возвращает 200. Где проблема?

    Товарищи чекисты, домен не является СЕРКЕТНЫМ, это же не ваш пароль или ssl ключ.
    вы за рекламу деньги платите, и скрываете сайт когда на него нужно зайти в чем логика брат?
    вот я расскажу вам секретный сайт google.com - и ? ....

    Все чего в добились это то что вам тяжелее дать ответ.
    И того вангуем

    Последовательность имеет значение, поскольку правила применяются сверху вниз по кругу пока не перестанут генерироваться урлы.
    так чо вот
    Options -Indexes
    RewriteEngine on
    DirectoryIndex index.php
    
    RewriteCond %{HTTPS} off
    RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
    
    RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
    RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
    
    ErrorDocument 400 /errors.php
    ErrorDocument 403 /errors.php
    ErrorDocument 404 /errors.php
    ErrorDocument 405 /errors.php
    ErrorDocument 408 /errors.php
    ErrorDocument 500 /errors.php
    ErrorDocument 502 /errors.php
    ErrorDocument 504 /errors.php
    
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ /news/show_news.php?cn_rewrite_url=$1 [L]


    Теперь вопрос у вас есть errors.php ион отрабатывает 404, соответствено 200 это к нему.
    Если нет то удалите эти директивы как правило вообще за это отвечает сам движок.

    ErrorDocument 400 /errors.php
    ErrorDocument 403 /errors.php
    ErrorDocument 404 /errors.php
    ErrorDocument 405 /errors.php
    ErrorDocument 408 /errors.php
    ErrorDocument 500 /errors.php
    ErrorDocument 502 /errors.php
    ErrorDocument 504 /errors.php

    И дайте уже название сайта очень трудно смотреть чт оу вас там происходит когда у вас холодная война с воздухом.

    < на сайте настроен новостной блог и для его корректной работы в .htaccess прописано

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

    Правильно ли я вас понимаю вы рефакторите сайт
    ели да то список всех редиректов в студию. xls было стало.
    Ответ написан
  • Не работает .htaccess на хостинге от reg.ru, как исправить?

    shambler81
    @shambler81 Куратор тега htaccess
    1. У вас может быть nginx+PHP-FPM и .htaccess вообще не будет работать переносите правила в nginx.
    2. У вас не включен mod_rewrite зайдите в панель и включите, если в панели нет то можно попробовать так
    a2enmod rewrite
    service apache2 restart

    3. Еще вариант у вас не включена поддержка самого .htacces в апачь, это можно скорее всего сделать или через панель или с консоли , опять же в зависимости от ОС тарифа и тд
    4. У файла прав не позволяющие апачь его прочитать, права или владелец.

    Что проветрить че делать.
    1. вы вводите намеренно ошибку в файле сайт должен перестать работать. Если нет то его действительно не читают.
    2. сапорт, поскольку по умолчанию мод реврайт у всех включен а .htaccess по умолчанию обрабатывается.
    Ответ написан
  • Где ошибка в настройке 301-редиректа?

    Сертификат выдан только на www.pozdravunchik.ru, а нужен ещё и на pozdravunchik.ru.
    Написано 30 июл.

    НЕ забывайте что редирект физически не сможет сработать без сертификата, поскольку в апаче и nginx есть костыль отходящий от RFC TCP/IP
    В частности позволяющий вешать несколько сайтов на один и тот же порт и айпи.
    В следствие этого разбором какой сайт кому дать занимется непосредственно демон и берет он эту информацию из реффери, смотрит ккой хост запросили и на его основе подставляет конфиг.
    НО
    HTTPS естественно не отдаст ни 1 байта информации до получения этих ключей. Соответственно до mod_rewrite дело вообще не дойдет)
    Так что ключики на все домены должны быть актуальными.
    Пусть даже это Letsencrypt
    Ответ написан
  • Как сделать редирект с нескольких доменов на один?

    shambler81
    @shambler81 Куратор тега htaccess
    RewriteCond %{HTTP_HOST} ^(www\.|)9918474\.ru$     [NC,OR]
    RewriteCond %{HTTP_HOST} ^(www\.|)site4top\.ru$    [NC,OR]
    RewriteCond %{HTTP_HOST} ^(www\.|)sunnyfruits\.ru$ [NC,OR]
    RewriteCond %{HTTP_HOST} ^(www\.|)u-kit\.ru$       [NC,OR]
    RewriteCond %{HTTP_HOST} ^(www\.|)mediagrup\.ru$   [NC,OR]
    RewriteCond %{HTTP_HOST} ^(www\.|)vmast\.ru$       [NC,OR]
    RewriteCond %{HTTP_HOST} ^(www\.|)desid\.ru$       [NC]
    RewriteRule ^(.*)$ https://klondike-studio.ru/  [R=301,L]

    Не забывай экранировать точку.
    для того чтоб сделать эти редиректы не нужно создавать сайты, достаточно добавить алиасы к основному сайту
    5f27c6f1b9337924887753.png
    и в его htaccess вписать все правила.
    Это позволит вам не создавать кучу сайтов с разными htaccess и да тогда вот такого синтаксиса вам будет достаточно.
    Если же у вас уже есть сайты то все правила должны лежать у каждого сайта в своем .htacess
    Ответ написан
  • Почему редирект 301 срабатывает один раз?

    нет нельзя так делать.
    посколкьу не всегда он нужен.
    Вот полный алгоритм когда что должно быть.

    ############################################################################
    #### Убираем слеши в конце 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]
      # Добавляем слеш в конце.


    Так что вам нужно пересмотреть свой конфиг в перую очередь.
    Ответ написан
  • Hataccess редирект с амперсандой (&)?

    shambler81
    @shambler81 Куратор тега htaccess
    Get параметр не является частю урла и RewriteRule его физически не видит.
    RewriteCond %{QUERY_STRING} (^|&)id\=1131($|&)
    RewriteCond %{QUERY_STRING} (^|&)item_id\=21($|&)
    RewriteCond %{QUERY_STRING} (^|&)PHPSESSID\=69c6a854f33cc07d61b81257b45d4cf5($|&)
    RewriteRule ^review/report\.php$ /review/report.php?id=1131&item_id=21& [L,R=301]

    Рекомендую
    https://donatstudios.com/RewriteRule_Generator

    так же иногда нужно экраниовать спец символы в стоке куда, но этозависит от конкретного веб сервера, где-то требуется где-то нет
    eport.php?id
    eport.php\?id
    Ответ написан
  • Можно ли массово сделать редирект после замены нижнего подчеркивания на тире в url?

    о каком количестве ссылок мы говорим 10 100 1000 ?
    от этого будет вид решения.
    Есть ли список директорий с которыми нужно чтоб это работало а с которыми нет
    Ответ написан
  • Как сделать прозрачный редирект?

    1. CNAME - редирект
    2. Алиасами и все-равно вам прийдется выдать letsEncrypt на эти домены.
    поскольку при работе через https все работает не как всегда
    В апаче есть костыль, собственно их там миллион но не в этом дело.
    Когда в свое время встал вопрос о нахождение 2 и более сайтов на одном порту и одном IP , то естественно RFC TCP\IP менять никто уже не стал, ибо поздно.
    Был придуман костыль суть его такая
    при обращению к апачу, он разберает http rerfery смотрит имя хоста в заголовке и подставляет конфиг нужного тебе хоста, в результате ты можешь держать более 2 сайтов на 1 IP
    Теперь вопрос
    какой контент вы получите по защищеному протоколу ДО подтверждения ключей?
    Правильно никакого, а следовательно и редиректы вам не светят, вам придется сделать сертификаты для этих доменов, чтоб они хоть байт отдали.
    Но это еще не все
    это уже не 80 а 443 порт, как следствие если на вашем сервере открыт этот порт, то есть любой из сайтов имеет хоть 1 сертификат, то все остальные сайты и домены автоматически пытаются с них отдаться. и НЕТ не достаточно просто удалить с конфига этих сайтов 443 порт, поскольку апачь его уже слушает.
    И тут возникает еще один костыль.
    Если у вас выдан сертификат одному из доменов а остальные его не имеют и пусть даже не имеют вообще в конфигах 443 порта, то апачь знает о их существование и попытается сделать самую очевидную вещь в мире.
    А именно он подберет (ближайший конфиг с сертификатом) ближайший по алфавиту!
    То есть подставит чужой конфиг и чужой сертификат (а вот домен останется), и по этому домену откроется чужой сайт!
    в вашем случае этим тоже можно воспользоваться и оно даже решит задачу, но это решение в корне не правильное. Например на своих серверах для блокировки такого поведения мне приходится специально сайтам без https выдавать сертификат дефолтный, и уже в конфигах nginc+ apache прописывать в servers и host что этот сайт нужно заблочить и отдать 40X код
    Ответ написан
  • Как сделать новый редирект у всех пользователей?

    shambler81
    @shambler81 Куратор тега htaccess
    конфиг в стулию
    И для особо маньяков, домен не является секректной частью сайта. Обычно за это платят деньги в яндекс директ, Чтоб о его существование узнали. Так что еисли вы боитесь что мы увидим ваш домен, то сразу оденьте шапочку из фольги.
    Ответ написан
  • Как сделать редирект в .htaccess на частично другой url?

    shambler81
    @shambler81 Куратор тега htaccess
    RewriteRule ^(.+)\-01\-mart\-2020$ /$1\-02\-aprel\-2020? [L,R=301]

    .+- 1 и более символов
    (..)- просто скобки собирают все в переменную $1 если были бы вторые скобки то они были бы $2
    подставляем все это в "куда"
    ну и ? в конце это удалить все гет параметры если они там были
    Ответ написан