В качестве первого правила вы используете флаг C для объединения в цепочку, что означает, что второе правило не будет учитываться, если первое не совпадает.Ваш комментарий описывает, что случилось бы без флага C.Я думаю, что вместо этого вам может потребоваться флаг L, если вы хотите избежать применения второго правила, если первое правило соответствует.
Редактировать:
Теперь, когда вы изменилифлаг C для L в вашем первом правиле, есть еще одна проблема.Вы должны убедиться, что переписанный путь не будет повторно обработан вашими директивами RewriteRule каким-либо образом, который изменит его.
В этом случае одним из способов достижения этой цели является обеспечение того, чтобы сама страница былаеще не переписан в index.php:
RewriteCond %{REQUEST_URI} !index.php
RewriteRule ^test/report/([0-9]+)/?$ index.php?page=report&id=$1 [PT,L]
RewriteCond %{REQUEST_URI} !index.php
RewriteRule ^(.*)/?$ index.php?page=$1 [PT,L]
К сожалению, я не знаю, как заставить один и тот же RewriteCond применять ко всем вашим правилам, кроме как повторять его перед каждым.
Редактировать:
Теперь, когда я думаю об этом, да, возможно, есть несколько лучшее решение.Вместо использования директив RewriteCond начните с:
RewriteRule ^index.php - [PT,NC,L]
Теперь все, что начинается с index.php, будет совпадать, ничего не изменится и больше не будет следовать RewriteRules.