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

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

    shambler81
    @shambler81 Куратор тега htaccess
    вы не учли того факта что это GET и он не является частью урла а следовательно не попадает в ваше условие.
    # 301 --- site.ru/news/?id=4 => site.ru/index.php/?type=nes
    RewriteCond %{QUERY_STRING} (^|&)id\=4($|&)
    RewriteRule ^news/$ /index.php/?type=nes [L,R=301]

    Обратите внимание что в верху я выбираю и ? и & что в свою очередь можно и не добавлять
    Думаю вам первоначальные настройки делать лучше тут https://donatstudios.com/RewriteRule_Generator , а потом добавлять уже ваши условия.
    Так же если вам нужно будет выделить часть гетр запроса и подставить его в рул, то вместо $1 используйте %1
    Ответ написан
  • AJAX + СЕО + ЧПУ?

    Особо смысла нет, в этом есть и плюсы и минусы.
    минус нельзя дать ссылку например на определенную страницу, по крайней мере клиент не может этого сделать, скидываются фильтры и тд и тп.
    Так же нужно не забывать что гугл клал на ваш аякс медный таз. и проиндексирует и все за ним.
    Так же что гугл что яндекс слушают рекомендации robots.txt но класть на них могут так же легко.
    самый простой вариант
    1. роботс тхт запреть ииндексацию всех гет параметрров или что у вас там в урле.
    2. сайтмап
    3. риал каноникал на всех страницах, в моем случае если на ней есть гет парметр то вставить риалк каноникал на нее без гета.
    А аякс можно убрать, но можно и оставить.
    Ответ написан
  • Что лучше header() vs htaccess?

    shambler81
    @shambler81 Куратор тега htaccess
    У каждого из инструментов есть свови плюсы.
    HTACCESS
    + "ожидаемое" место для таких вещей, и SEOшник полезет туда в их поиске.
    + Есть много готовых пресетов и гернраторов для правил.
    - Странное поведение редиректов ( нужно хорошо знать mod_rewrite чтобы понимать что и почему происходит)
    - не работает на nginx и iis
    - трудность создания редиректов с гет параметрами.
    - большое количество редиректов снижает производительность сайта ( Но на практике не заметно)

    php
    + нет проблем с редиректами GET параметров
    + нет последовательности кодов типа 301 +301 +301+200
    + можно сделать редирект типа сделать 301 если текущий статус урла 404 да и вообще можно положить в
    404.php ( в .htaccess тоже можно но через ...)
    + сработает на любом веб сервере
    -нестандартное место и искать их никто не будет
    -seo шник не знает php
    Ответ написан
    Комментировать
  • Как изменить URL с GET запросами через .htaccess?

    shambler81
    @shambler81 Куратор тега htaccess
    GET не является частью урла а следовательно выделяется другим способом, скобки вокруг гета, посколку вы не знаете какой из параметров будет первым, а какой пойдет через &
    Все что вам остается узнать это
    Первая скобка из RewriteRule - это $1 а вот если вы хотите взять ее же но из RewriteCond то это уже %1
    Если же вам надо вовсе удалить гет параметра, так поставьте в конце урла куда знак вопроса, он удалит все геты.


    # 301 --- http://shop.wildorchid.ru/Catalog/StyleCard.aspx?&shop=2&categoryid=2046&style=27647 => http://shop.wildorchid.ru/catalog/nizhnee_bele/1467-twin-set/trusy_slip_31/?offer=18120
    RewriteCond %{QUERY_STRING} (^|&)shop=2($|&)
    RewriteCond %{QUERY_STRING} (^|&)categoryid=2046($|&)
    RewriteCond %{QUERY_STRING} (^|&)style=27647($|&)
    RewriteRule ^Catalog/StyleCard\.aspx$ /catalog/nizhnee_bele/1467-twin-set/trusy_slip_31/?offer=18120 [L,R=301]


    ну и что-то вроде такого получится
    RewriteCond %{QUERY_STRING} (^|&)cstart=([0-9{1,}])($|&)
    RewriteRule ^/index.php$ /filter/novinki/page/%2? [L,R=301]

    Где %2 это вторая группа скобок из стринга
    а сама скобка ([0-9{1,}]) цифры от нуля до 9 не менее 1 раза.
    Ответ написан
  • Как переставить части URL. CMS Wordpress?

    а кто мешает сделать редирект с 200 ок ?
    Так же не забывай что все эти редиректы должны быть до ядра
    .htaccess читается циклом до полного установления ссылок.
    Ответ написан
    Комментировать
  • Как убрать повторяющиеся слэши (они же %2F) в конце url?

    shambler81
    @shambler81 Куратор тега htaccess
    Все до тупости просто это не урл
    GET - не является частью урла
    Соответственно вы и не можите сделать простой редирект.

    Так бы оно выглядело ровно по тз
    http://www.domain.ru/works/4/?photos=3409
    RewriteCond %{QUERY_STRING} (^|&)photos\=3409%2F%2F%2F%2F%2F%2F%2F%2F%2F%25($|&)
    RewriteRule ^works/4/$ /works/4/\?photos=3409 [L,R=301]

    Но насколько я понимаю вам нужно отрезать не просто текущий урл а все слеши, хотя непонятно что они вообще там делают.

    RewriteCond %{QUERY_STRING} (^|&)photos\=([0-9]{1,}).*($|&)
    RewriteRule ^works/4/$ /works/4/\?photos=%2 [L,R=301]
    И так по порядку
    (^|&)...($|&) - просто гет запрос он может бытьне первым а вторым следовательно можен или начинаться или заканчиваться с? или & так что можно обойтись и без этого.
    photos\= Равно экранируем
    [0-9]{1,} - от нуля до 9, повторить один раз и более
    (..) скобки групируют если группы из RewriteRule - ' это $1$2 и тд по номеру группы
    То они же из cond будут %1%2 соответственно ты видешь что photos=%2 - это то что будет в конде во второй скобке.
    Ответ написан
    6 комментариев
  • Как настроить ЧПУ в Битрикс, чтобы рабочей была только одна ссылка?

    Ну для этого вам лучше переработать структуру вообще.
    По сути для сео требуется наличие товара в мультикатегориях
    ТАких как
    /красный/товар1
    /для дома/товар1
    /samsung/холодильник/товар1
    и тд
    В общем это не уникальное явление когда товар должен лежать в разных категориях
    А урл с точки зрения сео естественно должен быть один
    В таком случае решение достаточно простое
    1. Вы складываете весь товар на первый уровень
    /catalog/tovar1
    А секциями строити всю древовидную структуру.
    Все что остается это в карточке твоара привязать его к тем секциям в которых он лежит.
    ТАйтл дескрипшен и тд все берется с секции
    Барера и тд уникализация страниц от туда же
    Так же встанет вопрос о отсутствие анонса и деталки у скции
    Я использую текстовые разделители дабы анонс сделать над контентом а детал под ним
    ##тут разделитель##
    Собственно все.
    В таком случае у вас будут урлы
    /catalog/samsung/green/
    но товар будет находиться
    /catalog/tovar1
    он же будет находиться в
    /catalog/holodilniki/small
    и ссылка опять же на товар
    /catalog/tovar
    Пример mydefile.ru
    Ответ написан
    Комментировать
  • Как добавить редирект с www на no-www, если есть https и subdomain типа first.next.com?

    ############################################################################
    #### Выбор основного зеркала (с 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
    
        # 2. Добавить www
    #RewriteCond %{ENV:HTTPS} on
        #Если включен https
    #RewriteRule .* - [E=SSL:s]
        #То создаем переменную  ssl с текстом s
    #RewriteCond %{HTTP_HOST} !^www\.(.*) [NC]
        # Если нет www в начале домена
    #RewriteRule ^(.*)$ http%{ENV:SSL}://www.%{HTTP_HOST}/$1 [R=301,L]
        #Подставляем www и https если он включен.
    
    ############################################################################
    #### Перенаправляем протокол https на http                              ####
    ############################################################################
    #RewriteCond %{ENV:HTTPS} on
       # Проверяем наличие https в URL.
    #RewriteRule ^.*$ http://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
       # Перенаправляем протокол на http.
    
    ############################################################################
    #### Перенаправляем протокол http на https                              ####
    ############################################################################
    #RewriteCond %{ENV:HTTPS} !on
       # Проверяем наличие https в URL.
    #RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
       # Перенаправляем протокол на http.
    Ответ написан
    Комментировать
  • Как добавить Редиректы modRewrite в htaccess?

    shambler81
    @shambler81 Куратор тега htaccess
    в 404.php делай все че хочешь, htaccess для этого совсем необязателен.
    А уж в пыхе инклудь хоть заинклудься, да и редиректы там проще сделать, меньше гемороя с гет запросами и тд и тп.
    Ответ написан
  • Как настроить 301 редирект на новую страницу?

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

    1. сделаны ли 301 редиректы
    2. Обновлен ли сайтмап
    3. зависит от посещяемости сайта, чем выше тем чаще.
    4. зависит от количества страниц и даже их качества этих страниц.
    5. иные факторы известные только яндекс и гугл.
    6. в robots.txt нет ограничения на количество единовременно индексируемых файлов.
    Ответ написан
    Комментировать
  • Как устранить образование дублей страниц в 1С Битрикс?

    есть множество способов добиться такого эффекта, и 90% это в самом битриксе.
    10 всеже в .htaccess
    Для исключения последнего давайте весь конфиг в студию
    а так же прицепом urlrewrite.php
    Ответ написан
  • Как запретить доступ по реальному URL с помощью 301 на его алиас mod_rewrite?

    shambler81
    @shambler81 Куратор тега htaccess
    правильно ли я понимаю что вы перенаправили на php а потом обратно на html ? и вам нужно сделать это два раза?
    ООчень странно
    Но есл иэто так то не проще ли в php файл положить html
    более подробно опишите тз
    Ответ написан
  • Как сделать redirect со слешем и перенаправлением запросов на index.php?

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

    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]
       # Добавляем слеш в конце.
    
    ############################################################################
    #### Убираем 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.
    Ответ написан
  • Как сделать редиект xxx/yyy ->xxx/category/yyy?

    shambler81
    @shambler81 Куратор тега htaccess
    четко по тз
    RewriteCond %{REQUEST_URI} ^(xxx)/(yyy)(.*)$ 
    RewriteRule ^(.*)$  http://site.ru/%1/category/%2%3 [R=301,L]
    Ответ написан
    Комментировать
  • Почему .htaccess не работает?

    shambler81
    @shambler81 Куратор тега htaccess
    RewriteRule ^blog/articles/([a-z0-9\-/]+) http://site.ru/blog/article.php\?id=$1 [L]
    Ответ написан
    Комментировать
  • Как настроить 301 редирект через htaccess без затрагивания дочерних ссылок?

    shambler81
    @shambler81 Куратор тега htaccess
    ^ - начало строки
    $ - конец строки
    ^/tovari/category1$
    Ответ написан
    Комментировать
  • Убрать часть URL?

    RewriteCond %{QUERY_STRING} (^|&)do\=(.+)($|&)
    #Если    гет запрос содержит do= и более 1 знака, так же по краям  (^|&)($|&)  - это поскольку гет может быть вторым а следовательно начинаться с &
    RewriteRule ^(.*) /%2 [L,R=301]
    #то перенаправить на %2 -  это аналог $2 только из конда ( вторая скобка из конда)
    Ответ написан