2014-10-31 29 views
1

我试图做的是如下:htaccess的 - 传递请求URI作为参数

  1. 重定向用户使用htaccess的另一个地址。
  2. 传递给定的URL作为参数传递给新的URL

因此,当用户浏览http://domainA.com/ 任何网页,他应该被重定向到:http://domainB.com/?referer=http://domainA.com/

我一直没有提交,是在重定向之前检索用户来自的完整URL。提前

RewriteRule ^(.*)$ http://domainB.com/?referer=%{HTTP_HOST}%{REQUEST_URI} 

感谢:

一个我试图和东西惨败!

编辑: 我试图让我的问题简单,更复杂的问题往往得不到解答, 所以我会激化我的问题,虽然有一个很好的答案,原来

所以要更具体地说明我想实现的目标: 这两个域都托管在同一主机上,并指向完全相同的文件。 所以domainA.com/file1.htmldomainB.com/file1.html将显示相同的文件。

我希望domainA做的是将所有请求传递到名为listener.php的文件。 所以,要DOMAINA所有请求应该像这样:

  1. 用户进入幕后http://domainA.com/file1.html
  2. 服务器的请求居然是:/listener.php?actualRequest= http://domainA.com/file1.html

我想这个功能在服务器端,这样的网址将保持正常。

我去了2个域名,因为我想避免重定向循环。

回答

0

您可以使用此规则:

RewriteCond %{HTTPS}s on(s)| 
RewriteCond %{HTTP_HOST} ^(?:www\.)?domainA\.com$ [NC] 
RewriteRule^http://domainB.com/?referer=http%1://%{HTTP_HOST}%{REQUEST_URI} [L,NE,R=302] 

这同时处理http://https://网址。


编辑:按照编辑的问题,你可以使用:

RewriteCond %{HTTPS}s on(s)| 
RewriteCond %{HTTP_HOST} ^(?:www\.)?domainA\.com$ [NC] 
RewriteRule !^listener\.php$ /listener.php?actualRequest=http%1://%{HTTP_HOST}%{REQUEST_URI} [L,QSA] 
+0

我试图用这个代码,由于某种原因,这是行不通的。你有自己测试过吗? – Radicate 2014-11-01 16:13:45

+0

我不会在我的答案中发布未经测试的代码,当然这是经过测试和工作的代码。对于哪个网址,它不起作用,这个.htaccess位于哪里?有更多规则吗? – anubhava 2014-11-01 20:12:23

+0

我明白了。那么我试图使用它时,domainA是服务器的IP地址(此时没有域名),domainB是我的.com域名。该文件位于根文件夹中,正好位于网站的索引位置。没有其他规则。它纯粹是你的代码。 – Radicate 2014-11-02 07:35:16