有没有办法检测 htaccess 文件中的正则表达式支持?

有没有办法检测 htaccess 文件中的正则表达式支持?

我使用以下重写规则将整个 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>

使用服务器签名将版本信息发送到客户端。

相关内容