将子域重写到文件夹后避免内容重复

Avoid content duplication after rewriting subdomain to folder

我在我的 .htaccess 中定义了以下规则,这是我前一段时间在另一个线程中找到的(我不记得是哪个线程):

RewriteCond %{HTTP_HOST} ^sub\.domain\.com$
RewriteRule ^((?!sub/).*)$ /sub/ [L]

目标是显示 domain.com/sub 的任何内容,就像它们来自 sub.domain.com 一样。这工作正常。

但是,有一个小警告:sub.domain.comsub.domain.com/sub 都有效。

如何防止 sub.domain.com/sub 被访问?我试图 rewrite/redirect 它到 sub.domain.com 但是,当然,我最终得到了无限循环重定向。

将你的第一条规则放在里面 sub/.htaccess:

RewriteEngine On

# remove /sub/ from URIs
RewriteCond %{THE_REQUEST} \s/+sub/(\S*)\s
RewriteRule . /%1 [L,NE,R=301]

将有问题的规则保留在站点根目录 .htaccess 中。