在重定向到另一个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

  • 浏览器/操作系统查找www.example.com的A或AAAA DNS记录,该DNS记录指向IP地址

  • 浏览器向该IP地址发送HTTP请求,如:

    GET /foo/bar HTTP/1.1
    Host: www.example.com
    
  • 服务器在该IP地址(希望)响应一些HTML

所以你看,如果域www.example.com已经指向你的客户端的服务器,它也不能指向你的服务器。浏览器地址栏中的URL总是会显示当前正在加载的URL,你不能屏蔽它。如果您希望站点的内容出现在客户端的域名上,那么该域名的DNS记录所指向的服务器实际上需要返回您站点的HTML。这里有两个选项:

  1. 将您的网站嵌入到客户端页面的iframe中。假设www.example.com/emenu.html包含:

    <iframe src="http://www.emenu.com"></iframe>
    

    然后访问www.example.com/emenu.html的访问者将看到您网站的内容(嵌入到您的客户端网站中)。

  2. www.example.com设置web服务器来反向代理(部分)您的url。在Apache中,可以这样做:

    ProxyPass "/emenu"  "http://www.emenu.com/"
    ProxyPassReverse "/emenu"  "http://www.emenu.com/"
    

    对于URL路径/emenuwww.example.com的任何HTTP请求都将由该服务器转发到您的服务器,并且将响应呈现给访问者,就好像www.example.com服务器自己生成了它一样。

相关内容

  • 没有找到相关文章