将子域 url 重写为 www apache php(使用 slim 框架)

rewrite subdomain url to www apache php (using slim framework)

我在 angular 有一个网站,使用的是 api。现在我想创建自动登陆页面。

我的 api url 是这样制作的 (https://) system.mydomain.com/api - 休息 api 使用 slim 框架

现在我已经为 (https://) system.mydomain.com/content/seo-name-of-item

这样的着陆页创建了路由

这有效,但我不想在这种情况下显示 "system.mydomain.com"(所以在 URI "content" 中),但我希望它是 (https://) mydomain。com/content/seo-name-of-item or/and (https://) www.mydomain.com/content/seo-name-of-item

获得此行为的最佳方法是什么?

最优雅的可能是使用 apaches 代理模块结合重写规则。这使浏览器中的 URL 保持不变,但在内部代理其他独立 http 主机之间的请求。

在hosts中使用这样的规则www.example.com and/or example.com host:

RewriteEngine on
RewriteRule ^/?content/seo-name-of-item https://system.example.com/api [END,P]

语法应该适用于真正的 http 主机配置或 htaccess 样式文件。但一般提示:您应该始终更喜欢将此类规则放在 http 服务器主机配置中,而不是使用 .htaccess 样式文件。众所周知,这些文件容易出错,难以调试,而且它们确实会降低服务器速度。它们仅在您无法控制主机配置(阅读:非常便宜的托管服务提供商)或您的应用程序依赖于编写自己的重写规则(这是一个明显的安全噩梦)的情况下作为最后的选择提供).

如果您收到内部服务器错误(http 状态 500),您可能必须用旧的 L 标志替换 END 标志。

您需要外部可见主机名的可验证 ssl 证书,因此 www.example.com and/or example.com

您也可以决定在内部使用 http,用于内部代理连接,因为 ssl 加密在那里没有真正意义。

哦,显然你需要安装代理模块。

另一种方法是仅使用代理模块。查看 ProxyPass 规则的文档和示例:https://httpd.apache.org/docs/current/mod/mod_proxy.html