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

    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
    Ответ написан
    2 комментария
  • Почему редирект 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
    конфиг в стулию
    И для особо маньяков, домен не является секректной частью сайта. Обычно за это платят деньги в яндекс директ, Чтоб о его существование узнали. Так что еисли вы боитесь что мы увидим ваш домен, то сразу оденьте шапочку из фольги.
    Ответ написан
  • Как сделать редирект всех файлов определенной папки кроме одного на другой домен?

    shambler81
    @shambler81 Куратор тега htaccess
    RewriteCond %{REQUEST_URI} !^/img/logo.jpg$
    RewriteRule ^img/(.+) $http://site2.ru/$1? [R=301,L]
    Ответ написан
    Комментировать
  • Как сделать редирект в .htaccess на частично другой url?

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

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

    Все вроде так.
    единственное исключай из индекса все гет параметры типа ?search=lalala
    ТАкие как фильтры и тд
    например ?id=5&color=read&cost=140-499&in=moscow
    посколку тайтл у них не уникальный а толку от нее нет.
    А еще я бы вначале включил в индес новые а потом постепенно удалял старые.
    Ответ написан
    Комментировать
  • Как убрать слеши в конце .htaccess?

    shambler81
    @shambler81 Куратор тега htaccess
    Вам не нужно его убирать, есть места где его нужно добавлять, например у файла его нужно убрать, у директории закрыть.
    подробно писал тут.
    https://klondike-studio.ru/standards/standartnyy-h...
    Ответ написан
    Комментировать
  • Как массово сгенерировать ссылки?

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

    shambler81
    @shambler81 Куратор тега htaccess
    такие адреса есть у всех CMS порой до 5 на одну страницу ;)
    И так что можно сделать
    1. риал каноникал на всем сайте на текущую страницу без гет параметра. В идиале делайте првоерку во время генерации если страница с нормальным чпу то риал не ставите, если есть гет, тов дом добавляйте риал на страничку без гет.
    2. все остальные редиректы я уже описывал тут.
    вам этого хватит.
    https://klondike-studio.ru/standards/standartnyy-h...
    Ответ написан
    4 комментария
  • Каким должен быть 301 редирект?

    Ответ написан
    Комментировать
  • Как обрабатывать файлы с %-encoded именами в правиле rewrite в nginx?

    google page speed в оценке скорости сайта не использует те "ошибки" которые нашел на сайте.
    они имеют рекомендательных харрактер.
    Он оценивает среднюю скорость сайта в его тематике не больше ни меньше.
    Перевод в вебп вам ничего не даст в этом плане.
    Если бы его использование давало реальный прирост уже давно бы все сделали. ( сам формат чуда не делает как вы понимаете)

    Если вам действительно хочется ускорить
    1. берите vps с 9900k ( количеством мегагерц на ядро для сайта кудк принципиальней чем их количество)
    2. в россии ( если деньги на это есть) , ближе, быстрей работает.
    3. Переработаейте систему кеширования сайта в 99% она убога. и ускорить ее можно раз в 10-20
    Если она работает хорошо перепишите самые тяжелые запросы на чистый D7.
    И тд и тп.
    Поверьте веб п там будет на милионном месте.
    Ответ написан
    Комментировать
  • Страница не редиректится на новую.Как решить?

    shambler81
    @shambler81 Куратор тега htaccess
    RewriteCond %{QUERY_STRING} (^|&)id\=(d+)($|&)
    RewriteRule ^catalog\.php$ /id=%2? [L,R=301]
    Ответ написан
    Комментировать