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/de
和 xyz.co.uk/en
工作正常。所以在wordpress这边是没有问题的。
现在,我正在尝试更改 xyz.de
和 xyz.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
。
我有一个多语言 wordpress 网站,想将给定区域的网站重定向到给定语言,
xyz.de --> xyz.de/de/
xyz.co.uk --> xyz.co.uk/en/
直接访问 xyz.de/de
和 xyz.co.uk/en
工作正常。所以在wordpress这边是没有问题的。
现在,我正在尝试更改 xyz.de
和 xyz.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
。