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

    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_URI}  !^.+\/&
    RewriteRule ^(.*)$ /go\?id\=$1 [L]

    как-то так
    !- это отрицание
    Ответ написан
  • Как правильно прописать 301 редирект под определенное условие?

    shambler81
    @shambler81 Куратор тега htaccess
    Реврайт конд это просто условие "ЕСЛИ" !
    например
    RewriteCond %{REQUEST_FILENAME} !-f
    Если это не файл
    RewriteCond %{REQUEST_FILENAME} !-l
    Если это не директория
    RewriteCond %{REQUEST_FILENAME} !-d
    Если это не файл урлреврайт ( защита от цикла)
    RewriteCond %{REQUEST_FILENAME} !/bitrix/urlrewrite.php$
    ТО  выполнить редирект.
    RewriteRule ^(.*)$ /bitrix/urlrewrite.php [L]

    Если вам не требуется дополнительных условий то вам не нужен конд.

    Кстати ваше правило редиректит только 1 символ от 1 до9
    если например будет 32 то этот редирект не сработает.
    Ответ написан
    Комментировать
  • Как сделать редирект с сохранением старого адреса?

    Вес страницы упадет в любом случае, как следствие органика упадет, Но сдается мне что у вас большинство запросов витаьлные, как следствие не имеет вообще разницы какой урл.
    Если это так то вообще проблем нет.
    В любом случае последовательность действий
    такая
    1. создайте новую страницу ( дубль)
    2. Дождитесь индексации новой страницы
    3. Сделайте 301 редирект ( да потеряется часть веса но это будет и так и так, если движение в пределах одного домена еще хоть как-то можно нивелировать, но два разных, это два разных сайта.
    Вообще идиотская вещь делать разные домены, поскольку раскрутить 10 сайтов в 10 раз дороже чем 1
    Если же это отдельные бренды то у них трафик витальный и там вообще фиолетово куда вести.
    Ответ написан
    Комментировать
  • Как сделать mod_rewrite единый редирект по нескольким условиям?

    1. очень просто, этого делать не нужно, последовательные коды это нормальное явление, да лучше этого не делать, но по факту от них никуда не деться и яндекс и гугл с легкостью их видят.
    2. сложность такого редиректа вырастет и притом в стппени количества свобод ( мат часть)
    то есть если я вам его напишу вы все-равно не сможиите с ним уже потом что-то сделать.
    3. # в нижнем регистре - дайте в рожу тому кто предложыл сделать этот идиотский редирект, линукс регистрозависимая система, в отличие от виндовс, и такие идиотские редиректы в нем делать: А нет смысла, Б нельзя.
    (тут поясню)
    Вам нужно будет делать условия что это не файл не ссылка не директория, и только при таком условие менять регистр, в противном случае вы рискуете у Image.jgp получить 404
    НО по сути у вас останутя только те урлы которые делает ЧПУ сайта, а это уж простите нужно настроить адекватно ЧПУ на сайте вот и все, не нужно страдать ..йней.
    Если же вы боитесь сделать неправильный редирект то установите флаг [NC]
    Формирование же ЧПУ на совести движка, лезть в него идиотскими редиректами это верх криворукости.
    4. .htaccess читается сверху вниз и если вы хотите сделать редирект на ввв и он сразу https то поставьте его выше частного случая редиректа на htttps в таком случае вы получите редирект и ввв и https сразу ;), переместив его ниже у вас действительно будет два редиректа.
    два слеша норм НО опять же конструкция разрастется в количество раз степени свободы, а следоватлеьно это уже минимум строк 20
    Ответ написан
    Комментировать
  • Apache игнорирует 301 редирект?

    shambler81
    @shambler81 Куратор тега htaccess
    Комментировать
  • Как сделать 301 редирект с больших кириллических букв на маленькие?

    это достаточно простой редирект но есть небольшая проблема смысл его делать просто отсутстуует, что вы предлагаете говорит о в корне не понимания основ СЕО , а ведь именно для этого вы собрались деалть редирект.
    Так и о потенциальной опасности этого мероприятия.
    ЭТо вам не винда в UNUX подобных системах ( а это все кроме windows) ОС, файловая система регистрозависимая. И если в винде это действительно на уровне файловой система одинаковые символы то в линукесе это совершенно разные.
    И так
    почему не нужно этого делать
    потому что у вас нет ни одного кейса когда это помешало бы клиенту, например он попал на 404, что отобразилось у вас в метриках, и процент таких попаданий выше чем 001
    2. У человека сохранилась закладка сстарым урлом, и было бы не плохо отдать ему 200 а не 301+200
    3. Вы потеряете вес страницы посколку это новый урл ( а вы как хотели поиковые системы тоже на UNIX подобных ос работают и алгоритмы тоже) , вес же через 301 отдается отнють не весь.
    Чем может гразить.
    ну как минимум site.ru/aaa.Jpg - jnlfcn 301 и закономерно 404, по выше описаной причине
    а следовательно вам нужно будет исключить все линки директории и файлы
    По сути оставив только то что генерит ЧПУ сайта.
    Ответ написан
    Комментировать
  • Возможно ли использовать MOD_REWRITE для нескольких GET параметров?

    shambler81
    @shambler81 Куратор тега htaccess
    Да можно не вы оба не правы, там все намного интересней.
    Пример в одну сторону
    # 301 --- http://www.test3.com/faq.html?faq=13&layout=bob => bbq.html
    RewriteCond %{QUERY_STRING} (^|&)faq\=13($|&)
    RewriteCond %{QUERY_STRING} (^|&)layout\=bob($|&)
    RewriteRule ^faq\.html$ /bbq.html? [L,R=301]


    В другую еще веселее, создаете групп ы в RewriteCond и вставляете их в рул вместо $1 (он затят самим рулом ) вставляете %1
    НО
    Вам нужно не это вам нужно ЧПУ и вопрос ваш звучит как сделать ЧПУ?
    Ответ написан
    Комментировать
  • Редирект без www на www в условиях https?

    shambler81
    @shambler81 Куратор тега htaccess
    У тебя А запис www и без нее показывают разные айпи
    Притом проблема у домена без ввв
    Ответ написан
    Комментировать
  • Как в url подставлять слеш, если его нет?

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

    shambler81
    @shambler81 Куратор тега htaccess
    Твой ответ звучит так
    Как сделать редирект с GET пармметром --> гугл
    Гет пармметр не является частью REQUEST_URI
    Ответ написан
  • Как сделать редирект http и www и скрыть папки в url и расширение файлов?

    Тут ответ о редиректе
    https://klondike-studio.ru/standards/standartnyy-h...
    Что касаетс сокрашения папок в урлах при этом продолжения работы в них
    Тут два варианта
    1 создать мягкую ссылку
    2. если у вас есть nginx +apache то можно это с легкость реализовть на nginx
    3. не придумывать велосипед, таких задач просто не бывает, скорее всего вы пытаетесь решить определенную задачу не соответствующим методом, опишите более подробно зачем вы это делаете и чего хотите добиться этим?
    Ответ написан
    Комментировать
  • Редирект HTACCESS с сохранением/копированием параметров на opencart 1.5?

    shambler81
    @shambler81 Куратор тега htaccess
    %{QUERY_STRING} - не является частью урла и выделяется отдельным способом

    RewriteCond %{QUERY_STRING} (^|&)utm=(.+)($|&)
    RewriteRule ^page\.php$ /new-link.ru\?utm=%2 [L,R=301]


    %2 - это вторая групаа из RewriteCond вторая групаа из RewriteRule $2
    (.+)- 1 и более символов
    Ответ написан
    6 комментариев
  • Как настроить правильный редирект c www?

    shambler81
    @shambler81 Куратор тега htaccess
    это неправельно настроеный nginx к сожалению это достаточно чатое явление.
    Пропишите явно домен куда делать редирект, и все.
    Ответ написан
    Комментировать
  • Правильный 301 редирект ссылок wordpress после смены ЧПУ?

    shambler81
    @shambler81 Куратор тега htaccess
    собери ссылки в эксель файл было стало
    и сюда давай
    Ответ написан
    Комментировать
  • Как сделать редиректы по UTM-метке в .htaccess?

    shambler81
    @shambler81 Куратор тега htaccess
    GET - не является частью урла и в реврайт рул он не попадает вовсе
    https://www.generateit.net/mod-rewrite/index.php
    Ответ написан
  • Правильно ли составлен редирект?

    shambler81
    @shambler81 Куратор тега htaccess
    Последние обмены битрикс работает с https.

    ############################################################################
    #### Стандартный .htaccess для проектов студии Клондайк, версия 4.2     ####
    ############################################################################
    RewriteEngine On
       #  Директива включает редиректы.
    RewriteBase / 
       # Без директивы (.*) = /$1 будет /var/wwww/site/web/$1  с директивой  = /$1
    Options +FollowSymLinks
       # Разрешает переход по символическим ссылкам.
    php_flag display_errors off
      # запретить отображение ошибок  (требование монитора качества)
    php_flag allow_url_fopen off
      # запретить  использовать удаленые файлы (требование проактивной защиты)
    
    ############################################################################
    #### Выбор основного зеркала (с 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 %{HTTPS} on
       # Проверяем наличие https в URL.
    #RewriteRule ^.*$ http://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
       # Перенаправляем протокол на http.
    
    ############################################################################
    #### Перенаправляем протокол http на https                              ####
    ############################################################################
    RewriteCond %{HTTPS} !on
       # Проверяем наличие https в URL.
    RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
       # Перенаправляем протокол на http.
    
    ############################################################################
    #### Убираем index.php, если он есть в конце URL                        ####
    ############################################################################
    RewriteCond %{REQUEST_URI} ^(.*)/index\.php$
       # URL cодержит index.php в конце.
    RewriteRule ^(.*)$ %1/ [R=301,L]
       # Удалить index.php из URL.
    
    ############################################################################
    #### Убираем повторяющиеся слеши (/) в 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 нет точки (файл).
    RewriteCond %{REQUEST_URI} ^(.+)$
     # В URL есть хоть один символы
    RewriteRule ^(.*)$ $1/ [L,R=301]
       # Добавляем слеш в конце.
    
    
    ############################################################################
    #### Компрессия статического контента для гугл  спид тест               ####
    ############################################################################
    <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 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>
    ############################################################################
    #### Антивирус, только для 1С-Битрикс,                                  ####
    ############################################################################
    #php_value auto_prepend_file "/home/bitrix/ext_www/SITE.RU/bitrix/modules/security/tools/start.php"
       #  если у вас FastCGI, директив не сработает, и нужно ее записать в vhost
       #  укажите путь до файла 
       # включить тут /bitrix/admin/security_antivirus.php?lang=ru
    
    ############################################################################
    #### Конец общей части, далее следует собственные директивы .htaccess   ####
    ############################################################################
    # Рефакторинг сайта 01.01.18
    
    
    
    ############################################################################
    #### Конец собственных директив                             .htaccess   ####
    ############################################################################
    Ответ написан
    Комментировать
  • Как сделать 301 Редирект с верхнего регистра на нижний?

    никогда не понимал зачем это делать
    в linu регистрозависимая файловая система, в windows нет.
    Есть шанс отличный от нуля залить файл Image.jpg и не получить ответ на сервере с таким раскладом.
    Вы по метрике видели сколько 404 на сайте у вас из-за регистра?
    Смысл этого телодвижения?
    Ответ написан
    Комментировать
  • Перенаправление без замены строки (mod_rewrite — RewriteRule) как реализовать?

    shambler81
    @shambler81 Куратор тега htaccess
    RewriteCond %{HTTP_HOST} !^www\.domain\.ru [NC]
    # если это ! = не сам домен с ввв
    RewriteCond %{HTTP_HOST} ^(www\.|).+\.domain\.ru [NC]
    # если это ввв или без ввв, плюс это 1 и более символов до основного домена, точки экранируем.
    RewriteCond %{REQUEST_URI} ^(.+)\.(html|htm)$
    # ну я так написал, у тебя тоже пойдет
    RewriteCond %{REQUEST_FILENAME} !-d
    # И это не директория.
    RewriteCond %{REQUEST_FILENAME} !-f
    # не является файлом.
    RewriteCond %{REQUEST_FILENAME} -l
    # и не линка, в общем это не физический объект
    RewriteRule ^(.*)$ / http://domain.ru/\?page\=%2/? [R=301,L]
    # Группа с реврайт гонда это не баксы а проценты, принцип тот -же, теперь подставляем домен в рул, и главное экранируем ? это воообщет спецсимвол. который кстати у нас стоит в конце, он удалит все гет параметры.
    Естественно домен прописываем явно, поскольку нам нужно его сменить а это не часть урла.
    Есл гужно сохранить протокол то правило обрастет еще 3 строками.
    Ответ написан
  • Редиректы в битриксе?

    скорее всего это неправельные host в заголовках отдающихся nginx если у вас nginx+apache связка.
    Так же было бы не кисло глянуть на ваш .htaccess
    Ответ написан
    Комментировать