Есть ли способ определить поддержку регулярных выражений в файле htaccess?

Есть ли способ определить поддержку регулярных выражений в файле htaccess?

Я использую следующее правило перезаписи для передачи всего URL-адреса в PHP-скрипт:

RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^(.*?)$ index.php?rewriteUrl=$1 [QSA,L]

На некоторых серверах мне приходится использовать

RewriteRule ^(.*)$ index.php?rewriteUrl=$1 [QSA,L]

вместо этого ( ?отсутствует).

Есть ли способ заставить сервер обрабатывать это автоматически? В виде fallback/try-catch или чего-то вроде этого?

решение1

Если вы знаете разные номера версий двух серверов, используйтеmod_versionдля этого. Например, если 2.3+ использует ?:

<IfVersion >= 2.3>
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^(.*?)$ index.php?rewriteUrl=$1 [QSA,L]
</IfVersion>

<IfVersion < 2.3>
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^(.*)$ index.php?rewriteUrl=$1 [QSA,L]        
</IfVersion>

ИспользоватьПодпись серверадля отправки клиенту информации о версии.

Связанный контент