REQUEST_URI 不匹配 htaccess apache2 时的 RewriteCond

RewriteCond when REQUEST_URI do not match htaccess apache2

我有一个多语言 wordpress 网站,想将给定区域的网站重定向到给定语言,

xyz.de --> xyz.de/de/ 
xyz.co.uk --> xyz.co.uk/en/

直接访问 xyz.de/dexyz.co.uk/en 工作正常。所以在wordpress这边是没有问题的。

现在,我正在尝试更改 xyz.dexyz.co.uk 的 htaccess 文件,以便它们重定向网站。

考虑xyz.co.uk

我想添加一个 RewriteCond,这样只要在 xyz.co.uk 之后没有 /en 尾随,它就会自动添加 /en.

例如 xyz.co.uk/<trailing address> 结果是 xyz.co.uk/en/<trailing address>

到目前为止,我有以下代码,但似乎无法正常工作,

RewriteCond %{REQUEST_URI} !^/en
RewriteRule ^(.*)$ http://xyz.co.uk/en/ [L]

/en 的否定无效!我也试过

RewriteCond %{REQUEST_URI} !/en
RewriteRule ^(.*)$ http://xyz.co.uk/en/ [L]

有人能告诉我哪里错了吗?似乎我在编写 RegEx 时出错了,并建议是否有更好的方法来实现相同的效果,这不会影响跨不同域的 SEO。

使用 THE_REQUEST 变量代替 REQUEST_URI:

RewriteCond %{HTTP_HOST} \.co\.uk$ [NC]
RewriteCond %{THE_REQUEST} !/en/ [NC]
RewriteRule ^ /en%{REQUEST_URI} [L,R=302,NE]
  • 确保将此规则作为您在 .htaccess 中的第一条规则。
  • 测试后将其更改为 R=301