Правила .htaccess для перенаправления сканеров в другую папку - PullRequest
0 голосов
/ 28 ноября 2018

У меня есть одностраничное приложение (реагирует, реагирует на маршрутизатор), и я пытаюсь перенаправить поиск и отправить ботов / сканеров в другую папку со статическими снимками приложения.У меня есть настройка .htaccess, которая в основном работает, но в ней отсутствуют некоторые вещи.

  • В настоящее время она правильно перенаправляет с domain.com/something на domain.com/snap/something/
  • Редактировать: теперь это правильноперенаправление domain.com на domain.com/snap/
  • Он не обрабатывает domain.com/non-existing, он должен перенаправить на domain.com/snap/404.html, но в настоящее время перенаправляет на domain.com/snap/non-existing

.htaccess У меня естьis

<IfModule mod_rewrite.c>
Options +FollowSymlinks
RewriteEngine On

RewriteCond %{HTTP_HOST} ^www\.(.+)$  [NC]
RewriteRule ^(.*)$ https://%1/$1 [L,R=301]

# For crawlers show snapshots
RewriteCond %{HTTP_USER_AGENT} googlebot|bingbot|yandex|baiduspider|facebookexternalhit|twitterbot|rogerbot|linkedinbot|embedly|quora\ link\ preview|showyoubot|outbrain|pinterest|slackbot|vkShare|W3C_Validator [NC,OR]
RewriteCond %{QUERY_STRING} _escaped_fragment_
RewriteCond %{REQUEST_URI} !^/(snap) [NC]
# Proxy the request
RewriteRule ^(?!.*?(\.js|\.css|\.xml|\.less|\.png|\.jpg|\.jpeg|\.gif|\.pdf|\.doc|\.txt|\.ico|\.rss|\.zip|\.mp3|\.rar|\.exe|\.wmv|\.doc|\.avi|\.ppt|\.mpg|\.mpeg|\.tif|\.wav|\.mov|\.psd|\.ai|\.xls|\.mp4|\.m4a|\.swf|\.dat|\.dmg|\.iso|\.flv|\.m4v|\.torrent|\.ttf|\.woff))(.*) /snap/$2/ [R=301,L]

# Don't rewrite files or directories
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]

# If the requested pattern is file and file doesn't exist, send 404
RewriteCond %{REQUEST_URI} ^(\/[a-z_\-\s0-9\.]+)+\.[a-zA-Z]{2,4}$
RewriteRule ^ - [L,R=404]

# otherwise use history router
RewriteRule ^ /index.html [L]
</IfModule>

Редактировать: Я переместил часть сканера .htaccess вверх, и теперь он правильно обрабатывает сценарий domain.com -> domain.com/snap/, но я не могу понять, как заставить его обрабатывать несуществующие маршруты.

1 Ответ

0 голосов
/ 28 ноября 2018

Чтобы перенаправить 404 Uris в правильный пункт назначения, вы можете использовать следующее правило.Поместите это прямо под блоком правил перенаправления www to non-www и обязательно очистите кеш браузера перед тестированием:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{HTTP_USER_AGENT} googlebot|bingbot|yandex|baiduspider|facebookexternalhit|twitterbot|rogerbot|linkedinbot|embedly|quora\ link\ preview|showyoubot|outbrain|pinterest|slackbot|vkShare|W3C_Validator [NC,OR]
RewriteCond %{QUERY_STRING} _escaped_fragment_
RewriteCond %{REQUEST_URI} !^/(snap) [NC]
# Proxy the request
RewriteRule ^(?!.*?(\.js|\.css|\.xml|\.less|\.png|\.jpg|\.jpeg|\.gif|\.pdf|\.doc|\.txt|\.ico|\.rss|\.zip|\.mp3|\.rar|\.exe|\.wmv|\.doc|\.avi|\.ppt|\.mpg|\.mpeg|\.tif|\.wav|\.mov|\.psd|\.ai|\.xls|\.mp4|\.m4a|\.swf|\.dat|\.dmg|\.iso|\.flv|\.m4v|\.torrent|\.ttf|\.woff))(.*) /snap/404.html [R=301,L]
...