apache - 重定向到另一个 URL 后显示上一个 URL
问题描述
我有一个托管在www.emenu.com的零售应用程序。我的客户在他们的服务器上托管的网站上,比如www.fastfood.com、www.freshlime.com等。他们的网站上有一个按钮可以重定向到www.emenu.com。
- www.fastfood.com点击按钮重定向到www.emenu.com
- www.freshlime.com上的按钮单击重定向到www.emenu.com就像这样,
问题是客户端在重定向后不想在地址栏中显示我的应用程序 URL。即,www.fastfood.com将重定向到www.emenu.com,但它应该在 URL 中显示www.fastfood.com 。
我正在使用 laravel 进行开发。遇到了许多涉及 .htaccess 的解决方案,例如
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^(www\.)?emenu\.come$ [NC]
RewriteRule ^ http://www.fastfood.com%{REQUEST_URI} [L,NE,P]
但解决方案不起作用。
解决方案
网站的工作方式是这样的:
用户在浏览器中输入 URL(或单击链接到达那里),比如说
www.example.com/foo/bar
浏览器/操作系统查找 A 或 AAAA DNS 记录
www.example.com
,此 DNS 记录指向 IP 地址浏览器向该 IP 地址发送 HTTP 请求,例如:
GET /foo/bar HTTP/1.1 Host: www.example.com
该 IP 地址的服务器(希望)以一些 HTML 响应
所以你看,如果域www.example.com
已经指向你客户的服务器,它就不能也指向你的服务器。并且浏览器地址栏中的 URL 将始终显示它当前实际加载的 URL,您无法屏蔽它。如果您希望站点的内容出现在客户端的域名上,那么该域的 DNS 记录所指向的服务器实际上需要返回您站点的 HTML。你几乎有两个选择:
将您的网站嵌入到客户页面上的 iframe 中。说
www.example.com/emenu.html
包含:<iframe src="http://www.emenu.com"></iframe>
然后访问者
www.example.com/emenu.html
将看到您网站的内容(嵌入到您客户的网站中)。设置 Web 服务器
www.example.com
以反向代理(部分)您的 URL。在 Apache 中,可以通过以下方式完成:ProxyPass "/emenu" "http://www.emenu.com/" ProxyPassReverse "/emenu" "http://www.emenu.com/"
/emenu
任何对 URL 路径的HTTP 请求www.example.com
都将由该服务器转发到您的服务器,并将响应呈现给访问者,就好像www.example.com
服务器自己生成了它一样。
推荐阅读
- c++ - C++ 结构的多重定义
- javascript - 你能解释一下为什么不需要在 promise 函数中输入值吗?
- python - 在 Python 中更改二维列表时出现奇怪的错误
- node.js - 从单独的第三方节点模块运行 Sequelize 迁移文件?
- flutter - Flutter:如何在聊天消息中制作电报类型气泡
- haskell - Haskell:了解自定义数据类型
- android - OkHttp3 HttpLoggingInterceptor 日志正文没有记录头
- javascript - 计算时差
- python-3.x - 如何在 Python 中的不同列表中添加大量列表项
- ruby-on-rails - rails 验证检查的顺序/优先级