.htaccess中的正则表达式结合了两个负面条件

时间:2012-02-12 10:52:44

标签: regex .htaccess

有人可以检查我写的这个正则表达式,它做了我想要实现的,但我不确定这是否是正确的方法,如果它不会减慢一切

这就是应该做的事情:

如果URL路径仅比域名长 如果它在开头不包含字符串“/ de”或“/ en” 那么301它只到域名

这就是我写的:

RewriteCond %{HTTP_HOST} !^(www\.)?example\.com$
RewriteCond %{HTTP_HOST} ^(?!.*(/de|/en))
RewriteRule .* http://example.com/ [L,R=301]

......有更好的方法来实现这一目标吗?

谢谢! URS

1 个答案:

答案 0 :(得分:2)

我假设你做了一个“mindfart”,第二个cond应该读%{REQUEST_URI}否则没有意义,因为HTTP_HOST永远不会包含/

在运行时它几乎没有什么区别,但如果写成

则更容易理解
RewriteCond %{REQUEST_URI} !(/de|/en)