RewriteCond
) нужно, если изменилось только доменное имя, но сайт остался на том же месте и просто стал обслуживать запросы по ещё одному доменному имени, иначе получится порочный круг перенаправлений (на себя будут перенаправлены и запросы к новому имени). Если для старого имени выделить отдельный хост, то перенаправление надо будет настроить только на нём и его можно будет сделать уже безусловным (и будет проще сделать при помощи Redirect
, а не RewriteRule
). Имеется сайт допустим site.ru если перейти на несуществующую страницу например site.ru/ololo01, то автоматически перенаправляет на site.ru/404.
ErrorDocument 404 http://example.com/404.html
ErrorDocument 404 /404.html
добавил в корень public_html пустой файл .htaccess
Пожалуйста, будьте внимательны при редактировании файла .htaccess! При сохранении такого файла в кодировке UTF-8 в нём не должно присутствовать BOM-сигнатуры.
RewriteCond %{HTTP_REFERER} ^https?://apples\.example\.com/index\.html(?:$|\?)
RewriteRule ^$ http://example.com/
# User-Agent большинства роботов содержит токен, заканчивающийся на "bot"
RewriteCond %{HTTP_USER_AGENT} !bot\b [NC]
# Дополнительно перечисляем характерные участки User-Agent, не удовлетворяющих предыдущему условию
# (список можно продолжить...)
RewriteCond %{HTTP_USER_AGENT} !\b(yahoo\.com|baidu\.com)/
## или так
#RewriteCond %{HTTP_USER_AGENT} !\b(Slurp|Baiduspider)\b
RewriteRule ^robots\.txt$ - [R=404]
%{QUERY_STRING}
запросы, заканчивающиеся на одинокий знак вопроса, невозможно отличить от таковых без оного, но можно воспользоваться переменной %{THE_REQUEST}
, содержащей полный запрос (см. httpd.apache.org/docs/2.0/mod/mod_rewrite.html#rew...):RewriteCond %{THE_REQUEST} ^\S+\s+/\?\s
RewriteRule "" http://example.com/? [R=301,L]
http://example.com/
и http://example.com
, то второй адрес браўзером преобразуется в первый и на сервер поступает ничем не отличимый запрос, так что перенаправлять нечего.