我使用以下重写规则将整个 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>
使用服务器签名将版本信息发送到客户端。