
Я использую следующее правило перезаписи для передачи всего 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>
ИспользоватьПодпись серверадля отправки клиенту информации о версии.