【问题标题】:Apache rewrite certain urls to separate part of codebaseApache 重写某些 url 以分隔代码库的一部分
【发布时间】:2010-10-21 10:12:33
【问题描述】:

为了这个例子,基本上我有 2 个独立的代码库,v1 和 v2。我想将 v1 站点的某个区域重定向到 v2,以便我们可以定期将旧代码移植到新代码。

现在,我以前做过这种确切的代码移植,我只是不记得确切的细节以及我们是否做了一些 apache voodoo 来让它工作。这一次我可以让它命中 v2 代码,但随后的请求使用 v1 vhost,因此 v2 请求的图像正在转换为 v1 的路径并且不存在。

所以我希望 domain1.com/foo/bar 被重定向到 v2 代码库,在 v1 vhost(在 /home/domain1 下)我有:

RewriteRule ^/foo/?([0-9a-zA-Z]*)/?(([0-9a-zA-Z/]*))$ /home/domain2/index.php?controller=foo&action=$1&params=$2 [NC,L]

这成功捕获了请求并将其传递给 v2 代码库,但随后 v2 代码库继续使用 v1 虚拟主机。显然我希望它能够访问 v2 代码库并开始使用该虚拟主机,但不使用外部重定向 [R]

重写日志的输出如下:

192.168.1.64 - - [23/Apr/2009:17:04:11 +0100] [domain1.com/sid#813071d0][rid#81783540/initial] (2) init rewrite engine with requested uri /foo
192.168.1.64 - - [23/Apr/2009:17:04:11 +0100] [domain1.com/sid#813071d0][rid#81783540/initial] (3) applying pattern '^/foo/?([0-9a-zA-Z]*)/?(([0-9a-zA-Z/]*))$' to uri '/foo'
192.168.1.64 - - [23/Apr/2009:17:04:11 +0100] [domain1.com/sid#813071d0][rid#81783540/initial] (2) rewrite '/foo' -> '/home/domain2/index.php?controller=foo&action=&params='
192.168.1.64 - - [23/Apr/2009:17:04:11 +0100] [domain1.com/sid#813071d0][rid#81783540/initial] (3) split uri=/home/domain2/index.php?controller=foo&action=&params= -> uri=/home/domain2/index.php, args=controller=foo&action=&params=
192.168.1.64 - - [23/Apr/2009:17:04:11 +0100] [domain1.com/sid#813071d0][rid#81783540/initial] (2) local path result: /home/domain2/index.php
192.168.1.64 - - [23/Apr/2009:17:04:11 +0100] [domain1.com/sid#813071d0][rid#81783540/initial] (1) go-ahead with /home/domain2/index.php [OK]
192.168.1.64 - - [23/Apr/2009:17:04:11 +0100] [domain1.com/sid#813071d0][rid#8175e4b0/initial] (2) init rewrite engine with requested uri /images/layouts/standard/header/header_logo.gif
192.168.1.64 - - [23/Apr/2009:17:04:11 +0100] [domain1.com/sid#813071d0][rid#8175e4b0/initial] (3) applying pattern '^/foo/?([0-9a-zA-Z]*)/?(([0-9a-zA-Z/]*))$' to uri '/images/layouts/standard/header/header_logo.gif'
...
...

谁能帮忙完成最后一步!?

【问题讨论】:

    标签: apache mod-rewrite apache2 rewrite


    【解决方案1】:

    如果您想对另一台服务器进行代理调用,请将 P 添加到标志中。

    【讨论】:

    • 谢谢,但这不能正常工作,我不记得上次使用 P 标志了。
    • 您必须拥有新来源的完整 URL(包括协议),基本上就像使用重定向一样。但是,Web 服务器不会发送重定向,而是自己执行请求,这使其成为反向代理。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-09
    • 2013-02-12
    • 2019-09-06
    • 1970-01-01
    相关资源
    最近更新 更多