当 REQUEST_URI 与 htaccess apache2 不匹配时 RewriteCond
Posted
技术标签:
【中文标题】当 REQUEST_URI 与 htaccess apache2 不匹配时 RewriteCond【英文标题】:RewriteCond when REQUEST_URI do not match htaccess apache2 【发布时间】:2016-10-16 17:51:13 【问题描述】:我有一个多语言 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/$1 [L]
/en
的否定无效!我也试过了
RewriteCond %REQUEST_URI !/en
RewriteRule ^(.*)$ http://xyz.co.uk/en/$1 [L]
谁能告诉我哪里出错了?似乎我在编写 RegEx 时出错了,并建议是否有更好的方法来实现相同的目标,这不会影响跨不同域的 SEO。
【问题讨论】:
【参考方案1】:使用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
。
【讨论】:
以上是关于当 REQUEST_URI 与 htaccess apache2 不匹配时 RewriteCond的主要内容,如果未能解决你的问题,请参考以下文章