在 .htaccess 中设置和使用 owne 变量



我在 .htaccess 中像这样设置变量

SetEnv clubhub_path clubhub-ui

我可以在 php 中访问它

$_SERVER['clubhub_path];

但我想在重写 Cond 的 .htaccess 中使用它

RewriteCond %{REQUEST_URI} ^(?!/%{SERVER:clubhub_path}/media/).+ [NC]

我发现这个(%{服务器:clubhub_path})应该可以工作,但它没有。我尝试了所有带有 {}、% $ 的组合。没有成功...

干杯

SetEnv设置环境变量,因此它应该在%{ENV:clubhub_path}中可用,但我已经尝试过并且似乎不起作用。

但是,由于您可以使用RewriteRule设置环境变量,因此您可以像这样编写它:

RewriteRule ^ - [E=clubhub_path:clubhub-ui]

此规则匹配每个 url,但不会将其重写为 anyting 只是设置一个环境变量,该变量将在RewriteCond中可用,例如:

RewriteCond %{ENV:clubhub_path} ^clubhub-ui$

一旦它到达 php,这应该看起来完全相同。(在$_SERVER超全局或getenv()

更新

但是,您仍然无法在RewriteCond的右侧使用%{ENV:variable}。我认为如果您使用的是apache 2.4并且可以使用ap_expr,则执行此操作的唯一方法

RewriteCond expr "! '%{REQUEST_URI}' -strcmatch '/%{ENV:clubhub_path}/media/*'"

在我的测试环境中,这似乎正在做你想要的('/clubhub-ui/media' url 上的负匹配,但 apache2.4 仍然很新,如果你不是自托管的,你可能无法安装它。

也许使用prg参数和脚本重写地图可以实现您的想法。

相关内容

  • 没有找到相关文章

最新更新