【问题标题】:Apache mod-rewrite redirectApache mod-rewrite 重定向
【发布时间】:2011-05-06 21:32:45
【问题描述】:

我需要做的:

如果用户访问test.com,那么服务器必须重定向到ma​​in.com/check.php,检查一些内容并返回test.com

.htaccess:

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

检查.php

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

但它在循环。

有什么想法吗?

【问题讨论】:

  • 它如何知道它是否来自 test.com?你永远不会让它分辨出不同。
  • 我可以t, its 检查来自主域的 cookie,用户应该不会注意到任何事情
  • 我不认为 mod_rewrite 是你要找的。您需要重定向到 main.com,然后从那里重定向回 test.com。或者只是让用户留在 test.com 并让这个过程在后台进行,使用 php 或 ajax 或两者兼而有之。我可以提供更多关于你到底想要做什么的信息。
  • 用户登录 main.com 域,如果他去另一个我的域(其中很多),我需要从主域检查是否存在任何 cookie 并重定向回来,我不知道如何以另一种方式做到这一点。就像在 tumblr.com 上的情况一样,用户拥有个人域。

标签: php apache .htaccess mod-rewrite redirect


【解决方案1】:

最佳选择我认为您正在寻找的是:使用公共域跨多个域共享会话。如果是这样,请查看此 SO 线程:Sharing sessions across domains

OK 选项如果您不喜欢这样,您可以将所有用户的页面视为单独的服务并实施Single sign on 系统。

固执的选择 如果这不是您想要的并且您想坚持使用 mod_rewrite,我所能建议的就是尝试更多 RewriteConds 来取消循环资格。例如,尝试在@nerkn 的建议顶部添加:RewriteCond %{QUERY_STRING} !*some string* [NC, OR](当然还要在您的 check.php 中发送一个查询字符串。

【讨论】:

  • 我看到了,但是t understand how to get session id from third domain, its 真的是我整个星期都头疼
  • @swamprunner7,会话 ID 问题属于它自己的线程(否则说,我不知道) :) 祝你好运!
【解决方案2】:

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

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]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-18
    • 2023-04-05
    • 1970-01-01
    • 2019-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多