【问题标题】:Domain handling with a controller使用控制器进行域处理
【发布时间】:2014-01-04 00:46:48
【问题描述】:

我在我的主站点上运行基于 MVC 的应用程序,我有 2 个其他域(例如,www.a.com 和 www.b.com)

我希望能够使用 mainsite.com/a/ 处理 a.com 的所有请求,并且类似地使用 mainsite.com/b/ 处理 b.com 的请求

但是我不希望在浏览器中重定向/更改 url。

我一直在尝试使用 mod_rewrite,但它似乎与我为 mainsite.com 设置的现有 .htaccess 规则发生冲突

this is my existing .htaccess

有人可以建议最好的方法吗?

【问题讨论】:

  • 你尝试过哪些规则?这些规则如何与现有的 .htaccess 冲突?
  • 嗨@OlafDietsche - 我实际上尝试了您在早期答案之一中建议的方式here 但我没有“真正的”文档根目录,它是由php提供的控制器
  • 好的,你说的冲突是什么意思?您是否收到 500 服务器错误或任何其他错误?
  • 据我所知,它是 404。但是根控制器给出了 500 错误
  • 出现500错误时,.htaccess中有错误。 404 可能意味着,规则没有按预期工作。

标签: apache .htaccess mod-rewrite


【解决方案1】:

在现有的 .htaccess 中,我看不到任何重定向域 a.comb.com 的规则。不过,这样做非常简单。

选择合适主机www.a.coma.com的条件

RewriteCond %{HTTP_HOST} ^(?:www\.)?a\.com$

防止死循环

RewriteCond %{REQUEST_URI} !^/a/

然后进行实际的重写

RewriteRule ^ /a%{REQUEST_URI} [L]

只要您不使用R 标志,浏览器中的网址就不应更改。

主机b.com 的规则类似。

更新:

由于您已经有一个非常大的 .htaccess 文件,因此对性能的影响应该不会太大。如果您想确定,没有什么可以替代测量。

如果你想降低性能损失,你有两个选择

  • 将 .htaccess 文件中的指令移动到您的主配置或虚拟配置文件中,有关说明,请参阅 When (not) to use .htaccess files
  • 在前端控制器中使用 PHP 进行一些自定义重写。当然,这取决于您使用的框架或路由机制。

【讨论】:

  • 谢谢这个工作,但这是做我想做的最好的方法吗?性能明智?
  • 是的,我可以访问主配置。用 PHP 重写是否比使用 mod_rewrite 更好?更好的是我只看这里的速度
  • 我从来没有衡量过一个和另一个,所以我无法判断。但由于您已经使用了 PHP 控制器,因此可能只使用一个系统而不是两个系统更便宜。但要真正确定,您必须同时实现两者并进行性能测试。
  • 如果您可以访问主配置,最好将 .htaccess 指令移至主配置。如链接所述,每个请求都会解析 .htaccess,而主配置仅在启动时解析一次。
  • 好吧,老实说,我不知道如何对此进行性能测试。他们有什么方法或工具吗?再次感谢您的所有帮助
猜你喜欢
  • 1970-01-01
  • 2011-10-24
  • 1970-01-01
  • 2013-04-02
  • 2016-03-11
  • 1970-01-01
  • 1970-01-01
  • 2012-11-01
  • 1970-01-01
相关资源
最近更新 更多