使用 .htaccess 将 root/dir 重定向到 root/new/dir

Redirect root/dir to root/new/dir with .htaccess

我有一个 directadmin 主机和域,我在主机中创建目录,每个目录中有一个 index.html 和 url,如下所示:

example.com/sdeds

后来,我在主机上安装了一个WordPress,并折叠了这样的新目录:

example.com/2018/asdfa

但是我的旧目录在根目录中,非常草率。我想创建新目录并移动它们,但不要错过客户拥有的地址,因为地址是作为二维码提供给客户的。这个问题有解决办法吗?

如果您想将根目录中的所有内容(不包括 /2018/asdfa 目录(包含 WordPress)重定向到新的子目录,那么您可以在 .htaccess 的顶部执行类似以下操作文件:

RewriteEngine On

RewriteRule !^2018/asdfa /newdirectory%{REQUEST_URI} [R=302,L]

UPDATE: What if I have more than one directory to excluding? like: 2018, 2019, 2020

如果它只是您提到的目录,那么最简单的方法是在正则表达式中使用 alternation。例如:

RewriteRule !^20(18|19|20)/asdfa /newdirectory%{REQUEST_URI} [R=302,L]

(18|19|20) 子模式匹配 181920

如果您想匹配任何看起来像 "recent" 年份的东西,那么您可以使用更通用的模式。例如:

RewriteRule !^20[12]\d/asdfa /newdirectory%{REQUEST_URI} [R=302,L]

20[12]\d 匹配字符串(即目录)20102029(含)。 [12] 是匹配 12 的字符 class。而\d是一个shorthand字符class匹配任何数字0-9(与[0-9]相同)。