2010-11-08 117 views
0

我需要做的:阿帕奇国防部重写重定向

如果用户去test.com然后服务器必须重定向到main.com/check.php,检查一番,并返回到测试。 COM

的.htaccess:

RewriteCond %{HTTP_HOST} !^main\.com$ [NC] 
RewriteRule ^(.*)$ http://main.com/check.php?url=%{HTTP_HOST}%{REQUEST_URI} [L] 

check.php

header("location: http://" . $_GET['url']); 

但它循环。

任何想法?

+0

它如何知道它是否来自test.com?您从来不会以某种方式 – 2010-11-08 21:13:47

+0

我无法检查主域名的cookie,用户不应该注意任何东西 – swamprunner7 2010-11-08 21:17:01

+1

我不认为mod_rewrite是你正在寻找的东西,你需要重定向到main .com,然后从那里重定向到test.com,或者让用户停留在test.com,并在后台进行此过程,无论是使用php还是使用ajax,或者两者兼而有之。你正在尝试做什么 – 2010-11-08 21:18:40

回答

0

.htaccess不知道脚本已经检查过,所以我添加了referrer。但它是宽松的检查,我认为你应该相信其他机制。如果有危险,推荐人的信念是危险的。

RewriteCond %{HTTP_REFERER} !main\.com [NC, OR] 
RewriteCond %{HTTP_HOST} !^main\.com$ [NC] 
RewriteRule ^(.*)$ http://main.com/check.php?url=%{HTTP_HOST}%{REQUEST_URI} [L] 
+0

不,它循环 – swamprunner7 2010-11-08 21:32:43

1

最佳选择我想你要找的是:使用公共域共享跨多个域的会话。如果是这样,看看这个SO螺纹:Sharing sessions across domains

OK选项如果你不喜欢,你可以把所有的用户的页面作为单独服务,实现Single sign on系统。

顽固选项如果这不是你要找的,你要坚持与mod_rewrite的,我只能建议是试图更RewriteCond s到资格循环。例如,尝试将@RewriteCond %{QUERY_STRING} !*some string* [NC, OR]添加到@ nerkn建议的顶部(并且当然在您的check.php中发送一个查询字符串。)

+0

我看到它,但不能理解如何从第三个域获取会话标识,它真的是我整个星期的头疼 – swamprunner7 2010-11-09 06:43:24

+0

@ swamprunner7,会话标识问题属于它自己的线程(否则说,我不知道我的头顶):)但祝你好运! – Kyle 2010-11-09 07:53:13