wangler
@wangler

Как перенаправить запросы в htaccess?

Здравствуйте.
Помогите разобраться как мне перенаправить несуществующие урлы (по маске) на один существующий
например все адреса формата mysite.ru/katalog/* перенаправить на mysite.ru/contacts
Нашел вот такие параметры, но не могу понять что это за !-f и пр. Нужен 301 редирект.
RewriteCond /your/docroot/%{REQUEST_FILENAME} !-f
RewriteRule ^(.+) webserverB.dom/$1 [R=301,L]

CMS Wordpress
  • Вопрос задан
  • 224 просмотра
Пригласить эксперта
Ответы на вопрос 1
shambler81
@shambler81 Куратор тега htaccess
Если тебе нужно перенаправить при условие
если не 404
и
и
то
То тебе не поможет .htaccess в принципе поскольку получить код ответа сервера нужно до перенаправления, из чего следует что при любом урле на сайте прийдется получить код ответа сервера. что в свою очередь сильно повлияет на производительность сайта.
А следовательно это не тот вариант
Самый легкий вариант решения проблемы с условием на 404
это в 404.php написать реврайты уже на php, они и пишутся легче и циклы у них менее странные.
В таком случае редиректы будут работать только если урл не найдет.

Теперь по твоей регулярке
ты наксячил
вопервых последовательность RewriteCond /your/docroot/%{REQUEST_FILENAME} !-f
во вторых собственно сама переменная.

RewriteCond %{REQUEST_URI} ^(.*)/dir1/(.*)$ 
# если строка содержит /dir1/ 
RewriteRule ^(.*)$ %1/dir2/%2 [R=301,L] 
#Перенаправить все урлы с начинающиеся с dir1 на dir2 с сохранением дальнейшей структуры URL
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы