Ответ 1
Добро пожаловать в StackOverFlow, попробуйте следующее:
RewriteEngine On
RewriteBase /
RewriteRule ^pdf/([a-z0-9\-_\.]+)$ pdf.php?file=$1 [L,NC,QSA]
RewriteCond %{REQUEST_URI} !^/pdf
RewriteRule ^([a-z0-9\-_\.]+)/?$ index.php?page=$1.html [L,NC,QSA]
L: Флаг [L] заставляет mod_rewrite прекратить обработку набора правил. В большинстве контекстов это означает, что если правило совпадает, дальнейшие правила не будут обработаны. Это соответствует последней команде в Perl или команде break в C. Используйте этот флаг, чтобы указать, что текущее правило следует применять немедленно, не учитывая дальнейшие правила.
QSA:. Когда заменяющий URI содержит строку запроса, поведение RewriteRule по умолчанию заключается в том, чтобы отменить существующую строку запроса и заменить ее вновь созданной. Использование флага [QSA] приводит к объединению строк запроса.
NC: Использование флага [NC] приводит к тому, что RewriteRule будет сопоставляться без учета регистра. То есть, не имеет значения, отображаются ли буквы в верхнем или нижнем регистре в согласованном URI.
Кроме того, я бы рекомендовал использовать тире вместо подчеркивания.