Советы
Старайтесь избегать последовательных редиректов, т.к. каждый редирект это время загрузки страницы и передача ссылочной массы, а для поискового робота - нечеткие команды.
Старайтесь не делать редирект на страницу ответ которой отличен от кода 200. Т.е. редирект должен переадресовывать на существующую страницу с 200 ответом сервера.
Браузеры кэшируют редиректы, поэтому проверять их лучше с помощью онлайн ресурсов.
301 редирект с одной страницы на другую
Используется когда страница переехала с одного URL на другой. Например старый URL страницы /page-1/ необходимо сделать 301 редирект на URL http://mysite.com/new-page-1/
Redirect 301 /page-1/ http://mysite.com/new-page-1/
или
RewriteCond %{REQUEST_URI} ^/page-1/$ RewriteRule ^.*$ http://mysite.com/new-page-1/? [R=301,L]
301 редирект с www на домен без www
301 редирект домена с www на без www так же называется канонизацией домена или склейкой. Например делаем редирект с http://www.mysite.com на http://mysite.com, т.о. главное зеркало сайта это http://mysite.com
RewriteCond %{HTTP_HOST} ^www\.(.*)$ RewriteRule ^(.*)$ http://%1/$1 [L,R=301]
или
RewriteCond %{HTTP_HOST} ^www\.mysite\.com [NC] RewriteRule ^(.*)$ http://mysite.com/$1 [R=301,L]
301 редирект с домена без www на домен с www
Также как и в случае описанным выше это еще называется канонизацией домена или его склейкой. Например 301 редирект с домена http://mysite.com на домен http://www.mysite.com, т.е. главное зеркало это www.mysite.com
RewriteCond %{HTTP_HOST} ^([^www].*)$ RewriteRule ^(.*)$ http://www.%1/$1 [L,R=301]
или
RewriteCond %{HTTP_HOST} ^mysite\.com$ [NC] RewriteRule ^(.*)$ http://www.mysite.com/$1 [R=301,L]
301 редирект со страниц со слешем на страницы без слеша в конце URL
Часто бывает так что одна и та же страница доступна по двум URL, например /may-best-page и /my-best-page/, если человеку понятно что это одна и та же страница, то поисковые системы понимают это как две разные страницы, соответственно разбивают вес страницы, а также показываются в аналитике (статистике) как 2 разные страницы. Для того, что бы избежать этого вы можете сделать 301 редирект со страниц со слешем в конце URL на без него.
RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} ![^\/]$ RewriteRule ^(.*)\/$ /$1 [R=301,L]
Такой редирект будет работать следующим образом:
Запрос (URL) | Редирект (URL) |
---|---|
http://mysite/page/ | http://mysite/page |
http://mysite/page/?value=1 | http://mysite/page?value=1 |
http://mysite/page.html/ | http://mysite/page.html |
http://mysite/page?value=1/ | http://mysite/page?value=1 |
http://mysite/page | без редиректа |
http://mysite/page.html | без редиректа |
http://mysite/page?value=1 | без редиректа |
301 редирект со страниц без слеша на страницы со слешем в конце URL
Причина делать такой редирект та же, что и в ситуации описанным выше, за исключением того, что редирект необходимо делать со страницы без слеша в конце URL на страницу со слешем в конце URL
RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} !\/$ RewriteRule ^(.*[^\/])$ /$1/ [R=301,L]
Пример работы редиректа:
Запрос (URL) | Редирект (URL) |
---|---|
http://mysite/page | http://mysite/page/ |
http://mysite/page.html | http://mysite/page.html |
http://mysite/page?value=1 | http://mysite/page/?value=1 |
http://mysite/page/ | без редиректа |
http://mysite/page/?value=1 | без редиректа |
301 редирект со всех страниц одного домена на главную страницу другого домена
К примеру вам необходимо сделать 301 редирект с любого URL текущего сайт (к которому относиться .htaccess) на домен http://mysite.com
RewriteCond %{REQUEST_URI} (.*) RewriteRule ^(.*)$ http://mysite.com/ [L,R=301]
301 редирект с каждой страницы одного домена на такой же URL адрес другого домена
Для примера рассмотрим ситуацию когда ваш сайт переехал на новый домен, но у вас есть естественное желание сохранить пользователей переходящих по старым ссылкам и открыть сайт на новом домене с нужной пользователю информацией
RewriteCond %{REQUEST_URI} (.*) RewriteRule ^(.*)$ http://mysite.com/$1 [L,R=301]
301 редирект с протокола http на протокол https
Если у вас на сайте есть SSL сертификат и работает протокол https, то для 301-го редиректа вам необходимо добавить в .htaccess следующий код:
RewriteCond %{HTTPS} !=on RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
301 редирект с протокола https на http
И обратный пример, если у вас нет SSL сертификата и протокол https не работает:
RewriteCond %{HTTPS} =on RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [R=301,L]
Удаляем несколько слешей подряд в URL и делаем 301 редирект
Если по случайности у вас появились URL такого вида: mysite.com/page///my-page, то можно сделать 301-й редирект без дублирования слешей:
RewriteCond %{REQUEST_URI} ^(.*)//(.*)$ RewriteRule . %1/%2 [R=301,L]
Удаляем подряд несколько тире (дефисов) и делаем 301 редирект
Как в ситуации с повторяющимися слешами в URL может появиться несколько тире или дефисов, для 301-го редиректа с их удалением добавляем код:
RewriteCond %{REQUEST_URI} ^(.*)--(.*)$ RewriteRule . %1-%2 [R=301,L]
Вырезать из URL index.php
Пример без GET параметров, например с mysite.com/index.php на mysite.com/
RewriteCond %{REQUEST_URI} /index.php RewriteCond %{QUERY_STRING} ^\z RewriteRule ^(.*)$ http://mysite.ru/? [R=301,L]
Пример с GET параметрами, например с mysite.com/index.php?value=1&p=3 на mysite.com/?value=1&p=3
RewriteCond %{REQUEST_URI} /index.php RewriteRule ^(.*)$ http://mysite.ru/ [R=301,L]
Несколько примеров совмещения 2-х редиректов в один
Для избежания последовательных редиректов можно использовать совмещенные варианты.
301 редирект с www на без www и со слешем в конце URL
Комбинируем 301 редирект с www на домен без www и 301 редирект со страниц без слеша на страницы со слешем в конце
RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} !\/$ RewriteCond %{HTTP_HOST} ^www\.(.*)$ RewriteRule ^(.*)$ http://%1/$1/ [L,R=301] RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} ![^\/]$ RewriteCond %{HTTP_HOST} ^www\.(.*)$ RewriteRule ^(.*)$ http://%1/$1 [L,R=301] RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} !\/$ RewriteCond %{HTTP_HOST} ^([^www].*)$ RewriteRule ^(.*)$ http://%1/$1/ [L,R=301]
301 редирект с без www на с www и со слешем в конце URL
Комбинируем 301 редирект с домена без www на домен с www и 301 редирект со страниц без слеша на страницы со слешем в конце URL
RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} !\/$ RewriteCond %{HTTP_HOST} ^www\.(.*)$ RewriteRule ^(.*)$ http://www.%1/$1/ [L,R=301] RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} !\/$ RewriteCond %{HTTP_HOST} ^([^www].*)$ RewriteRule ^(.*)$ http://www.%1/$1/ [L,R=301] RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} ![^\/]$ RewriteCond %{HTTP_HOST} ^([^www].*)$ RewriteRule ^(.*)$ http://www.%1/$1 [L,R=301]
301 редирект с без www на с www и без слеша в конце URL
Комбинируем 301 редирект с домена без www на домен с www и 301 редирект со страниц со слешем на страницы без слеша в конце URL
RewriteCond %{REQUEST_URI} ^\/$ RewriteCond %{HTTP_HOST} ^([^www].*)$ RewriteRule ^(.*)$ http://www.%1/$1 [L,R=301] RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} \/$ RewriteCond %{HTTP_HOST} ^www\.(.*)$ RewriteRule ^(.*)\/$ http://www.%1/$1 [L,R=301] RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} !\/$ RewriteCond %{HTTP_HOST} ^([^www].*)$ RewriteRule ^(.*)$ http://www.%1/$1 [L,R=301] RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} \/$ RewriteCond %{HTTP_HOST} ^([^www].*)$ RewriteRule ^(.*)\/$ http://www.%1/$1 [L,R=301]
301 редирект с www на без www и без слеша в конце URL
Комбинируем 301 редирект с www на домен без www и 301 редирект со страниц со слешем на страницы без слеша в конце URL
RewriteCond %{REQUEST_URI} ^\/$ RewriteCond %{HTTP_HOST} ^www\.(.*)$ RewriteRule ^(.*)$ http://%1/$1 [L,R=301] RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} \/$ RewriteCond %{HTTP_HOST} ^www\.(.*)$ RewriteRule ^(.*)\/$ http://%1/$1 [L,R=301] RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} !\/$ RewriteCond %{HTTP_HOST} ^www\.(.*)$ RewriteRule ^(.*)$ http://%1/$1 [L,R=301] RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} \/$ RewriteCond %{HTTP_HOST} ^([^www].*)$ RewriteRule ^(.*)\/$ http://%1/$1 [L,R=301]
Комментарии
Добрый день, у меня после добавления:
ОтветитьRewriteCond %{REQUEST_URI} !\?
RewriteCond %{REQUEST_URI} !\&
RewriteCond %{REQUEST_URI} !\=
RewriteCond %{REQUEST_URI} !\.
RewriteCond %{REQUEST_URI} !\/$
RewriteRule ^(.*[^\/])$ /$1/ [R=301,L]
не работают шрифты с иконками бутстрапа: glyphicons-halflings-regular.eot, glyphicons-halflings-regular.svg, ...
Что не так и что делать?
Вот рабочий пример:
ОтветитьAddDefaultCharset utf-8
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.site\.domain$ [NC]
RewriteRule ^(.*)$ http://site.domain/$1 [R=301,L]
RewriteCond %{REQUEST_URI} !\?
RewriteCond %{REQUEST_URI} !\&
RewriteCond %{REQUEST_URI} !\=
RewriteCond %{REQUEST_URI} !\.
RewriteCond %{REQUEST_URI} !\/$
RewriteRule ^(.*[^\/])$ /$1/ [R=301,L]
# if a directory or a file exists, use it directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# otherwise forward it to index.php
RewriteRule . index.php
Ясно, спасибо у меня было так:
Ответить# if a directory or a file exists, use it directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !\?
RewriteCond %{REQUEST_URI} !\&
RewriteCond %{REQUEST_URI} !\=
RewriteCond %{REQUEST_URI} !\.
RewriteCond %{REQUEST_URI} !\/$
RewriteRule ^(.*[^\/])$ /$1/ [R=301,L]
Поменял местами, все ок. Я в .htaccess не селен, спасибо за примеры
А как сделать редирект со всех URL без слеша в конце на со слешем в конце, кроме папки /admin?
ОтветитьВот так:
Ответить#...
RewriteCond %{REQUEST_URI} !\?
RewriteCond %{REQUEST_URI} !\&
RewriteCond %{REQUEST_URI} !\=
RewriteCond %{REQUEST_URI} !\.
RewriteCond %{REQUEST_URI} !\/$
RewriteCond %{REQUEST_URI} !^/admin.*$
RewriteRule ^(.*[^\/])$ /$1/ [R=301,L]
# if a directory or a file exists, use it directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
#...
Спасибо
ОтветитьХороший список, добавлю в избранное
ОтветитьДобрый день, как сделать весь сайт с HTTP на HTTPS, а вот все что в папке admin оставить с HTTP?
ОтветитьПопробуйте так:
ОтветитьAddDefaultCharset utf-8
RewriteEngine on
RewriteCond %{HTTPS} !=on
RewriteCond %{REQUEST_URI} !^/admin.*$
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
#...
Спасибо. выбрасывает на https://domain.ru/index.php :(, есть еще предложения...может из-за того, что папки формально нет, есть только урл для панели админа https://domain.ru/admin
ОтветитьА если как-то так:
ОтветитьAddDefaultCharset utf-8
RewriteEngine on
RewriteCond %{HTTPS} !=on
RewriteCond %{REQUEST_URI} !^/test.*$
RewriteCond %{REQUEST_URI} !^/index.php
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php
Вроде работает, но в адекватности примера я не уверен)
Замените
ОтветитьRewriteCond %{REQUEST_URI} !^/test.*$
на
RewriteCond %{REQUEST_URI} !^/admin.*$
Спасибо за помощь и рабочий ответ на мой вопрос: Как сделать полную переадресcацию с HTTP на HTTPS и игнорировать / исключить папку в УРЛ если ей нет физически на сервере (админ / admin).
ОтветитьРад помочь)
ОтветитьИ кстати да, это
ОтветитьRewriteCond %{HTTPS} !=on
RewriteCond %{REQUEST_URI} !^/admin.*$
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
http://кодер.укр/записи/301-редирект-на-все-случаи-жизни-с-помощью-htaccess#299
работает если есть папка admin
Спасибо, Ваш сайт добавила в любимые, а решения в свой файл знания.mmap :-)
ОтветитьВопрос из-за непонимания, зачем делать папку без https, если у вас есть сертификат для использования https?
Ответитьнужно админить сайт на чужом самописном ЦМСе, купили сертификат, и в админке начались проблемы.
ОтветитьДобрый день, как сделать редирект для всех пользователей кроме меня (админа) чтобы можно было спокойно редактировать главную страницу, а пользователей просто перекидывало на другую страницу.
ОтветитьТолько через PHP
Ответить301 редирект с каждой страницы одного домена на такой же URL адрес другого домена
ОтветитьRewriteCond %{REQUEST_URI} (.*)
RewriteRule ^(.*)$ http://mysite.com/$1 [L,R=301]
Скажите пожалуйста, в данном случае выходит, что и админку тоже будет перекидывать на новый сайт?
можно ли сделать исключение, чтоб конкретные страницы оставались без редиректа?
редирект каждой отдельной страницы отдельно - не вариант - их слишком много
AddDefaultCharset utf-8
ОтветитьRewriteEngine on
RewriteCond %{REQUEST_URI} !^/admin.*$
RewriteRule ^(.*)$ http://mysite.com/$1 [L,R=301]
Это будет работать при условии, что есть реальная папка admin
Вот так будет работать без реальной папки admin:
ОтветитьRewriteCond %{REQUEST_URI} !^/index.php
RewriteCond %{REQUEST_URI} !^/admin.*$
RewriteRule ^(.*)$ http://mysite.com/$1 [R=301,L]
т.е. во втором случае главная страница будет без редиректа?
ОтветитьПримеры расчитаны на ЧПУ url. Т.е.такого вида /, /admin/user, /category
ОтветитьЕсли у вас url такого вида /index.php, /index.php?a=admin, /index.php?a=category, то да, редиректа с главной не будет
есть папка wp-amin
ОтветитьCMS - WordPress.
я так понял, что синтаксис
RewriteCond %{REQUEST_URI} !^/wp-admin.*$
RewriteRule ^(.*)$ http://mysite.com/$1 [L,R=301]
вполне подойдет.
полный код для редиректа, проверьте, пожалуйста:
Ответить<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !^/wp-admin.*$
RewriteRule ^(.*)$ http://mysite.com/$1 [L,R=301]
</IfModule>
И скажите пожалуйста еще такой вопрос.
Ответитьвот сайт находился на домене my-site.com
я перенес его на домен my-site.net, на старом сайте сделал редирект через htaccess
что будет видеть пользователь в адресной строке, переходя по ссылке my-site.com
он будет видеть старый адрес, или уже новый?
если будет видеть новый адрес - можно ли сделать так, чтоб пользователь видел старый адрес в адресной строке, но при этом был на новом сайте (при этом не меняя ДНС на старом домене)???
Будет видеть новый домен. В этом и есть вся суть 301-го редиректа со старого домена на новый.
ОтветитьВам по моему не нужен редирект вообще. Если вам нужно чтобы код был на одном домене, а сайт работал на другом, то можно использовать алиасы. Но смысла я в этом не вижу (кроме как мультиязычность). Можно просто перенести код выше папки сайта и поменять пути.
Вообщем, какая задача перед вами стоит?
Или старый и новый адрес имеется ввиду url без домена?
ОтветитьЕгор, можно с Вами лично пообщаться, не выводя всю суть проблемы на общественное обозрение?
ОтветитьПишите: egor@кодер.укр
ОтветитьПо возможности помогу
Подскажите, пожалуйста. Нужно проставить слеш на главной странице. Т.е. по всем ссылкам по типу mysite.com.ua/shop будет редирект на страницу со слешом в конце, но mysite.com.ua/ и mysite.com.ua будут возвращать 200 код. А я хочу сделать редирект с mysite.com.ua на mysite.com.ua/
ОтветитьЕсли я не ошибаюсь, то во всех браузерах (современных) как бы вы не вводили:
Ответитьhttp://mysite.com.ua/ или http://mysite.com.ua будет открыта страница http://mysite.com.ua (без слеша в конце)
Спасибо за столь быстрый ответ. Совершенно верно, но для СЕО и для проверки на сайте http://www.bertal.ru нужно сделать так, чтоб это были две разных страницы. При чем наш WP сам делает редирект, если ввести адрес без слеша.
ОтветитьМожно попробовать так:
ОтветитьДобавить слеш в конец:
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*[^/])$ $1/ [L,R=301]
Убрать слеш вконце:
RewriteBase /
RewriteCond %{HTTP_HOST} (.*)
RewriteCond %{REQUEST_URI} /$ [NC]
RewriteRule ^(.*)(/)$ $1 [L,R=301]
Вот строка, которая добавляет слеш
ОтветитьRewriteRule ^(.*)$ http://www.mysite.com.ua/$1/ [R=301,L]
но он будет теперь везде и, соответственно, все страницы, кроме главное не будут работать нормально.
Можно ли написать условие, что только для главной страницы?
Что-то у меня пока идей нет, если придумаю, то напишу
ОтветитьДобрый день.
ОтветитьНе появилось на сегодняшний день идей/решений для склейки доменного имени (без внуиренних страниц) без слеша на слеш?
domain.com -301> domain.com/
Что-то у меня редирект с www на без www не работает:
ОтветитьRewriteCond %{HTTP_HOST} ^www\.mysite\.com [NC]
RewriteRule ^(.*)$ http://mysite.com/$1 [R=301,L]
А нет, мой затуп, все работает, спс за статью
ОтветитьПриветствую, подскажите? есть сайт сайт.ru с главной редирект со слеш сайт.ru/ срабатывает на сайт.ru, а внутряки типа сайт.ru/price не срабатывает со слешем сайт.ru/price/, выдает 404 ошибку, как прописать чтобы был редирект со слешем на без..заранее спасибо..
ОтветитьДоброе утро, Андрей. У вас редирект происходит, но выдает 404 ошибку? Я правильно понял?
ОтветитьЕсли да, то смотрите в разбор url в коде.
Если нет, то редирект со слешем на без слеша в конце:
AddDefaultCharset utf-8
RewriteEngine on
RewriteCond %{REQUEST_URI} !\?
RewriteCond %{REQUEST_URI} !\&
RewriteCond %{REQUEST_URI} !\=
RewriteCond %{REQUEST_URI} !\.
RewriteCond %{REQUEST_URI} ![^\/]$
RewriteRule ^(.*)\/$ /$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php
#...
Да, вставил
ОтветитьRewriteCond %{REQUEST_URI} !\?
RewriteCond %{REQUEST_URI} !\&
RewriteCond %{REQUEST_URI} !\=
RewriteCond %{REQUEST_URI} !\.
RewriteCond %{REQUEST_URI} ![^\/]$
RewriteRule ^(.*)\/$ /$1 [R=301,L]
Остальное не понял зачем?
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php
#...
Как сделать редирект страниц
ОтветитьБыло http://site.ru/page1.html
стало http://site.ru/uslugi/page1.html
пробовал
ОтветитьRedirect 301 /page1.html http://site.ru/uslugi/page1.html
не работает выдает 404
Проверил: Redirect 301 /page1.html http://site.ru/uslugi/page1.html
ОтветитьУ меня работает.
Что в адресной строке после обращения к странице site.com/page1.html?
И еще не мешало бы посмотреть сам .htaccess полностью
после обращения 404
Ответитьв адресной строке http://www.site.ru/uslugi/page1.html?q=page1.html
AddDefaultCharset UTF-8
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^site\.ru$ [NC]
RewriteRule (.*) http://www.site.ru/$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
Redirect 301 /page1.html http://site.ru/uslugi/page1.html
<IfModule mod_headers.c>
# WEEK
<FilesMatch "\.(jpg|jpeg|png|gif|swf)$">
Header set Cache-Control "max-age=604800, public"
</FilesMatch>
# WEEK
<FilesMatch "\.(js|css|swf)$">
Header set Cache-Control "max-age=604800"
</FilesMatch>
</IfModule>
<ifModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 5 seconds"
ExpiresByType image/x-icon "access plus 1 month"
ExpiresByType image/jpeg "access plus 4 weeks"
ExpiresByType image/png "access plus 30 days"
ExpiresByType image/gif "access plus 43829 minutes"
ExpiresByType application/x-shockwave-flash "access plus 2592000 seconds"
ExpiresByType text/css "access plus 604800 seconds"
ExpiresByType text/javascript "access plus 604800 seconds"
ExpiresByType application/javascript "access plus 604800 seconds"
ExpiresByType application/x-javascript "access plus 604800 seconds"
ExpiresByType text/html "access plus 43200 seconds"
ExpiresByType application/xhtml+xml "access plus 600 seconds"
</ifModule>
Если после обращения в адресной строке http://www.site.ru/uslugi/page1.html?q=page1.html, значит редирект работает. Ищите ошибку в коде, почему он не понимает http://www.site.ru/uslugi/page1.html
ОтветитьА если напрямую зайти на http://www.site.ru/uslugi/page1.html?q=page1.html я так понимаю тоже будет 404
Если зайти на http://www.site.ru/page1.html в адресной строке http://www.site.ru/uslugi/page1.html?q=page1.html
ОтветитьЕсли на прямую http://www.site.ru/uslugi/page1.html то открывается страница все ок
ОтветитьТ.е. ошибка из-за GET параметра ?q=page1.html, если без него заходить то все ок, с ним 404?
ОтветитьТогда сделайте вместо:
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^site\.ru$ [NC]
RewriteRule (.*) http://www.site.ru/$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
Redirect 301 /page1.html http://site.ru/uslugi/page1.html
Так:
RewriteEngine On
Redirect 301 /page1.html http://site.ru/uslugi/page1.html
RewriteBase /
RewriteCond %{HTTP_HOST} ^site\.ru$ [NC]
RewriteRule (.*) http://www.site.ru/$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
тоже самое
ОтветитьНужно кэш почистить, 301 редирект кэшируется или попробуйте через другой браузер
ОтветитьПодскажите пожалуйста
ОтветитьНужно с site.ru/cat1/cat2/cat3/cat4
Сделать 301 редирект на site.ru/cat1/cat2/cat3
Правило нужно, а то страниц таких сотни
ОтветитьТогда сделайте через php
ОтветитьА через htaccess решения нет?
ОтветитьСкорее всего можно с помощью регулярных выражений, но я тут помочь не могу
ОтветитьRewriteEngine On
ОтветитьRedirect 301 /cat1/cat2/cat3/cat4 http://site.ru/cat1/cat2/cat3
почистил кеш в cms открыл в 2 разных браузерах тоже самое
ОтветитьТогда у меня идей больше нет
Ответитьвсе равно спасибо за помощь
ОтветитьЗдравствуйте! Подскажите пожалуйста как сделать 301 редирект со всех страниц типа
Ответитьhttp://holod-remont64.ru/catalog/2-remont_holodilnika_amana_v_saratove
на
http://holod-remont64.ru/catalog/2-remont_holodilnika_amana_v_saratove
При условии, что все они относятся к разделу http://holod-remont64.ru/catalog
Спасибо!
на http://holod-remont64.ru/catalog/2-remont_holodilnika_amana_v_saratove/
ОтветитьДоброе утро. Что-то не понял какой редирект нужен. С без слеша на со слешем в конце url?
ОтветитьНужен был с без слеша на слеш
ОтветитьRewriteRule ^catalog/([^/]+)$ http://%{HTTP_HOST}/catalog/$1/ [R=301,L,QSA]
Нашел такое решение. Проверьте пожалуйста, правильно я сделал?
Если работает, то правильно)
ОтветитьПодскажите пожалуйста как правильно настроить в этом случае редирект.
ОтветитьЕсть страница (подобных много)
http://holod-remont64.ru/xolodilnik-shumit-stuchit?dem_action=view&dem_poll_id=2
Я ставлю 301 редирект со страницы с гет параметрами
RewriteCond %{QUERY_STRING} ^dem_action=view&dem_poll_id=2
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$0? [R=301,L]
Редиркт идет на страницу
http://holod-remont64.ru/xolodilnik-shumit-stuchit
Но в тоже время с этой страницы идет редирект
http://holod-remont64.ru/xolodilnik-shumit-stuchit
на
http://holod-remont64.ru/articles/1-remont_holodilnikov_na_domu_samostoyatelno/22-holodilnik_shumit_stuchit.html
Redirect 301 /xolodilnik-shumit-stuchit /articles/1-remont_holodilnikov_na_domu_samostoyatelno/22-holodilnik_shumit_stuchit.html
как измежать двойного редиректа?
Спасибо!
Или как поставить редирект со страницы
Ответитьhttp://holod-remont64.ru/xolodilnik-shumit-stuchit?dem_action=view&dem_poll_id=2
на
http://holod-remont64.ru/articles/1-remont_holodilnikov_na_domu_samostoyatelno/22-holodilnik_shumit_stuchit.html
Сделаю вручную каждую. Спасибо!
Может как-то так:
ОтветитьRewriteCond %{REQUEST_URI} ^/xolodilnik-shumit-stuchit$
RewriteCond %{QUERY_STRING} ^dem_action=view&dem_poll_id=2$
RewriteRule ^(.*)$ http://%{HTTP_HOST}/articles/1-remont_holodilnikov_na_domu_samostoyatelno/22-holodilnik_shumit_stuchit.html? [R=301,L]
Отлично! Спасибо! Работает. Добавил ваш сайт в закладки)
ОтветитьСпасибо, приятно)
ОтветитьДобрый день! Вынужден еще раз к вам обратиться за помощью. Подскажите пожалуйста как сделать 301 редирект со страницы со слешем на страницу без слеша? Так чтобы это была только одна страница?
Ответитьhttp://mysite/otzyvy/ на http://mysite/otzyvy
Спасибо!
Здравствуйте, может так:
ОтветитьRedirect 301 /page-1/ /page-1
Так не получается, пробовал
ОтветитьТак вроде работает:
ОтветитьRewriteCond %{REQUEST_URI} ^/page-2/$
RewriteRule ^(.*)$ http://%{HTTP_HOST}/page-2 [R=301,L]
Приветствую Вас!
ОтветитьТакой вопрос: На одном и том же сайте, сделать 301 редирект с одной страницы на другую, вариант - Redirect 301 /page-1/ http://mysite.com/new-page-1/ прописать в файле .htaccess. Хорошо, все понятно. Но может вы сможете ответить на такой вопрос: А если страниц не одна, а их 65 страниц, то подобные варианты Redirect 301 /page-1/ http://mysite.com/new-page-1/ необходимо прописать 65 штук, то есть на каждую отдельно. Допустим, прописали, позже их можно удалять очистив файл .htaccess? Или же при удалении редирект перестанет работать, а ссылки будут выводить на страницу ошибки 404? И вообще можно ли в файле .htaccess прописывать большое количество редиректов страниц одновременно? Нигде не нашел ответы на подобные вопросы ) Такое впечатление, что все кто пишет на подобные темы сам не знает, о чем пишет, или же имеет очень слабое представление по самой теме ) Заранее спасибо, если ответите.
Добрый вечер.
ОтветитьИ вообще можно ли в файле .htaccess прописывать большое количество редиректов страниц одновременно?
Любые инструкции файла .htaccess влияют на скорость работы вебсервера. Причем количество - понятие относительное. 65 редиректов вроде и не много, а если у Вас в распоряжении мощный сервер так и вообще мало.
Допустим, прописали, позже их можно удалять очистив файл .htaccess?
По идеи после того как робот обойдет страницы с которых идет редирект, то перезапишет (переиндексирует или еще что-то там сделает) url и больше ссылаться на него не будет, но если у Вас остались ссылки со сторонних площадок, то пользователь при переходе получит 404-ю ошибку вместо редиректа.
А если страниц не одна, а их 65 страниц.
В таком случае есть 2 варианта, попробовать написать регулярное выражение для редиректа (в этом я точно не помогу) или упростить все и сделать редирект через php.
Такое впечатление, что все кто пишет на подобные темы сам не знает, о чем пишет, или же имеет очень слабое представление по самой теме.
Я знаю что ничего не знаю (Сократ). Но это не мешает помогать и делится своим опытом и рабочими примерами.
Надеюсь максимально ответил на Ваши вопросы.
P.S. Я понимаю что Вы хотите сделать все максимально правильно, но иногда затраченное время не стоит полученного результата.
"Я знаю что ничего не знаю (Сократ). Но это не мешает помогать и делится своим опытом и рабочими примерами" - Совершено верно. И вы поделились, а следовательно, что-то знаете ) Спасибо за ваши ответы. Лично для меня все прояснилось, в том числе и по другим параметрам, что были упомянуты в вашем ответе. И уверен, что не только для меня, но и для других людей, особенно для новичков, кто только начинает или еще не касался темы редиректа, ваш ответ в комментарии будет полезен, освещая некоторые тонкости сей тематики. Еще раз спасибо.
ОтветитьДобрый день, подскажите пожалуйста, перевел несколько сайтов на https, настроил редирект, но есть некоторые проблемы:
Ответить1. Как сделать чтобы все старые url, автоматически переадресовывались на такие же , только https, сейчас если пройти по старой ссылке на страницу или статью, не важно, переадресуется на главную страницу.
2. есть домен 3 уровня, 11.22.ru, редирект работает корректно до тех пор, пока не ввести https://www.11.22.ru, выдает ошибку об отсутсвии сертификата ssl, но мне нужно настроить так, чтобы с www.11.22.ru просто всегда перенаправлялось на без www. Такие правила работают на доменах 2 уровня, но вот столкнулся с 3 и не знаю как сделать.
Буду очень презнателен если вы мне поможете
Здравствуйте, попробуйте так (проверено):
ОтветитьAddDefaultCharset utf-8
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.(.*)$
RewriteRule ^(.*)$ https://%1/$1 [L,R=301]
RewriteCond %{REQUEST_URI} (.*)
RewriteRule ^(.*)$ https://my.site.com/$1 [L,R=301]
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
#...
И еще, при создании сертификата лучше указывать домен как с www так и без него
Здравствуйте, подскажите пожалуйста, у меня какая-то странная ситуация.
Ответить1. с http на https у меня стоит 302(временный), а должен быть 301(постоянный) (видимо это авто-настройки хоста или еще чего, потому как сам хтассесс пока без редиректов)
2. нет редиректа с главной со слешем на без слеша (и в динамической карте, одна главная почему-то со слешем в конце, а остальные без него. это из плагина all in one seo, и никаких настроек к этому нет)
3. Нет редиректа со страниц с параметрами (когда после адреса стоит знак ?), должен быть 301 редирект
4. с www на без www редирект есть, но опять же он какой-то хостинго-автоматический не в хтассесс
Подскажите пожалуйста, какой вариант лучше использовать, чтобы при переходе на другой хост не надо было дописывать редиректы? если автоматически выставлено скажем 302, а я в хтассес 301 напишу, будут ли глюки? и вообще для моей ситуации, как это дело должно выглядеть? очень надеюсь на Вашу помощь
Здравствуйте, Олег.
ОтветитьЛучше всего управлять редиректами самому, я так понимаю у вашего хостера уже есть какой-то стандартный набор редиректов, лучше его отключить и добить свои.
- если автоматически выставлено скажем 302, а я в хтассес 301 напишу. Скорее всего 302 редирект выставлен на уровне сервера, поэтому до вашего 301-го дела не дойдет.
Пункты 1,2,3. Отключите редиректы хостера и добавьте свои.
Пункт 2. По поводу редиректа с главной со слешем на без слеша или наоборот я решения не знаю
То есть, в моем случае это будет выглядеть примерно так? мне во всем коде нужно позаменять http на https? и где взять редирект со знаком вопроса в урл?
Ответить
Код редиректа пробуйте, а по вопросу про замену http на https и знак вопроса ничего не понял.
Ответитьесли я "редирекчу" на https мне надо менять
ОтветитьRewriteCond %{REQUEST_URI} ^\/$RewriteCond %{HTTP_HOST} ^www\.(.*)$RewriteRule ^(.*)$ http://%1/$1 [L,R=301]
на
RewriteCond %{REQUEST_URI} ^\/$RewriteCond %{HTTPS_HOST} ^www\.(.*)$RewriteRule ^(.*)$ https://%1/$1 [L,R=301]
по знаку вопроса: мне посоветовали эту штуку, будто нужно редиректить к примеру с mysite.ru?(что угодно далее) на mysite.ru
ОтветитьДелайте сначала редирект с http на https, а потом все остальные.
ОтветитьА по поводу mysite.ru?, то я в этом смысла не вижу. Откуда у вас такие урлы могут появиться
ок, с эти вроде все норм. как мне редиректнуть mysite.ru/ на mysite.ru, но при том, чтоб редирект шел с mysite.ru/ без дальнейших символов! то есть страница mysite.ru/1 редиректиться уже не должна. при этом в поиске индексирована страница mysite.ru/ и нужно сохранить выдачу
ОтветитьЗдравствуйте! Подскажите, как правильно сделать редирект с http на https
Сайт на разных админках. Структура такая. test.com и test.com/site
Вот test.com отлично редиректится правилом:
каким образом можно сделать редирект для всех страниц сайта test.com/site ?
Чтобы лучше объяснить ситуацию - сайты находятся в public_html в разных папках. Редиректы для test.com задаются в .htaccess в корне, для test.com/site задаем редиректы в htaccess в папке test.com/siteОтветить
Не работает если в test.com/site добавить такое же правило?
Ответитьда, в таком случае он просто делает редирект со всех страниц test.com/site на главную test.com
ОтветитьМожет это подойдет:
исключаем test из редиректа, а потом в test:
Как-то такОтветить
Попробовала добавить исключение, пока не вижу, чтобы ошибки выдавало. Спасибо
ОтветитьЗдравствуйте, буду рада любому комментарию. А то уже голова кругом от количества перепробованных вариантов.
Переход происходит неправильно, т.е. при открытии главной страницы сайта, с HTTP происходит редирект на HTTPS, но при переходе на определенную страницу сайта, типа: mydomain.net/page/1 происходит редирект на главную страницу сайта с протоколом HTTPS.Подключила протокол HTTPS, теперь делаю редирект с HTTP на HTTPS, код в htaccess(который хоть какой-то редирект дает, остальные все циклическую переадресацию делают):
Как решить данную проблему?Ответить
Если вы используя пример из стать и получаете бесконечную переадресацию, то проверьте в настройках хостинг редиректы. Т.е. у вас на уровне сервера настроена переадресация на http, ее необходимо отключить. Или после редиректа на https срабатывает другой редирект, на http
ОтветитьДа Вот понимаете, в настройках хостинга у меня нет ни одного редиректа(
ОтветитьПокажите .htaccess
ОтветитьСтранно, у меня все редиректит:
Ищите ошибку или на сервере или в коде, (может редирект в php настроен или 443 порт не так работает)Ответить
Егор, в продолжении нашего договора: на сервере не стоит никакого редирект, что касается 443 порта, если честно, я даже не знаю, где смотреть его настройки и т.д. Но поискав его в файлах сайта - программа ни один файл не нашла.
ОтветитьНо я попробовала вот это провернуть:
Вставить if (empty($_SERVER[''HTTPS'])) {
header("HTTP/1.1 301 Moved Permanently");
header("Location: https://" . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI']);
die;
} в index.php
Результат: ввожу домен и сразу идет переадресация на протокол https(отлично, что и нужно). НО! При нажатии, например, на ссылку меню, переадресация тоже происходит(хоть что-то, раньше такого не было), но уже с циклической ошибкой.
Может подскажите что-нибудь??
Знаете, какой еще момент заметила. Что если я захожу на сайт по протоколу http, то при входе в админку срабатывает протокол https. Может это дает циклическую?
ОтветитьТогда вопрос: есть идеи как это исправить? [смущенный смайл]
К сожалению помочь вам не могу. Если, а вернее когда, найдете решение, буду рад увидеть его в комменте, это может кому-то помочь
ОтветитьПодскажите пожалуйста, что добавить в htaccess для статического сайта что бы при открытии главной страницы она всегда
Ответитьпрописывалась в адресной строке? То есть при первом открытии по адресу сайт.рф он так и открывается, а хотелось бы так –«сайт.рф/недорого» , то есть я создал индексный файл –« недорого. html» прописал DirectoryIndex недорого.html Что нужно добавить что бы так происходило? Думаю так же очень актуальная тема – как убрать расширение для статических сайтов, Сделать как на вашем сайте.
Пробовал несколько вариантов:
------------------------------------------------------------------
1. RewriteCond%{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule ^(.*)$ $1.html
Не работает вообще
------------------------------------------------------------------
2. RewriteBase /
RewriteRule(.*)\.html$ $1 [R=301,L]
В адресной строке расширение убирается но сами файлы не открываются (404)
---------------------------------------------------------------------------------------------------
3. RewriteCond%{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^.*$ $0.html [L,QSA]
RewriteCond %{THE_REQUEST}([^\s]*)\.html(\?[^\s]*)?
RewriteRule (.*) %1 [R=301,L]
Работает, но как то неустойчиво.
-----------------------------------------------------------------------------------
Не могли бы вы подсказать свой вариант для html страничек. Спасибо.
Добрый вечер, это даст возможность открывать файл domain.name/тест.html по адресу domain.name/тест
файл:
domain.name/тест.html
.htaccess:
это будет открывать любой урл как domain.name/тест.html:
Какой смысл делать 301-й редирект с главной на недорого.html не понял.
И зачем убирать html? Присутствие html не влияет ни на что и это не значит что у вас сайт написан не на php)
Наверное вы не поняли смысл использования 301-го редиректаОтветить
Спасибо за оперативный ответ. Смысл в том что клиент по запросу в ПС, например "ремонт квартиры" будет видеть больше информации при такой выдаче - ремонт-химки.рф/качественно-недорого чем просто - ремонт-химки.рф , не сомневаюсь что переименование индексных файлов в нечто осмысленное ,в рекламных целях, пока недооценено, это даст больше переходов по ссылке. Но вот как это реализовать? Пока непонятно. Поскольку при первом появлении индексный файл обычно срыт.
ОтветитьРасширение же .html .php и другоене несёт клиентам ни какой информации, скорее мешает Думаю на вашем сайте нет
расширения по этой же причине. Спасибо за КОД пойду пробовать.
Наконец то!!! Одна проблема решена, всего то 3 дня поиска в сети!
ОтветитьОказывается нужно было просто написать в техподдержку хостинга. Может кому то пригодится. Убрать расширение .html из адреса для статических страничек.
---------------------------------------------------------------------------
RewriteEngine on
RewriteBase /
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^.]+)\.html\ HTTP
RewriteRule ^([^.]+)\.html$ http://xn-----8kcghhf1bcnlfghbtifofi.xn--p1ai/$1 [R=301,L]
RewriteCond %{REQUEST_URI} !(\.[^./]+)$
RewriteCond %{REQUEST_fileNAME} !-d
RewriteCond %{REQUEST_fileNAME} !-f
RewriteRule (.*) /$1.html [L]
---------------------------------------------------
Работает и для кириллицы то же.
Егор спасибо за ваш код. Что то он не пошел у меня. Редко где так оперативно отзываются помочь.
Добрый день.
ОтветитьПомогите пожалуйста разобраться. У меня контент страницы витрины дублирует главную.
Какой редирект применить в таком случае?
Добрый день. Если у вас одна страница доступна по нескольким url, то рекомендуется использовать канонические ссылки, указывающие адрес основной страницы, которая предпочтительнее для индексации.
ОтветитьЗадаются они с помощью тега link с атрибутом rel="canonical" в блоке <head> нужной страницы. Это поможет исключить из выдачи дубликаты страницы и правильно сконцентрировать ссылочный вес.
Пример:
<link rel="canonical" href="канонический URL" />
спасибо за ответ. Если честно я совсем зеленый в этом вопросе, точнее делаю первый раз. И практически не слова не понял) Если можно на примере моего сайта? игрушки-спб.рф и игрушки-спб.рф/витрина/ как прописать код и можно через фаил .htaccess ?
ОтветитьОтличная статья, спасибо!
ОтветитьПодскажите пожалуйста,
Был сайт на Битрикс. Как известно он формирует ссылки в записях без .html но на конце / (слеш)
Сейчас перенесли на другую систему этот проект, т.к битрикс никакой пользы не нес, только грузил лишним.
Данные экспортули в базу с сохранением урл
но теперь на конце ссылки появился .html
Т.е было до переноса: сайт/metod/page/
стало: сайт/metod/page.html
и у второго раздела
было до переноса: сайт/action/page/
стало: сайт/action/page.html
Т.е надо применить редирект только для двух разделов этих, а остальные оставить в том виде, в котором они есть в движке.
Подскажет пожалуйста, как применить одно правило только для двух разделов сайта?
Правьте "url rule" в новом движке под старые правила, редирект нет смысла делать в таком случае
ОтветитьПод новые правила в данном движке не получится, т.к архитектура и логика сделаны так, что простыми манипуляциями в коде этого не сделать.
ОтветитьЕсть ли возможность всеже воспользоваться редиректом?
Можно сделать как описано в пункте "301 редирект с одной страницы на другую". Если ссылки будут ссылаться на основной url и постоянно срабатывать редирект, то смысла мало в таком редиректе. Еще не факт что движок поймет url без html. Проще в коде править, чем воротить редиректы
ОтветитьПо сути редиректы это временнное решение. В течение 2-3 недел сайт переиндексирутся, а в это время люди будут корректно попадать на нужные страницы. При чем всего надо в двух разделах перенаправить.
ОтветитьОдин прогер как то так посоветовал RedirectMatch 301 ^\/(metod|action)\/(.+)\/ /$1/$2.html
Ответитьно почему то не сработало
С одной страницы на другую 2000 адресов, т.е 2000 строк будет, не кошерно совсем. А регуляркой никак не могу придумать как прописать(
ОтветитьВот так попробуйте:
ОтветитьПочему то получается сайт.ru/problems/rasstroystva.html.html.html.html.html.html.html.html.html.html.html.html.html.html.html.html.html.html.html.html
ОтветитьПолный файл такой
ОтветитьДа уж, затуп.
ОтветитьВсем привет.
ОтветитьПодскажите как сделать редирект всего каталога вида:
site.com/catalog/page.html
на
site.com/page.html
Смысл убрать catalog вообще
Спасибо
Спасибо друже!
ОтветитьПора писать статью основанную на комментариях
ОтветитьЗдравствуйте!
Перенаправить на:Подскажите пожалуйста!
Нужно страницу:
Делал так:
но тогда ссылка имеет вид:
Ответить
Т.е. нужно вырезать cmpl=2407?
ОтветитьНет, структура папок другая и GET параметр "cmpl=2407" это страница "predmet-123".
Т.е. к первому варианту добавляется "&min=min".Подобных страниц около тысячи, если нельзя сделать "пакетный" редирект, то можно конечно и в ручную каждый прописать.
Так же есть ссылки вида:
Эту страницу так же нужно редиректить на:
Суть в том, что ссылка редиректится, но GET параметр "cmpl=2407" остается перед UTM меткой.
Ответить
Может проще тогда сделать это через php?
ОтветитьЛучше через "htaccess".
Ответитьphp редиректами не пользовался, а на изучение, к сожаление, совсем нет времени :(
У меня идей нет, когда найдете решение, напишите, может кому-то пригодится
ОтветитьТогда напишите пожалуйста решение на php, может быстрее будет с этим разобраться чем найти решение.
ОтветитьВроде бы нашел решение, проставить редиректы, а далее параметр "cmpl=2407" вырезать с помощью кода:
Но есть одно "но", если в ссылке есть круглые скобки например: utm_term={keyword}то ссылка переводится в "абру-кадабру" и имеет такой вид:
Ответить
Уважаемый Георгий.
ОтветитьВаша проблема не в 301 редиректе, а в урлогенерации и редиректе. Вашу проблему не решить через .htaccess.
Грамотнее запускать пользователей на ваш урл, средствами php определять куда именно его перенаправить, собственно отпределить что cmpl=2470 это товар 123 и все остальные "cmpl" тоже какойто товар. и в последствии сам редирект средствами php:
Здравствуйте!
ОтветитьПодскажите пож, не получается сделать переадресацию 301 со всех страниц сайт на главную "/" того же сайта.
т.е. нужно, чтобы все страницы старые были 301 на главную страницу.
Спасибо!
Добрый день!
Помогите пожалуйста разобраться.
есть страница типа www.site.com/articles.php?n=10141 дубли которой выглядят как www.site.com/articles.php?n=10141dfshghjgj
т.е. добавляются различные символы в url.
никак не получается сделать редирект с дублей на основную. постоянно получается зацикливание. вот пример одной из попыток:
Подскажите пожалуйста в чем ошибка?Ответить
Как настроить редирект при добавлении произвольных чисел в конец?
Ответитьsite.ru/thema/statya/12 на site.ru/thema/statya/
подойдет и 404 ответ. Спасибо за помощь
Зачем делать редирект с несуществующих страниц на существующую, думаю поисковики это не одобрят и страница потеряет свой вес, просто отдавайте 404 ошибку для несуществующих страниц.
Ответить301 редирект нужно делать для перенесенных страниц на другой url.
Как настроить 404 для этих страниц? CMS Wordpress
ОтветитьСпасибо за статью. Можете подсказать? Я удалил много статей с сайта, как разом прописать с них редирект на главную, чтобы не было 404 ошибки?
ОтветитьС точки зрения SEO, делать редирект с 404 на главную это плохая идея
ОтветитьА что посоветуете?
Ответитьнадо сделать редирект нового домена(пустой) на старый (сайт2 на сайт123), на сайт123 есть SSL сертификат и он без www и сайт2 без SSL сертификат и без www
Ответитьполучился сделать редирект следующих вариантов (открывается https://сайт123.ru/)
http://сайт2.ru/
http://www.сайт2.ru/
www.сайт2.ru/
сайт2.ru/
но при вариантов с https выходить сообщения Ваше подключение не защищено итп
https://сайт2.ru/
https://www.сайт2.ru/
прописал в .htaccess след. команды
RewriteEngine On
RewriteCond %{HTTP_HOST} ^сайт2.ru$ [OR,NC]
RewriteCond %{HTTP_HOST} ^www.сайт2.ru$ [NC]
RewriteRule ^(.*)$ https://сайт123.ru/$1 [R=301,L]
RewriteCond %{REQUEST_URI} (.*)
RewriteCond %{HTTPS} =on
RewriteRule ^(.*)$ https://сайт123.ru/$1 [R=301,L]
еще попробал такой вариант
RewriteEngine On
RewriteCond %{HTTP_HOST} ^сайт2.ru$ [OR,NC]
RewriteCond %{HTTP_HOST} ^www.сайт2.ru$ [NC]
RewriteCond %{HTTPS_HOST} ^сайт2.ru$ [OR,NC]
RewriteCond %{HTTPS_HOST} ^www.сайт2.ru$ [NC]
RewriteRule ^(.*)$ https://сайт123.ru/$1 [R=301,L]
Подскажите как сделать правильне что бы при https://сайт2.ru/ или https://www.сайт2.ru/ тоже открывался https://сайт123.ru/
Заранее благодарен
Нужен редирект с http на https, а все поддомены (http://poddomen.site.ru) чтобы оставались на http
ОтветитьДобрый день! Как сделать редирект раздела вместе со всеми внутренними страницами на такой же раздел с такими же страницами, но на другом домене?
Ответитьзакрываю сайт и хочу все его страницы перередиректить на главную другого сайта
Ответитьданная формула не работает
RewriteCond %{REQUEST_URI} (.*)RewriteRule ^(.*)$ http://mysite.com/ [L,R=301]
может есть ещё что нибудь в закромах?
Здравствуйте, хочу со всех страниц у которых есть 301-404 и тд на главную страницу редирект сделать.
ОтветитьДоброго!
ОтветитьПодскажите пожалуйста как прописать редирект со всех определенных категорий.
Есть страницы
1-category/1.html, 1-category/2.html, 1-category/3.html
2-category/1.html, 2-category/2.html, 2-category/3.html
Так соответственно не работает:
RewriteRule ^1-category(.*)$ /index.html [L,R=301]
RewriteRule ^2-category(.*)$ /index.html [L,R=301]
Заранее благодарен.
Пардон. Доперло.
ОтветитьRewriteCond %{REQUEST_URI} ^/1-category [OR]
RewriteCond %{REQUEST_URI} ^/2-category
RewriteRule . /1 [R=301,L]
Всем добра!
ОтветитьТакая задача встала передо мной:
необходимо со всех страниц одного из разделов сделать 301 редирект на другой раздел, т.е.
/старый_раздел/все_страницы_этого_раздела/ /новый_раздел/
Подскажите, как можно прописать такое правило, т.к. в моём разделе оч. много страниц и делать редирект с каждой, это словно ногой сочинение писать...
Добрый день! Подскажите пожалуйста возможно ли через htaccess сделать перенаправление по внутренним страницам сайта со страниц без .html (в конце адреса) на страницы с .html, НО так чтобы перенаправление было действительно только для существующих адресов (с ответом 200), так как если редирект для всех адресов - возникает проблема с 404: сначала происходит перенаправление на .html (к примеру с /nesushestvurl на /nesushestvurl.html) а затем получаем ответ 404. Спасибо!
ОтветитьКак отредиректить site.ru/russian_caike_by_test_1.html на site.ru/russian-caike-by-test/1.htm и site.ru/old_ukrainian/1.htm на site.ru /new-ukrainian/1.htm то есть сменить директорию и нижнее подчёркивание на дефис?
ОтветитьДоброго временеи суток. Перелопатил множество ресурсов, но так и не нашел: как можно сделать редирект всех урлов содержащих общую часть или расширение на 410.
ОтветитьТо есть, например, https://my-site.com/y_s-hUUiRb9.jp и https://my-site.com/y_s-hiJdD7c.jp имеют общее расширение .jp - все урлы такого типа нужно перенаправить на 410 (gone).
Какое может быть решение? Буду благодарен за любую помощь.
Спасибо за статью.
ОтветитьА подскажите пожалуйста как средиректить все ссылки для первых страниц пагинации типа /catalog/trikotazh?page=1 на /catalog/trikotazh ?
По типу вырезания index.php приведенный в статье или есть еще какие-то хитрости?
Здравствуйте. Делаю 301 редирект с URL: http://staf.com.ua/products-page/elektrogeneratory/generatory-dalgakiran/ на URL https://cmt.com.ua/sistema-ehlektrosnabzheniya/jelektricheskij-generator/, но он проходит на https://cmt.com.ua/sistema-ehlektrosnabzheniya/jelektricheskij-generator/generatory-dalgakiran/. Некоторые URL проходят нормально, а некоторые вот так. Подскажите в чем может быть проблема.
ОтветитьЗдравствуйте!
ОтветитьУ меня такая задачка...
Я убрал всюду на сайте в конце последний слеш таким образом:
RewriteRule ^(.*)/$ /$1 [L,R]
Но когда я пытаюсь передать get запрос, вот такой:
/edit-picture/?p=5354
удаляется последний слеш и получаю такой адрес:
/edit-picture?p=5354
Как сделать, что бы на этой страниц или этом url слеш не удалялся или наоборот, что бы тут добавлялся?
Заранее спасибо!
Привет. Подскажите пожалуйста
ОтветитьМне нужно целый раздел сайта переадресовать постранично на другой домен, то есть отделить часть сайта.
То есть например с
http и https site.com/papka/ (и все что в папке, например site.com/papka/albomi/rap/karandash.html)
на другой сайт по протоколу https, но уже без /papka/
например https://site.ua/ (и все что в папках, например https://site.ua/albomi/rap/karandash.html
делать постранично 700 штук это нереально
доброе утро!
Ответитьподскажите пожалуйста как правильно сделать???
зарегистрировали новый сайт и надо чтобы при запросе новый-сайт.рф был редирект на вообще-другой-новый-сайт.рф/какая-то-страничка7
Здравствуйте, а каксделать редирект например site.com/blabla.php, site.com/blabla2.php. если blabla.phpи blabla2.php любое значение, наглавную. Страниц таковых нет, но код 200 отдается Спасибо
ОтветитьЕсли таких страниц нет, то лучше отдавать код 404. Что-то типа этого:
ОтветитьНе понятен вопрос. Может так:
Но лучше исправить код ответа для несуществующих страниц на 404. Если имеется ввиду, что страницы по адресу есть, но файлов таких нет, то используйте пример выше.
Ответить
Любых страниц
Ответитьsite.com/******.php
А зачем?
ОтветитьПроблема решина
Ответитьконкуренты на бирают кучу таких адресов и получаются дубли главной:
Ответитьhttps://site.ru/?__cf_chl_tk=qamzO68OIN6.zQjMSQHaDTfbvisPq2QqTbMYYDHHA1s-1644571591-0-gaNycGzNB70
Как их всех, кто набирает знак ?и после набор знаков перенаправить на 404?
Очень буду признателен!