По какой-то причине я не могу заставить работать директиву Apache 'if' .
Я открыт для рассмотрения вопроса об использовании директивы Apache [Skip] вместо , если не будет работать.
И/ Или, может быть, есть вообще лучший способ вернуть мои лайки на Facebook?
Справочная информация
Я использую Apache 2.4 и запросы прокси кIIS.
Недавно я добавил перенаправление [R=301]
для всех вызовов, чтобы перейти на https, и потерял все лайки в Facebook.
Моя первоначальная настройка - когда счетчик лайков в Facebook работал (короткая версия):
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
<IfModule mod_proxy.c>
ProxyRequests Off
ProxyPass / http://192.168.1.5:89/
ProxyPassReverse / http://192.168.1.5:89/
RewriteRule ^(.+)$ http://example.com/$1 [P,L]
</IfModule>
</VirtualHost>
На что я изменил - и счет лайков в Facebook снизился до 0.
<VirtualHost *:80>
ServerName example.com:80
ServerName www.example.com:80
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R=301,L]
</VirtualHost>
Очевидно, я хотел бы вернуть мои лайки
Поэтому я пытаюсь предотвратить агент очистки Facebook facebookexternalhit
, чтобы получить 301
перенаправление.
Основываясь на этих примерах с веб-сайта Apache, я разработал этот конфиг, но некоторый синтаксис должен быть неправильным в операторе 'if', потому что он не работает:
<VirtualHost *:80>
ServerName example.com:80
ServerAlias www.example.com:80
<If "req(%{HTTP_USER_AGENT}) != '(facebookexternalhit/[0-9])'">
RewriteEngine On
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R=301,L]
</If>
<IfModule mod_proxy.c>
ProxyRequests Off
ProxyPass / http://192.168.1.5:89/
ProxyPassReverse / http://192.168.1.5:89/
RewriteRule ^(.+)$ http://example.com/$1 [P,L]
</IfModule>
</VirtualHost>
Я не получаю ошибку Apache при перезапуске Apache и обнаружил, что путь перенаправления все еще достигает перенаправления 301 при использовании отладчика Facebook Sharing
Я также пробовал это - и это также не работает:
<VirtualHost *:80>
ServerName example.com:80
ServerAlias www.example.com:80
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} !(facebookexternalhit/[0-9]|Twitterbot|Pinterest|Google.*snippet)
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R=301,L]
<IfModule mod_proxy.c>
ProxyRequests Off
ProxyPass / http://192.168.1.5:89/
ProxyPassReverse / http://192.168.1.5:89/
RewriteRule ^(.+)$ http://example.com/$1 [P,L]
</IfModule>
</VirtualHost>
Я также пытался <If "%{HTTP_USER_AGENT} !~ (facebookexternalhit)">
, но я получаю ошибку AH00526: Синтаксическая ошибка настрока 4 C: /Apache24/conf/httpd.conf: Невозможно проанализировать условие условия: синтаксическая ошибка, неожиданное '(', ожидая T_REGEX или T_REGEX_I