- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу

В 2023 году 36,9% всех DDoS-атак пришлось на сферу финансов
А 24,9% – на сегмент электронной коммерции
Оксана Мамчуева

Что делать, если ваша email-рассылка попала в спам
10 распространенных причин и решений
Екатерина Ткаченко
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
ivan-lev, Rulin, siv1987, все же лучше не забывать в регулярных выражениях перед точкой ставить бэкслэш.
Я об экранированию не забываю, а если здесь даже и не указал, то ничего страшного не будет.
Почему то не работает.
И не будет работать. Используйте другой пример
RewriteCond %{QUERY_STRING} ^id=47$
RewriteRule ^str_postart\.php /str_postcat.php?id=187 [R=301,L]
Покажи весь .htaccess, возможно правило размещено в неправильном месте после обработки правила при котором срабатывает 404 ошибка
RewriteRule ^str_postart.php\?id=47$ /str_postcat.php?id=187 [L]
Почему то не работает.
Вот наглядный пример.
http://world-networks.ru/view_posth.php?id=47 Страница удалена, нужно перенаправить с сохранением PR на:
http://world-networks.ru/view_post.php?id=189
Держите быстрый и надежный код.
Я проверил - у меня работает.
Я проверил - у меня работает.
Ваше правило сработает в ложных случаях, например если id=470 или 47 + любое число, чего быть не должно
Такой вариант будет более правильный:
Держите быстрый и надежный код.
Код:
RewriteCond %{REQUEST_URI} =/view_posth.php
RewriteCond %{QUERY_STRING} =id=47
RewriteRule . /view_post.php?id=189 [R=301,L]
Я проверил - у меня работает.
Огромное спасибо!
Если только для id=1
Переменной QUERY в мануале не нашел. Неужели у вас этот код работает?
Если только для конкретных id, а не динамически для всех, тогда так:
Динамически так, но тогда id будут совпадать, а я так понял они у вас разные:
Или нужен внутренний редирект? Чтоб урл остался site.ru/str_postart.php?id=47 но показывалось содержимое site.ru/str_postcat.php?id=187 тогда так:
Неужели у вас эти три кода работают? Все, что после знака вопроса не должно матчить в паттерне. Из мануала: "The Pattern will not be matched against the query string."
Кроме того, во втором коде используется \d+, что тоже не должно работать в .htaccess. Вы не с php, случаем, перепутали? ;)
---------- Добавлено 01.07.2012 в 15:52 ----------
Ваше правило сработает в ложных случаях, например если id=470 или 47 + любое число, чего быть не должно
А вы проверьте - не будет ложных срабатываний ;)
Дело в том, что при таком синтаксисе, как RewriteCond %{QUERY_STRING} =id=47, CondPattern обрабатывается не как регулярное выражение. Идет тупое и быстрое сравнение на точное соответствие строке.
Это все из мануала.
Неужели у вас эти три кода работают? Все, что после знака вопроса не должно матчить в паттерне. Из мануала: "The Pattern will not be matched against the query string."
Кроме того, во втором коде используется \d+, что тоже не должно работать в .htaccess. Вы не с php, случаем, перепутали? ;)
Каюсь немного напутал c RewriteRule, у него в первом параметре не может быть query, его можно только через переменные получить, но \d+ у меня в .htaccess без проблем работает т.к. со второй версии apache почти полностью поддерживает perl совместимые регулярки
но \d+ у меня в .htaccess без проблем работает т.к. со второй версии apache почти полностью поддерживает perl совместимые регулярки
Спасибо за информацию. У меня на nginx, например, не работает - специально только что проверил.
Дело в том, что при таком синтаксисе, как RewriteCond %{QUERY_STRING} =id=47, CondPattern обрабатывается не как регулярное выражение. Идет тупое и быстрое сравнение на точное соответствие строке.
Это все из мануала.
Ох черт, сказывается долгое не писание правил для htaccess, совсем забыл, действительно вы правы так оно и есть
---------- Добавлено 01.07.2012 в 16:09 ----------
Спасибо за информацию. У меня на nginx, например, не работает - специально только что проверил.
Перепроверил у меня работает: Apache/2.2.16 + nginx/0.8.29
http://httpd.apache.org/docs/current/rewrite/intro.html#regex
> Переменной QUERY в мануале не нашел. Неужели у вас этот код работает?
Нет, конечно.. QUERY_STRING должно было быть.. Хотя, в любом случае, Ваш вариант с равенством более корректен.
p.s. Обычно, такого рода редиректов "без закономерностей" на сайте получается относительно много - выношу их в скрипт - формирую массив вида 'откуда'=>'куда', и, в зависимости от значения $_SERVER['REQUEST_URI'], кидаю редирект.