![仅当根目录来自其他站点引用时才重定向到文件夹](https://linux22.com/image/776938/%E4%BB%85%E5%BD%93%E6%A0%B9%E7%9B%AE%E5%BD%95%E6%9D%A5%E8%87%AA%E5%85%B6%E4%BB%96%E7%AB%99%E7%82%B9%E5%BC%95%E7%94%A8%E6%97%B6%E6%89%8D%E9%87%8D%E5%AE%9A%E5%90%91%E5%88%B0%E6%96%87%E4%BB%B6%E5%A4%B9.png)
我有一个从根目录到子文件夹的重定向。如果用户访问,https://example.com
它会重定向到https://example.com/subfolder
。但如果引荐来源是我的网站,我希望它不重定向,这样用户就可以到达根页面。
例如:
- 用户访问
https://example.com
- 它会重定向到
https://example.com/subfolder
- 用户访问
https://example.com/subfolder/file.html
- 这个页面上有一个链接
https://example.com
,他点击了它 - 必须打开
https://example.com
,不能重定向
这是我的.htaccess:
RedirectMatch ^/$ https://example.com/
请给我一个解决问题的建议,我对 .htaccess 规则不太了解。
答案1
这是我的.htaccess:
RedirectMatch ^/$ https://example.com/
这显然不会/subfolder
像您建议的那样重定向。这将创建一个无限的重定向循环。
但是,您无法Referer
使用 mod_alias 检查标头RedirectMatch
。您需要改用 mod_rewrite (或<If>
表达式)。
例如:
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^https://example\.com($|/)
RewriteRule ^$ /subfolder/ [R,L]
请注意,检查空的URL 路径(即^$
)是有意为之。RewriteRule
图案与斜杠前缀不匹配。