RewriteCond для строки в ЛЮБОЙ части URL - PullRequest
1 голос
/ 04 февраля 2020

Я пытаюсь написать правило, которое гласит, что URL не должен содержать текст "карта сайта" в ЛЮБОЙ ЧАСТИ переменной REQUEST_URI:

RewriteCond %{HTTP_USER_AGENT} googlebot|Chrome-Lighthouse|google-structured-data-testing-tool|semrushbot|applebot|bingbot|yandex|baiduspider|ahrefsbot|facebookexternalhit|twitterbot|rogerbot|linkedinbot|embedly|quora\ link\ preview|showyoubot|outbrain|pinterest\/0\.|pinterestbot|slackbot|vkShare|W3C_Validator|whatsapp [NC,OR]
RewriteCond %{QUERY_STRING} _escaped_fragment_
RewriteCond %{REQUEST_URI} ^(?!.*?(\.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|\.svg))

RewriteCond %{REQUEST_URI} !sitemap
RewriteRule ^(index\.html|index\.php)?(.*) https://service.prerender.io/%{REQUEST_SCHEME}://%{HTTP_HOST}/$2 [P,L]

Но, похоже, это не работает. Если URL-адрес https://new.mysite.com/sitemap

, он все еще переписывает URL, даже если он должен соответствовать карте сайта. Также необходимо игнорировать правило для таких URL, как: https://new.mysite.com/sitemap/users/1 et c ..

1 Ответ

1 голос
/ 04 февраля 2020

Вы можете заменить REQUEST_URI на переменную THE_REQUEST, так как REQUEST_URI может измениться с другими правилами, такими как фронт-контроллер, который перенаправляет все URI на index.php.

RewriteCond %{HTTP_USER_AGENT} googlebot|Chrome-Lighthouse|google-structured-data-testing-tool|semrushbot|applebot|bingbot|yandex|baiduspider|ahrefsbot|facebookexternalhit|twitterbot|rogerbot|linkedinbot|embedly|quora\ link\ preview|showyoubot|outbrain|pinterest\/0\.|pinterestbot|slackbot|vkShare|W3C_Validator|whatsapp [NC,OR]
RewriteCond %{QUERY_STRING} _escaped_fragment_ [NC]
RewriteCond %{REQUEST_URI} !\.(js|css|xml|less|png|jpe?g|gif|pdf|doc|txt|ico|rss|zip|mp3|rar|exe|wmv|doc|avi|ppt|mpe?g|tif|wav|mov|psd|ai|xls|mp4|m4a|swf|dat|dmg|iso|flv|m4v|torrent|ttf|woff|svg)$ [NC]
RewriteCond %{THE_REQUEST} !/sitemap[/?\s] [NC]
RewriteRule ^(index\.html|index\.php)?(.*) https://service.prerender.io/%{REQUEST_SCHEME}://%{HTTP_HOST}/$2 [P,L]
...