【问题标题】:Apache rewrite using RewriteCond/RewriteRuleApache 使用 RewriteCond/RewriteRule 重写
【发布时间】:2012-09-02 13:35:22
【问题描述】:

我有两个测试站点http://foo/abc、http://foo/def。

我正在尝试了解 RewriteCond/RewriteRule 进程以使用 vhost 来模拟别名/目录指令。

可以使用别名/指令块为“abc”、“def”站点提供服务。我试图弄清楚apache是​​否可以使用vhost块做同样的事情,结合RewriteCond/RewriteRule逻辑。

基本上,尝试使用RewriteCond/RewriteRule 的组合来查看是否/如何使用 vhost 来服务特定站点,以限制正在显示的站点。

好像是这样的

RewriteCond %{REQUEST_URI} ^/abc/
RewriteRule ^(.*)$          /var/www/html/abc [B,L,QSA]

可以,但是浏览器会出错。

欢迎指点。

【问题讨论】:

  • 不确定我的问题是否明确。我会尽力解释。基本上,我想使用 vhost(如果可能)来查看 url [http:// foo /abc..],如果 url 有“/abc”,那么我希望 vhost rewritecond/rules 块继续并通过/提供页面。所以 rewritecond 会寻找“/abc”,如果有,rewriterules 会设置正确的 url/文件(类似于别名过程)。如果“abc”不在 url 中,则 vhost/rewrite 逻辑不会对 url 做任何事情。我有很多网址,我想知道是否可以通过这种方式使用 vhost/rewrite。

标签: apache mod-rewrite


【解决方案1】:

我希望我能正确理解您的问题,即您尝试使用 ModRewrite 模拟虚拟主机。

是的,当您的第一个 RewriteCond 检查域时,这是可能的:

RewriteCond %{HTTP_HOST} ^www\.domain1\.com$ [NC]

但请注意,这仅适用于 HTTP/1.1,就像基于主机名而非 IP 的虚拟主机一样。

【讨论】:

    【解决方案2】:

    浏览器很可能会产生错误,因为目录 /var(以及其中的所有内容)不是通过 apache 发布的。

    【讨论】:

      猜你喜欢
      • 2017-04-20
      • 2012-05-03
      • 2012-02-29
      • 1970-01-01
      • 1970-01-01
      • 2012-10-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多