在.htaccess中设置和使用owne变量
我像这样在.htaccess中设置变量在.htaccess中设置和使用owne变量,.htaccess,variables,mod-rewrite,global-variables,.htaccess,Variables,Mod Rewrite,Global Variables,我像这样在.htaccess中设置变量 SetEnv clubhub_path clubhub-ui 我可以用php访问它 $_SERVER['clubhub_path]; 但我想在重写Cond的.htaccess中使用它 RewriteCond %{REQUEST_URI} ^(?!/%{SERVER:clubhub_path}/media/).+ [NC] 我在某个地方找到了这个(%%{SERVER:clubhu_path})应该可以工作,但它不能。我尝试了{}、%、$的所有组合。没有
SetEnv clubhub_path clubhub-ui
我可以用php访问它
$_SERVER['clubhub_path];
但我想在重写Cond的.htaccess中使用它
RewriteCond %{REQUEST_URI} ^(?!/%{SERVER:clubhub_path}/media/).+ [NC]
我在某个地方找到了这个(%%{SERVER:clubhu_path})应该可以工作,但它不能。我尝试了{}、%、$的所有组合。没有成功
Cheers
SetEnv
设置环境变量,因此它应该可以在%{ENV:clubhub_path}
中使用,但我已经尝试过了,似乎没有效果
但是,由于可以使用RewriteRule
s设置环境变量,因此可以这样编写:
RewriteRule ^ - [E=clubhub_path:clubhub-ui]
此规则匹配每个url,但不会将其重写为任何url。只需设置一个环境变量,该变量将在RewriteCond
s中可用,如:
RewriteCond %{ENV:clubhub_path} ^clubhub-ui$
一旦进入php,它看起来应该完全一样。(在$\u服务器中
superglobal或getenv()
)
更新
但是,您仍然无法使用RewriteCond
右侧的%{ENV:variable}
。我认为,如果您使用的是Apache2.4,并且可以使用
在我的测试环境中,这似乎是你想要的(在“/clubhub ui/media”URL上的负匹配,但apache2.4仍然是相当新的,如果你不是自托管的,你可能无法安装它
也许参数和脚本可以实现您的想法。我想您正在寻找
%{ENV:clubhub_path}
,因为SetEnv
设置了环境变量。不幸的是,这也不起作用……也许我需要在apache配置中启用一些东西?不确定,但因为这个“clubhub_path”是在同一个文件中,你能不能直接将它写入到重写cond中?是的,我可以,但是:1.有很多规则;2.现在我真的很好奇如何实现;)但是我希望像这样使用重写cond%{REQUEST_URI}^(?!/%{ENV:clubhu path}/media/)。+[NC],似乎不起作用。。。
RewriteCond expr "! '%{REQUEST_URI}' -strcmatch '/%{ENV:clubhub_path}/media/*'"