Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 仅将子域重定向到根目录_Regex_Apache_.htaccess_Mod Rewrite - Fatal编程技术网

Regex 仅将子域重定向到根目录

Regex 仅将子域重定向到根目录,regex,apache,.htaccess,mod-rewrite,Regex,Apache,.htaccess,Mod Rewrite,所以我有一个网站:www.example.com,它在过去会将客户端重定向到www.example.com/subdir 现在我更新了整个站点,子目录不再存在,我希望主域是根目录。问题是许多客户端缓存了包含子域的url,因此我需要一个重定向规则将www.example.com/subdir路由到www.example.com 我试过这个: RewriteRule ^subdir/(.*)$ $1 如果我用最后一个斜杠输入www.example.com/subdir/,则该选项有效 但是,如果我

所以我有一个网站:www.example.com,它在过去会将客户端重定向到www.example.com/subdir

现在我更新了整个站点,子目录不再存在,我希望主域是根目录。问题是许多客户端缓存了包含子域的url,因此我需要一个重定向规则将www.example.com/subdir路由到www.example.com

我试过这个:

RewriteRule ^subdir/(.*)$ $1
如果我用最后一个斜杠输入www.example.com/subdir/,则该选项有效

但是,如果我访问www.example.com/subdir时没有最后一个斜杠,它将无法完成任务


如何使其工作?

将规则更改为:

RewriteRule ^subdir(?:/(.*))?$ /$1 [L,NC,R=301,NE]
在这里使用
R=301
非常重要,这样所有客户端和搜索引擎最终都会移动到新的URL,而不是对相同的内容使用重复的URL(糟糕的SEO)