htaccess在RewriteCond中使用OR条件

时间:2013-06-27 12:55:06

标签: .htaccess

我正在寻找一个解决方案,我可以在单个RewriteCond语句中定义muliple匹配语句,

如果此字符串中的任何字符串包含在url中,则我想重定向到主页: /it/, /de/, /fr/

我试着这样写:

  1. 这是投掷SERVER ERROR

    RewriteCond ^(/it/ | /de/ | /fr/ )
    RewriteRule 'myhomepageurl'
    
  2. 我也是这样试过的:

    RewriteCond /it/ [OR]
    RewriteCond /de/ [OR]
    RewriteCond /fr/ [OR]
    RewriteRule 'myhomepageurl'
    
  3. 这给了意想不到的结果页面loding无限且管理员被阻止了。所以我最终采用了这种方式:

    RewriteCond /it/
    RewriteRule 'myhomepageurl'
    
    RewriteCond /de/
    RewriteRule 'myhomepageurl'
    
    RewriteCond /fr/
    RewriteRule 'myhomepageurl'
    

    我只是对单一声明可以做到这一点的单一声明感到好奇。

    由于

2 个答案:

答案 0 :(得分:6)

你的第一个例子因为空间而失败;一个更好的正则表达式就像是

RewriteCond ^/(it|de|fr)/
RewriteRule 'myhomepageurl'

无论哪种方式,你都应该阅读When Not To Use Rewrite并使用其中一种更简单的形式,例如

RedirectMatch /(it|de|fr)/ /myhomepageurl

答案 1 :(得分:3)

试试这个:

RewriteCond %{REQUEST_URI} /(en|de|it)/
RewriteRule .* myhomepageurl [R=301,L]