繁体   English   中英

还有PHP的$ _SERVER ['HTTP_HOST'])的替代方法吗? 适用于不需要完整的编程语言(例如SSI)的Apache

[英]Is there an alternative to PHP's $_SERVER['HTTP_HOST']); for apache that does not require a full blown programming language (e.g. SSI)

我有一个简单的html页面,仅在两个地方使用PHP

<?php preg_replace('/(www\.)?([^.]*)\.(com|info)/', '${2}', $_SERVER['HTTP_HOST']); ?>
<?php echo $_SERVER['HTTP_HOST']); ?>

In页面被加载到多个域中,我只想将主机名显示为其他静态内容中的文本

我想完全消除对PHP的需求,但不想用另一个功能强大的编译器或解释器来代替它。 我想避免使用JavaScript。 我可以不进行正则表达式来获取第二级域名,但是仍然会喜欢该选项。 我可以通过比mod_php更简单的apache模块来执行此操作吗?

mod_php没什么问题,我只是在查看是否可以最大程度地减少我正在研究的该网站的需求。

我将mod_rewrite和SSI结合在一起。 使用mod_rewrite设置环境变量:

RewriteCond %{HTTP_HOST} ^(www\.)?([^.]*)\.(com|info)$
RewriteRule ^ - [L,E=HOST:%2]

然后使用以下命令在SSI中访问该信息:

<!--#echo var="HOST" -->

我没有测试过,您可能可以使用htaccess并进行如下重写:

RewriteRule (.*) $1?httm_host=%{HTTP_HOST} [L]

我不确定%{HTTP_HOST}变量是否可重写,但它可能有效。 您可能需要使用条件来检查? 在网址中。

JavaScript怎么样? 您只需要在网站上进行两个小更改即可轻松完成。 因此,您可以轻松地提供静态HTML文件。 要获取域,您可以使用:

var domain = window.location.hostname;

干杯,

编辑:要使用mod_rewrite:您将必须设置两个相同的HTML文件,每个文件中都包含正确的域。 然后,您可以通过

RewriteCond %{HTTP_HOST} .+\.com
RewriteRule index.html index.com.html [L]

RewriteCond %{HTTP_HOST} .+\.info
RewriteRule index.html index.info.html [L]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM