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



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

我的api url是这样的(https://)system.mydomain.com/api-它是一个使用瘦框架的rest api

现在我已经为登录页创建了路由,如(https://)system.mydomain.com/content/seo-name-of-item

这是有效的,但我不想在这种情况下显示"system.mydomain.com"(因此在URI中显示"content"),但我希望它是(https://)mydomain.com/content/seo-name-of-item或/和(https://

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

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

在主机www.example.com和/或example.com主机中使用这样的规则:

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

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

如果出现内部服务器错误(http状态500),则可能需要将END标志替换为旧的L标志。

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

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

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

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

最新更新