【问题标题】:Conditional htaccess redirect有条件的 htaccess 重定向
【发布时间】:2018-08-28 11:21:22
【问题描述】:

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

换句话说,我希望我的用户只有在使用 example.com/magic 时才能访问主域 (example.com)。 我的 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 之外的任何东西都应该被重定向到子域?
  • 是的,到子域(或者可能到另一个域)。

标签: .htaccess redirect


【解决方案1】:

您可以使用此规则将不是/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 的URL 会像目录一样打开(example.com/magic),对吧?我希望example.com/magic 打开主域example.com 而不是作为目录,可以使用 .htaccess 吗?
  • 我尝试了您更新的答案,但它仍然作为目录打开 example.com/magic 而不是 example.com :(
  • 谢谢@Anubhava,但它不起作用,如果第一条规则成功通过,有没有办法停止?如果可能的话,那种 if else 语句?因为它没有找到断点,因此没有找到子域。 :(
  • 在完全清除浏览器缓存后再次尝试我更新的规则。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多