- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Тренды маркетинга в 2024 году: мобильные продажи, углубленная аналитика и ИИ
Экспертная оценка Адмитад
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Всем привет!
Казалось бы всё просто - надо обрезать URL начиная с определенной подстроки (ссылка с яндекс.маркета), но на практике затык :(
Исходный URL имеет следующий вид
Надо обрезать всё после "?_openstat"
и в итоге получить такой адрес для редиректа:
Максимум до чего дошел это вот:
RewriteRule (.+?)\.openstat.+ http://%{HTTP_HOST}/1 [L,R=301]RedirectMatch permanent (.+?)\openstat.+$ http://sitename.ru$1
Но эти правила срабатывают, только если убрать знак вопроса внутри "?_openstat", т.е. на таком URL'е только это работает.
Тогда формируется нормальный редирект на
А вот как переделать правила для того, чтобы обрабатывать это "?_openstat" не понимаю...
Прошу не дать пропасть в помешательстве...
Спасибо
Pekkonen, вы хотите обрезать ссылку редиректом для того, чтобы она стала ЧПУ-url? Если так, то не легче использовать специальные компоненты для этого, которые на автомате переделывают такие url?
Pekkonen, вы хотите обрезать ссылку редиректом для того, чтобы она стала ЧПУ-url? Если так, то не легче использовать специальные компоненты для этого, которые на автомате переделывают такие url?
У сожалению ЧПУ тут не помогут, нужно убрать часть адреса именно через htaccess
---------- Добавлено 19.02.2016 в 14:05 ----------
В RewriteRule попадает не вся ссылка, а только путь к файлу. Аргументы переносятся в %{QUERY_STRING}
Благодарю за участие!
Истина где-то рядом, но снова не могу понять в чем дело...
Предложенный вами вариант срабатывает на другом сайте, но на этом ему что-то мешает, и в результате получаю неправильный адрес :(
Может быть всё таки получится модернизировать это:
RewriteRule (.+?)\.openstat.+ http://%{HTTP_HOST}/1 [L,R=301]RedirectMatch permanent (.+?)\openstat.+$ http://sitename.ru$1
Я немного ошибся в первом посте и этот редирект
Такой редирект:
С подчеркиванием на конце URL'a.
Может быть всё таки получится модернизировать это:
RewriteRule (.+?)\.openstat.+ http://%{HTTP_HOST}/1 [L,R=301]RedirectMatch permanent (.+?)\openstat.+$ http://sitename.ru$1
Нет, не получится.
Redirect и RedirectMatch это директивы mod_alias. Всё что после знака вопроса не участвует в сравнении с шаблоном.
У этого модуля нет возможности проверять, что же там было после знака вопроса.
Такая возможность есть у mod_rewrite. Но это делается не через RewriteRule, а конструкциями
RewriteCond %{QUERY_STRING}
или
RewriteCond %{THE_REQUEST}
Предложенный вами вариант срабатывает на другом сайте, но на этом ему что-то мешает, и в результате получаю неправильный адрес :(
Порядок расположения правил имеет значение. Результат работы правил влияет на последующие правила.
Поэтому редиректы должны срабатывать до того как другие правила что-нибудь поменяют.
Ставьте редирект в самом верху сразу после RewriteEngine On
Порядок расположения правил имеет значение. Результат работы правил влияет на последующие правила.
Поэтому редиректы должны срабатывать до того как другие правила что-нибудь поменяют.
Ставьте редирект в самом верху сразу после RewriteEngine On
Еще раз спасибо!
Я в курсе этого, но тут мне надо победить внутренние редиректы Magento, которые сейчас срабатывает не к месте, и являются системными (создаются в Magento автоматически)
Отсюда и вся эта свистопляска...
Тогда переформулирую вопрос - возможно ли добавить перед этими правилами
RewriteRule (.+?)\.openstat.+ http://%{HTTP_HOST}/1 [L,R=301]RedirectMatch permanent (.+?)\openstat.+$ http://sitename.ru$1
Еще одно, которое будет вырезать из адреса конкретное сочетание ?_?
И дальше уже из обрезанного адреса буду вырезать openstat
Извиняюсь за сумбур, но другие решения как победить это в голову не приходят.
А чем не устраивал предложенный вариант.
Если нужен редирект на адрес с символом подчеркивания в конце http://sitename.ru/product_name1.html_, то нужно исправить /$1? на /$1_?
А чем не устраивал предложенный вариант.
Если вы про ваш вариант
RewriteCond %{QUERY_STRING} ^_openstatRewriteRule ^(.*)$ /$1? [R=301,L]
То он в моих конкретных условиях почему то не спасает, хотя сам редирект работает верно.
После вставки этого редиректа не происходит главного - по каким то причинам ссылка идет на ошибку (срабатывают внутренние редиректы из Magento)
Поэтому я и пытаюсь обойти эти внутренние редиректы через htaccess.
Редирект на ссылку с _ не нужен, т.к. правильная ссылка именно
Поэтому я и предполагаю что тут может подойти 2-х ходовка
Сначала вырезаем из URL символы ?_
А потом уже обрезаем всё лишнее (начиная с openstat)
Хотя уверенности, что это будет работать как надо у меня уже немного...
Ну, если редирект работает верно, но Magento показывает ошибку, то даже если сначала вырезаем из URL символы ?_, а потом уже обрезаем всё лишнее (начиная с openstat).
В итоге после перехода на верный адрес Magento точно также покажет ошибку.
Сначала нужно разобраться, почему происходит ошибка, если отрывать страницу
Сначала нужно разобраться, почему происходит ошибка, если отрывать страницу
Ссылка на товар открывается без проблем и нормально работает.
Проблемы возникают из-за параметров, которые привязываются к ссылкам на стороннем сервере (яндекс.маркет)