- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
здравствуйте.
поставил в htaccess 301 редирект с сайта 1 на сайт 2
RewriteCond %{HTTP_HOST} ^сайт1$
RewriteRule ^(.*)$ http://сайт2/$1 [R=301,L]
чтобы исключить из правила например файл robots, надо между этих строк вставить
RewriteCond %{REQUEST_FILENAME} !robots.txt$
все работает. Но подскажите, как исключить из обработки какой либо урл, или группу урлов. Вместо robots ставлю урл
RewriteCond %{REQUEST_FILENAME} !public/item32$ или RewriteCond %{REQUEST_FILENAME} !^.*public/item32$
но исключение не отрабатывает.
Подскажите плз что не так ?
REQUEST_FILENAME это не url, а сравнение с файлом не сервере, как не трудно догадаться из названия. Для сравнения url используется REQUEST_URI
менял FILENAME на URI - безрезультатно
правило работает одинаково верно в обоих случаях
RewriteCond %{REQUEST_FILENAME} !robots.txt$
и
RewriteCond %{REQUEST_URI} !robots.txt$
Значит не правильно указали адрес. Покажите урл.
хотел еще изменить вхождение в самом rewriterule, но тоже не получается.
По логике все урлы которые содержат item32 не должным этим правилом обрабатываться - но все равно редиректит все подряд
RewriteRule ^(.*[^item32].*)$ http://сайт2/$1 [R=301,L]
--------------------
вот содержимое htaccess
RewriteCond %{HTTP_HOST} ^сайт1\.ru$
RewriteCond %{REQUEST_URI} !robots.txt$
RewriteRule ^(.*)$ http://сайт2.ru/$1 [R=301,L]
# Дополнительные статьи
RewriteRule ^(public)/item([0-9]+)$ /publ1.php?type=$1&id=$2 [L]
--------------------
В случае с роботс это файл. В вашем примере я файла не вижу, чпу нужно проверять через request_uri.
И не будет работать. Вам уже подсказали как нужно.
---------- Добавлено 15.03.2015 в 14:32 ----------
RewriteCond %{REQUEST_URI} !/public/item1$
RewriteCond %{REQUEST_URI} !/public/item1$
по этому исключению уходим на сайт2 по этой ссылке
сайт2/publ1.php?type=public&id=66
т.е. получается зацикливается апач, исключение срабатывает, но затем в след. конструкции (RewriteRule ^(public)/item([0-9]+)$ /publ1.php?type=$1&id=$2 [L]) идет преобразование на урл вида publ1.php?type=public&id=66, и при повторном запуске htaccess уже урл не удовлетворяет правилу (RewriteCond %{REQUEST_URI} !/public/item1$) и благополучно переходит на сайт 2. Как то так, если я не ошибся
Потому что это ссылка к этому исключению не имеет никакого отношения. Там явно указан какой адрес исключить. Для других адресов нужно писать другие правила.
Потому что это ссылка к этому исключению не имеет никакого отношения. Там явно указан какой адрес исключить. Для других адресов нужно писать другие правила.
тогда так?
RewriteCond %{REQUEST_URI} !/public/item1$ [OR]
RewriteCond %{REQUEST_URI} !/publ1.php?type=public&item=1$
Параметры запроса сравниваются по QUERY_STRING, притом переменная содержит исключительно строку запроса.
%{REQUEST_URI}?%{QUERY_STRING} !/publ1\.php\?type=public&item=1$
спасибо, заработало в таком виде
RewriteCond %{REQUEST_URI} !/public/item1$
RewriteCond %{QUERY_STRING} !type=public&item=1$