.htaccess 条件访问重定向

.htaccess 条件访问重定向,.htaccess,redirect,.htaccess,Redirect,如果有人直接访问我的域(example.com),他将被重定向到子域(subdomain.example.com),或者可能被重定向到另一个域,但如果有人通过特定URL(example.com/magic)访问它,是否可以使用.htaccess进行条件重定向他被重定向到example.com,即主域 换句话说,我希望我的用户只有在使用example.com/magic时才能访问主域(example.com)。 My htaccess目前正在将主域的所有用户重定向到子域 RewriteEngine

如果有人直接访问我的域(example.com),他将被重定向到子域(subdomain.example.com),或者可能被重定向到另一个域,但如果有人通过特定URL(example.com/magic)访问它,是否可以使用.htaccess进行条件重定向他被重定向到example.com,即主域

换句话说,我希望我的用户只有在使用example.com/magic时才能访问主域(example.com)。 My htaccess目前正在将主域的所有用户重定向到子域

RewriteEngine On
RewriteCond %{HTTP_HOST} ^example\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.example\.com$
RewriteRule ^/?$ "https\:\/\/sub\.example\.com" [R=301, L]

但是,我找不到如何在我的htaccess中设置条件。

您可以使用此规则将不是
/magic
/magic/
的每个URI重定向到子域:

RewriteEngine On

# redirect /magic
RewriteRule ^magic/?$ / [L,NC,R=301]

# redirect anything except /magic
RewriteCond %{HTTP_HOST} ^(www\.)?example\.com$ [NC]
RewriteRule !^(magic/?)?$ https://sub.example.com [R=301,L,NE]

所以任何其他
/magic
都应该重定向到子域?是的,重定向到子域(或者可能重定向到另一个域)。谢谢你的回答,但是带有
/magic
的URL会像目录一样打开(
example.com/magic
),对吗?我想要
example.com/magic
打开主域
example.com
而不是作为目录打开,可以使用.htaccess吗?我尝试了您更新的答案,但它仍然作为目录打开
example.com/magic
,而不是作为
example.com
:(谢谢@Anubhava,但它不起作用,如果第一条规则成功通过,有没有办法停止?如果可能的话,可以使用if-else语句,因为它没有找到断点,因此会转到子域。:(在完全清除浏览器缓存后,再次尝试我更新的规则。)。