- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Коллеги, подскажите пожалуйста, как через htaccess сделать 301 редирект некоторых страниц форума, к примеру, /ru/forum/750848 на любой другой url?
С синтаксисом не могу разобраться.
RewriteEngine on
RewriteCond %{QUERY_STRING} ^t=750848$
RewriteRule ^.*$ http://www.ya.ru/? [R=301]
Ааа, дурья моя башка. :) Спасибо большое!
А зачем ? после адреса страницы на которую надо отправить?
Если ? там не будет, то редирект будет на ya.ru?t=750848, а не просто на ya.ru
Ааа, дурья моя башка. :) Спасибо большое!
А зачем ? после адреса страницы на которую надо отправить?
Апну тему. А как подобный редирект реализовать:
forumdisplay.php?f=29&order=desc&page=2 на forumdisplay.php?f=29&page=2
Что-то не получается, тут же два параметра, просто
%{QUERY_STRING} ^f=([0-9]+).*$ нельзя...
Коллеги, хелп ми плиз. :)
Вместо одного условия поставьте два (двумя строками)
RewriteCond %{QUERY_STRING} t=([0-9]+) [NC]
RewriteCond %{QUERY_STRING} page=([0-9]+) [NC]
RewriteRule ^.*$ http://%{HTTP_HOST}/$0?t=%1&page=%2 [R=301,L]
Можно и одной строкой, но это только если уверены что порядок следования параметров будет всегда таким (всегда сначала одни, например f, а затем page)
Надежней двумя строками.
Редирект произойдет если выполнятся условия одновременно двух строк.
Что-то здесь не так. t не совсем понятно откуда взялось. :) Но это ладно. Ведь по такой схеме как странно получается.
forumdisplay.php?f=29&order=desc&page=2
forumdisplay.php?f=29&page=2
Оба варианта подходят. А мне надо чтобы при обращению по первому типу адреса, редиректило на второй вариант.
t я по ошибке вместо f использовал
Написал в прошлом сообщении редирект с двумя условиями не проверяя, а когда проверил, оказалось что так не работает.
Могу предложить два проверенных варианта с одной строкой условия
Удаление из строки запроса всех параметров кроме f и page (в том случае если f раньше page и между ними есть другие параметры или один параметр)
RewriteCond %{QUERY_STRING} f=([0-9]+).+&page=([0-9]+)
RewriteRule ^.*$ http://%{HTTP_HOST}/$0?f=%1&page=%2 [R=301,L]
и вариант, удаляющий параметр order с любым значением, и сохраняющий все остальные параметры в строке запроса:
RewriteCond %{QUERY_STRING} (.*)&order=[^&]+(.*)
RewriteRule ^.*$ http://%{HTTP_HOST}/$0?%1%2 [R=301,L]
[NC] можно добавлять чтоб работало независимо от регистра (одинаково для page и PAGE например), чеще всего это не нужно
Нельзя ли как-то так сделать запись:
Немного смущают варианты предложенные, не знаю чем. Нет конкретики, в каком точно случае (адрес вида forumdisplay.php?f=29&order=desc&page=2) перенаправлять.
RewriteRule не видит то, что в адресе находится после вопросительного знака (не видит строки запроса, параметров)
Так что одной строкой не получится.
Оба варианта будут перенаправлять для всех страниц c подходящей под шаблон строкой запроса.
Если у Вас конкретно нужно подобное только для страницы forumdisplay.php то можно конкретизировать ее, например так
RewriteCond %{QUERY_STRING} (.*)&order=[^&]+(.*)
RewriteRule ^forumdisplay\.php$ http://%{HTTP_HOST}/$0?%1%2 [R=301,L]
У Вас в этом случае из адреса типа
forumdisplay.php?f=29&order=desc&page=2
уберется все начиная с "&order=" и до первого следующего символа & (не включая его)
Вместо $0 подставится вся строка из первой части RewriteRule (все что находится между ^$)
Можете просто написать вместо $0 значение forumdisplay.php (чтоб понятнее было Вам, серверу без разницы в данном случае)
Вместо %1 и %2 сервер подставит значения из RewriteCond соответствующие первым и вторым скобкам соответственно (в данном случае все то что находится в начале строки запроса и что в конце, до параметра order и после него).
Спасибо. Вроде бы работает как надо. Надеюсь не выскочит потом неожиданно проблема в другом месте.
Спасибо. Вроде бы работает как надо. Надеюсь не выскочит потом неожиданно проблема в другом месте.