¿Existe alguna forma de detectar la compatibilidad con expresiones regulares en un archivo htaccess?

¿Existe alguna forma de detectar la compatibilidad con expresiones regulares en un archivo htaccess?

Utilizo la siguiente regla de reescritura para pasar la URL completa a un script PHP:

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

En algunos servidores, tengo que usar

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

en su lugar ( ?falta el).

¿Hay alguna manera de hacer que el servidor maneje esto automáticamente? ¿En forma de respaldo/intento de captura o algo como esto?

Respuesta1

Si conoce los diferentes números de versión entre los dos servidores, utiliceversión_modpara hacer esto. Por ejemplo, si 2.3+ usa ?:

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

UsarServidorFirmapara que la información de la versión se envíe al cliente.

información relacionada