2014-07-01 3 views
0

Мне нужно условие перезаписи Apache, чтобы переписать ВСЕ URL-адреса, кроме/health_check. Это работает, но перезаписывает/health_check и любой входящий запрос. Может ли кто-нибудь предложить изменения к приведенным ниже правилам?Apache mod rewrite RewriteCond, чтобы исключить ровно один URL-адрес

RewriteCond %{HTTP:X-Forwarded-Proto} !https 
RewriteRule ^(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L] 

ответ

0

другие ответы работали бы хорошо, если бы я не использовал Symfony2, который переписывает все запросы через app.php. В конечном счете, я хотел заставить https для трафика с помощью балансировщика балансировки нагрузки AWS. Однако один маршрут должен оставаться доступным через http, чтобы позволить ELB выполнять «проверку работоспособности». В итоге я только что создал новый файл health_check.html, к которому можно было обращаться напрямую, а не через приложение app.php, и изменил мою конфигурацию apache на следующее:

RewriteCond %{HTTP:X-Forwarded-Proto} !https 
RewriteRule !/health_check.html https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L] 
2

Просто добавьте еще один RewriteCond:

RewriteCond %{REQUEST_URI} !^/health_check$ 
Смежные вопросы