请帮帮我。我想使用 .htaccess 根据请求来源进行重定向,例如:
用户请求:
http://www.domain.com/subfolder/
并应重定向至:
http://www.domain.com/
这很容易实现,但是在主页上有一个链接:
http://www.domain.com/subfolder/
它应该有效正当该请求来自该链接。
换句话说,我的目标是强制所有用户通过主页前 其他 URL,即使他们知道页面 URL(已加书签或其他)并且它是有效的。
是否可以?
答案1
这是可能的,但不能保证 100% 的成功率。最简单的方法是使用 ${HTTP_REFERER} 标头。问题是,用户可以在浏览器中关闭此功能,并且某些机器人不会发送它。这更适合使用会话的应用程序逻辑。
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^http://www\.domain\.com/?$
RewriteCond ${REQUEST_URI} !^/$
RewriteRule ^(.*)$ http://www.domain.com/ [L,R=301]
在第二行中,$ 是重要的部分。只有当 .com 或 .com/ 后面没有任何内容时,它才会匹配。第三行只是根 request_uri 的标准匹配。请注意,这两个条件都有 ! 运算符,这意味着如果 referrer 确实不是匹配http://www.domain.com/
尝试一下然后告诉我。