【问题标题】:How to add content HTTP_HOST variable to query string如何将内容 HTTP_HOST 变量添加到查询字符串
【发布时间】:2013-03-11 23:32:54
【问题描述】:

我需要创建一个始终将 http_host 重写为查询字符串的重写规则/条件。

我有多个域,它们都指向同一个 DocumentRoot。 我现在要做的是,将调用的域名(例如)example1.org 添加到查询字符串以供应用程序内部使用。假设应用程序位于 baseapplication.org

开场

example.org

在我的浏览器中运行到文档根目录,htaccess 应该在内部将其重写为:

baseapplication.org?requested_domain=example1.org

我找不到重写规则或条件的组合来运行它。

【问题讨论】:

  • 您可以阅读文档,而不是查找“组合”和“复制粘贴食谱”:httpd.apache.org/docs/current/mod/mod_rewrite.html
  • 我实际上不确定您是否可以在内部重写到不同的主机(不发送 Location 标头)。任何人都可以确认/否认这一点吗?
  • 您要么必须重定向到新域,要么可以让 apache 将多个域映射到同一个文档根(或不同的根)并使用 php 访问正在请求的站点。

标签: php apache .htaccess mod-rewrite webserver


【解决方案1】:

我不是 .HTACCESS 专业人士,但这应该可以解决问题。

<IfModule mod_rewrite.c>
    Options +FollowSymLinks
    RewriteEngine On
</IfModule>

<IfModule mod_rewrite.c>
    RewriteEngine on

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d

    RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>

在你的根目录下,在一个名为 .HTACCESS 的文件和一个 index.php 文件中。 然后在索引文件中你可以访问所有的请求变量。

从这里您可以执行php headers redirect,或包含来自另一个目录的文件。 由你决定。

不是一个解决方案,但应该会有所帮助

【讨论】:

    【解决方案2】:

    来自 Apache 文档:

    说明:

    假设您想通过仅 DNS A 记录将用户名主页提供 www.username.host.domain.com 到同一台机器,并且此机器上没有任何虚拟主机。

    解决办法:

    对于 HTTP/1.0 请求没有解决方案,但是对于包含 Host: HTTP 标头的 HTTP/1.1 请求,我们可以使用以下规则集将 http://www.username.host.com/anypath 内部重写为 /home/username/anypath:

    RewriteEngine on
    RewriteCond   %{HTTP_HOST}                 ^www\.[^.]+\.host\.com$
    RewriteRule   ^(.+)                        %{HTTP_HOST}$1          [C]
    RewriteRule   ^www\.([^.]+)\.host\.com(.*) /home/$1$2
    

    Apache Rewrite Guide 上还有一些其他 HTTP 重写。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-22
      • 1970-01-01
      • 2023-03-25
      • 2019-04-02
      • 1970-01-01
      • 2023-03-12
      • 2015-11-14
      • 1970-01-01
      相关资源
      最近更新 更多