【问题标题】:How do I redirect from a folder on a subdomain to main domain如何从子域上的文件夹重定向到主域
【发布时间】:2011-11-08 15:15:59
【问题描述】:

一些附加信息...

PHPBB 有一种方法可以在登录后将您重定向到您之前查看的页面,即使您在自己的页面上使用外部登录表单也是如此。但是,他们认为它应该是您自己域中的相对路径。如果您的论坛位于 forum.mydomain.com 之类的子域上,那可不太好...

来自their wiki的例子:<input type="hidden" name="redirect" value="./somefile.html" />

为了解决子域的问题,我想我会添加一个首页重定向的指示,比如<input type="hidden" name="redirect" value="./redirect/frontpagenews.php" />

因此,如果您在页面http://mysite.com/frontpagenews.php 上使用登录表单,则论坛重定向网址最终看起来像forum.mysite.com/redirect/frontpagenews.php(这有效,论坛创建此链接以在登录后返回)。它所需要的只是一个重写规则来检测这一点,因此它实际上会将您发送回http://mysite.com/frontpagenews.php

问题...

如何从forum.mysite.com/redirect/*anything* 转到mysite.com/*anything*

我已经有一段时间了,我认为下面的代码应该可以工作,但它不能。我已将它放在 forum.mysite.com 中 htaccess 文件中的其他论坛重写规则之上,因为如果它是检查的第一条规则,它可能应该没问题。

RewriteCond %{HTTP_HOST} ^forum\.mysite\.com/redirect/(.*)$ [NC]
RewriteRule (.*) http://mysite\.com/$1 [QSA,L,NC]

也尝试了这个作为条件,但没有快乐:

RewriteCond %{REQUEST_URI} /redirect/(.*)$ [NC]

【问题讨论】:

    标签: mod-rewrite redirect login subdomain phpbb3


    【解决方案1】:

    HTTP_HOST 只匹配主机名,而不是路径。路径必须是 RewriteRule 的一部分。假设您正在编辑的 .htaccess 文件位于 forum.mysite.com 根目录中(相当于:forum.mysite.com/.htaccess),它应该如下所示:

    RewriteCond %{HTTP_HOST} ^forum\.mysite\.com$ [NC]
    RewriteRule ^redirect/(.+)$ http://mysite.com/$1 [L,NC,R]
    

    您不需要规则括号中的QSA,因为无论如何都会附加查询字符串(除非您在目标中有?,例如http://mysite.com/$1?p=1)。

    这会将浏览器从forum.mysite.com/redirect/*anything* 重定向到mysite.com/*anything*

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-12-12
      • 2023-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-17
      • 1970-01-01
      相关资源
      最近更新 更多