2017-02-18 12 views
0

Я хочу, чтобы отключить все пасхальные яйца PHP как это:.htaccess: отключить пасхальные яйца над .htaccess не работает

www.example.com/?=PHPB8B5F2A0-3C92-11d3-A3A9-4C7B08C10000 

Я добавил этот код в .htaccess:

RewriteCond %{QUERY_STRING} PHP[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12} [NC] 
RewriteRule .* - [F] 

это работает для http://www.example.com/?=PHPB8B5F2A0-3C92-11d3-A3A9-4C7B08C10000, но не для https://www.example.com/?=PHPB8B5F2A0-3C92-11d3-A3A9-4C7B08C10000, значит он работает для http://, но не для https://.

я дополнительно добавил это в .htaccess перенаправить все https:// к http://:

RewriteEngine On 
RewriteCond %{HTTPS} on 
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 

Но это все еще не работает. Пасхальное яйцо все еще доступно от https://www.example.com/?=PHPB8B5F2A0-3C92-11d3-A3A9-4C7B08C10000.

Что я делаю неправильно?

P.S .: У меня нет доступа к php.ini, чтобы установить его там.

+0

Вы также не переопределять ини настройки через ваш .htaccess? попробуйте добавить это в .htaccess, если вы не уверены: 'php_value expose_php 0' – Theo

+0

@TheoTonge' php_value expose_php 0' делает 'Внутреннюю ошибку сервера' для всего моего домена. – David

+0

звучит так, как будто вам не разрешено это делать - см. Мой ответ ниже (в противном случае это может быть ограничение на вашем сервере - так как для этого требуется 'AllowOverride All', добавляющее в вашу конфигурацию apache) – Theo

ответ

0

RewriteEngine on должно соответствовать любым правилам.

любые перечисленные условия относятся к следующему правилу. , добавив флаг L в правило, предотвратить его от проверки любых более правил

из документации:

кода [L] флаг вызывает mod_rewrite прекратить обработку набора правил. В большинстве контекстов это означает, что если правило совпадает, дальнейшие правила не будут обработаны. Это соответствует последней команде в Perl или команде break в C. Используйте этот флаг, чтобы указать, что текущее правило следует применять немедленно, не учитывая дальнейшие правила. https://httpd.apache.org/docs/2.4/rewrite/flags.html#flag_l

Так попробуйте это:

RewriteEngine On 
RewriteCond %{QUERY_STRING} PHP[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12} [NC] 
RewriteRule .* - [F,L] 
RewriteCond %{HTTPS} on 
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 
+0

Извиняюсь, я не полностью прочитал/понял вашу проблему - теперь я исправил свой ответ, надеюсь, это решает для вас! – Theo

+0

Спасибо, но, к сожалению, все тот же, не работает. – David