У вас есть ошибочная директива RewriteCond
, которая приводит к тому, что ваш front-контроллер (index.php
) вызывается только при доступе к сайту через HTTP (не HTTPS), поэтому попытка запроса страницы по HTTPS естественным образом приведет к в 404.
У вас также есть ваши директивы в неправильном порядке. На первом месте должно быть перенаправление HTTP на HTTPS (и канонический www), однако у вас также отсутствует флаг OR
, поэтому он никогда не перенаправит http://www.example.com
на HTTPS.
Попробуйте вместо этого:
RewriteEngine On
# HTTP to HTTPS and canonical www redirect
RewriteCond %{HTTP:X-Forwarded-Proto} !https [OR]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# Front-controller
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?pag=$1&busca=$2 [NC,QSA]
Однако обратная ссылка $2
всегда будет пустой (вы фиксируете только один шаблон в своем регулярном выражении), поэтому параметр URL busca
всегда будет пустым.
Это также предполагает, что вы находитесь за SSL-прокси.
Очистите кеш браузера перед тестированием.