【问题标题】:How can I use mod rewrite to point to a subdirectory given a subdomain?如何使用 mod rewrite 指向给定子域的子目录?
【发布时间】:2011-02-04 06:24:49
【问题描述】:

几个小时前我几乎可以正常工作,但我似乎无法让所有 mod-rewrite 的东西都适合 Zend。

鉴于此目录结构:

/home/branches/branch1/public/index.php
/home/branches/branch2/public/index.php
/home/branches/branch3/public/index.php

我怎样才能像这样访问这些:

branch1.branch.example.com
branch2.branch.example.com
branch3.branch.example.com

不必在每个分支中硬编码?

这是我的起点 (source),(不知何故,我现在什至无法让它工作,但我发誓它今天早上工作,哈!)。

ServerAlias *.branch.example.com
RewriteEngine on
RewriteCond %{HTTP_HOST} .* [NC]
RewriteCond %{HTTP_HOST} ^([^\.]+)\.branch\.example\.com
RewriteCond /home/branches/%1/public
RewriteRule ^(.*) /%1/$1 [L]

(旁注:我实际上正在使用旧的 alpha 版本的 ZF 处理一个庞大的代码库,它使用 /www/errors.php 作为引导程序而不是 /public/index.php,(甚至可能需要一些不同的重写规则比当前版本)但我修改了上面的代码以适应当前的 ZF 设置)

【问题讨论】:

  • 这里的解决方案是mod_rewrite吗?您有权访问 Apache 配置吗?可以用Apache Virtual Hosts吗?
  • @Leigh:Virtual Hosts 听起来不错,但您知道它是否可以处理通配符分支名称吗? (我不是指路由方面。)
  • @Kevin 啊,现在我想起来了,我想我们正在谈论基于任何内容的即时子域创建(即可以在没有的情况下创建 branch4 Apache 重启),而不是静态托管的子域。在这种情况下,重写似乎是更好的选择。
  • 是的!我想分支树干,然后 BAM!无需额外配置!开始写代码! (此外,我可以访问所有内容。这是一个专用的现场主机,没有任何限制,资源丰富)
  • 好的,我们或许能帮上忙。你试过我给出的答案吗?如果您发现问题,请在此处发表评论。

标签: php apache zend-framework mod-rewrite


【解决方案1】:

您是否配置了通配符子域(用于路由目的)?除非你这样做,否则它不会起作用。

我也认为这条线行不通:

RewriteCond /home/branches/%1/public

我认为你的最后一行需要是这样的:

RewriteRule ^(.*)$ /home/branches/%1/public/$1 [L]

【讨论】:

  • Hmm.. 这使它 看起来 应该可以工作,但现在我收到 500 错误,因为它像这样循环:(/test/www/index .html 存在,不知道为什么它跳过它?)从 r->uri = /test/www/test/www/ 重定向从 r->uri = /test/www/ 重定向从 r->uri = /
  • 另外,我实际上只是在我的 htconfig 中这样做:ServerName *.branch.example.com
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多