即使您在自己的网页上使用外部登录表单,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]
答案 0 :(得分: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
,因为无论如何都会追加查询字符串(除非目标中有?
,例如http://mysite.com/$1?p=1
)。
这会将浏览器从forum.mysite.com/redirect/*anything*
重定向到mysite.com/*anything*