【问题标题】:Is there an alternative to PHP's $_SERVER['HTTP_HOST']); for apache that does not require a full blown programming language (e.g. SSI)是否有替代 PHP 的 $_SERVER['HTTP_HOST']);对于不需要成熟的编程语言(例如 SSI)的 apache
【发布时间】:2023-04-10 01:55:01
【问题描述】:

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

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

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

我想完全消除对 PHP 的需求,但不想用另一个成熟的编译器或解释器代替它。我想避免使用 javascript。我可以生活而无需执行正则表达式来获得二级域名,但仍然喜欢该选项。我是否可以通过比 mod_php 更简单的 apache 模块来执行此操作?

mod_php 没有任何问题,我只是看看能否将我正在开发的这个网站的需求降到最低。

【问题讨论】:

    标签: php apache


    【解决方案1】:

    我会结合 mod_rewrite 和 SSI。使用 mod_rewrite 设置环境变量:

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

    然后在 SSI 中访问该信息:

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

    【讨论】:

    • 我想知道 mod_rewrite 和 mod_ssi 是否比 mod_php 版本更好。我怀疑这个网站是否会获得足够的流量,但它是极简主义的一个很好的练习。
    【解决方案2】:

    我还没有测试过,你也许可以使用 htaccess 并像这样重写:

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

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

    【讨论】:

      【解决方案3】:

      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]
      

      【讨论】:

      • 抱歉,刚刚阅读了关于不使用 JS 的内容。不过,这将是一种可行的方式。留下答案以供考虑。
      猜你喜欢
      • 2011-01-07
      • 2011-02-17
      • 2018-12-04
      • 2018-05-23
      • 2010-10-21
      • 2013-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多