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

1

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

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

Em alguns servidores, eu tenho que usar

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

em vez disso (o ? está faltando).

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

    
por Blauesocke 30.10.2012 / 18:09

1 resposta

1

Se você souber os diferentes números de versão entre os dois servidores, use mod_version para faça isso. Por exemplo, se 2.3+ usa o ? :

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

Use ServerSignature para que as informações da versão sejam enviadas ao cliente.

    
por 13.04.2013 / 03:48