
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.