我需要使用 .htaccess 将子域重写为子目录,但将子域保留在 url 中,如下所示:

在浏览器中访问的 url:sub1.domain.com
提供的网址:sub.domain.com/sub1/
我尝试了以下

RewriteCond %{HTTP_HOST} ^subdomain.domain.com
RewriteRule ^(.*)$ http://subdomain.domain.com/subdomain/$1 [L,NC,QSA]

但这会导致无限循环。我知道通过 php 执行此操作会更容易,但是使用 .htaccess 是否有任何解决方案?

最佳答案

您可以在文档根目录中使用此规则:

RewriteCond %{HTTP_HOST} ^subdomain\.domain\.com$ [NC]
RewriteRule ^((?!sub1/).*)$ /sub1/$1 [L,NC]

解释:
  • NC : 忽略大小写
  • L : 最后一条规则
  • RewriteCond %{HTTP_HOST} 行确保规则只对 subdomain
  • 执行
  • (?!sub1/) 是否定前瞻表达式,表示请求的方式不是以 /sub1/
  • 开头
  • RewriteRule ^((?!sub1/).*)$ /sub1/$1 [L,NC] 将当前路径重写为 /sub1/<uri>

  • 引用:
  • Apache mod_rewrite Introduction
  • Apache mod_rewrite Technical Details
  • 10-07 17:44