Apache 重写规则:如果不是子文件夹 A 且不是子文件夹 B 做某事

Apache Rewrite Rule: If Not Subfolder A and Not Subfolder B do something

我的网站将英语作为默认语言,将德语作为附加语言。 默认的 link 是 example.org 而德语部分是 example.org/de

现在我已经将我的默认语言更改为德语。 德语部分仍在 example.org/de,但英语部分已移至 example.org/en

我想将每个不在子文件夹 /de 或 /en 中的 URL 重定向到我的英文子文件夹。应该是 if (!example.org/en && !example.org/de) { do something }

一些例子:

example.org/mysite --> example.org/en/mysite
example.org/differentsubfolder/index --> example.org/en/differentsubfolder.index
example.org/de/index --> no changes
example.org/en/index --> no changes

我试过的是:

RewriteCond %{REQUEST_URI} !^/en/(.*)$
RewriteCond %{REQUEST_URI} !^/de/(.*)$ 
RewriteRule (.*) https://example.org/en/ [L,R=301]

这似乎适用于大多数页面,但页面加载速度极慢,所以我想我做错了什么。

有人不知道它有什么问题吗?

根据您展示的示例,请您尝试以下操作。 请在测试您的网址之前清除您的浏览器缓存。

RewriteEngine ON
RewriteRule !^(en|de)(.*)/?$ en/ [NC,L]