1

一点附加信息...

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

他们 wiki中的示例:<input type="hidden" name="redirect" value="./somefile.html" />

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

因此,如果您在页面上使用登录表单,http://mysite.com/frontpagenews.php则论坛重定向 url 最终看起来像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]
4

1 回答 1

0

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规则括号中的 ,因为无论如何都会附加查询字符串(除非您?在目标中有 a ,例如http://mysite.com/$1?p=1)。

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

于 2011-11-08T22:39:05.577 回答