Existe uma maneira de detectar suporte a expressões regulares em um arquivo htaccess?

Existe uma maneira de detectar suporte a expressões regulares em um arquivo htaccess?

Eu uso a seguinte regra de reescrita para passar o URL inteiro para um script php:

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

Em alguns servidores, tenho que usar

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

em vez disso ( ?está faltando).

Existe uma maneira de fazer o servidor lidar com isso automaticamente? Na forma de fallback/try-catch ou algo assim?

Responder1

Se você conhece os diferentes números de versão entre os dois servidores, useversão_modpara fazer isso. Por exemplo, se 2.3+ usar ?:

<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>

UsarAssinatura do servidorpara que as informações da versão sejam enviadas ao cliente.

informação relacionada